This commit is contained in:
Jeremy Fincher 2004-10-15 17:10:14 +00:00
parent d88d7797be
commit 9f372e60d9

View File

@ -45,14 +45,14 @@ __contributors__ = {}
# Change the stack command to see another person's stack. # Change the stack command to see another person's stack.
# Keep a bankroll in the users registry. # Keep a bankroll in the users registry.
# Allow the "sit" command to have specified a stack size, subtracting it from # Allow the "sit" command to have specified a stack size, subtracting it from
# the bankroll. # the bankroll.
# Write a command to allow Owner users to give a person money. # Write a command to allow Owner users to give a person money.
# Re-expand the commands using forwarder so they can have better help. # Re-expand the commands using forwarder so they can have better help.
# Have tables in each channel be entirely configurable. # Have tables in each channel be entirely persistently configurable.
# Have the bot automatically start the next hand if people are seated. # Have the bot automatically start the next hand if people are seated.
# Improve the "you've bet X already" to say something cooler when X is 0.
# Have a slight pause before sending the "foo, it's your turn to bet" message, # Have a slight pause before sending the "foo, it's your turn to bet" message,
# and if the user replies before then, don't send it. # and if the user replies before then, don't send it.
# ??? Should we allow "to" in a raise command? raise to 100?
### ###
import sets import sets
@ -273,9 +273,16 @@ class Table(object):
def pot(self): def pot(self):
return sum(self.buckets.values()) + sum(self.foldedBuckets) return sum(self.buckets.values()) + sum(self.foldedBuckets)
def possibleBettors(self):
L = []
for player in self.hands:
if player.stack > 0:
L.append(player)
return L
def startBettingRound(self): def startBettingRound(self):
player = self.nextPlayer() player = self.nextPlayer()
if player is None: if player is None or len(self.possibleBettors()) <= 1:
self.nextRound() self.nextRound()
return return
s = 'Betting begins with %s.' % self.waitingOn().nick() s = 'Betting begins with %s.' % self.waitingOn().nick()
@ -321,10 +328,17 @@ class Table(object):
else: else:
player = self.nextPlayer() player = self.nextPlayer()
if player is not None: if player is not None:
self.public('%s, it\'s your turn. The current bet is %s. ' s = '%s, it\'s your turn. ' % player.nick()
'You\'ve bet %s already this round.' % if self.currentBet:
(player.nick(), self.currentBet, s += 'The current bet is %s. ' % self.currentBet
self.currentBets[player])) playerBet = self.currentBets[player]
if playerBet:
s += 'You\'ve already bet %s this round.' % playerBet
else:
s += 'You haven\'t yet bet this round.'
else:
s += 'There have not yet been any bets this round.'
self.public(s)
else: else:
self.nextRound() self.nextRound()
@ -351,7 +365,7 @@ class Table(object):
if bucket: if bucket:
self.foldedBuckets.append(bucket) self.foldedBuckets.append(bucket)
del self.hands[player] del self.hands[player]
self.public('%s folds.' % player.name()) self.public('%s folds.' % player.nick())
self.checkEndOfRound() self.checkEndOfRound()
def check(self, player): def check(self, player):
@ -375,6 +389,10 @@ class Table(object):
def call(self, player): def call(self, player):
if self.checkWrongPlayer(player): if self.checkWrongPlayer(player):
return return
if not self.currentBet:
self.error('There isn\'t any bet to call. '
'Perhaps you should check.')
return
toCall = self.currentBet - self.currentBets[player] toCall = self.currentBet - self.currentBets[player]
bet = self.addCurrentBet(player, min(toCall, player.stack)) bet = self.addCurrentBet(player, min(toCall, player.stack))
self.public('%s calls %s.' % (player.nick(), bet)) self.public('%s calls %s.' % (player.nick(), bet))
@ -383,7 +401,9 @@ class Table(object):
def bet(self, player, amount): def bet(self, player, amount):
if self.checkWrongPlayer(player): if self.checkWrongPlayer(player):
return return
if self.checkNoCurrentBet(): if self.currentBet and amount < self.currentBet:
self.error('The current bet is %s, you must bet at least that.' %
self.currentBet)
return return
if amount > player.stack: if amount > player.stack:
self.error('You only have %s in your stack, you can\'t ' self.error('You only have %s in your stack, you can\'t '