Changeset 20

Show
Ignore:
Timestamp:
02/04/08 07:15:10 (4 years ago)
Author:
mike
Message:

Added antes and stuff

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • holdemtable.py

    r19 r20  
    2020        self.__action_history = [] 
    2121        self.__has_acted = False 
    22         self.__has_folded =False 
     22        self.__has_folded = False 
     23        self.__action_log = [] 
    2324        self.__status = "need implementing" 
     25        self.__cards_shown = False 
    2426 
    2527    def nextHand(self): 
     
    2729        self.__has_folded = False 
    2830        self.__cards = [] 
     31        self.__cards_shown = False 
    2932        self.__action_history = [] 
    3033 
     
    6164            if not self.__has_acted and not action in ["small_blinds","large_blinds","ante"]: 
    6265                self.__has_acted = True 
    63             if action == "fold": self.__has_folded = True 
     66            if action == "fold" or action == "muck": self.__has_folded = True 
     67            if action == "show": self.__cards_shown = True 
    6468            self.__action_history.append((action,value)) 
    6569 
     
    100104        self.__possible_actions = None #to cache possible actions 
    101105        self.__hand_count = None 
     106        self.__last_bet_raise = None 
    102107 
    103108 
     
    140145        if self.__phase != None: self.__phase += 1 
    141146        else: self.__phase = 0 
    142         print "PHASE: %d" % self.__phase 
     147 
    143148        for p in self.__player_array: p.nextPhase() 
    144         pn = PHASES[self.__phase] 
     149 
     150        if self.hand_over: return False 
     151 
     152        pn = self.phase 
    145153        if pn == "blinds": 
    146154            self.__player_array[0].doAction("small_blinds", 
     
    163171 
    164172 
    165         if self.hand_over: return False 
    166         else: return self.nextAction() 
     173        return self.nextAction() 
    167174     
    168175    #Are there any outstanding bets? 
     
    202209 
    203210        me = self.current_player 
    204         self.__possible_actions = {"fold":(None,None)} 
    205  
    206         max_money = max([p.money_in_phase for p in self.__player_array]) 
    207          
    208         money_in_phase = me.money_in_phase 
    209          
    210         min_bet = self.__blinds[2] 
    211         if PHASES[self.__phase] == "river": min_bet *= 2 
    212  
    213         if max_money == money_in_phase: self.__possible_actions["check"] = (None,None) 
    214  
    215         if max_money > money_in_phase:  
    216             call = min(me.money, max_money-money_in_phase) 
    217             self.__possible_actions["call"] = (call,call) 
    218         bet_raise = min( me.money, min_bet + max_money - money_in_phase ) 
    219         if max_money == 0 and me.money != 0.0: 
    220             self.__possible_actions["bet"] = (bet_raise, me.money) 
    221         #TODO this needs to change to reflect the last bet 
    222         else: self.__possible_actions["raise"] = (bet_raise, me.money) 
     211        if self.phase == "showdown": 
     212            self.__possible_actions = {"muck":(None,None), 
     213                                       "show":(None,None)} 
     214        else: 
     215            self.__possible_actions = {"fold":(None,None)} 
     216 
     217            max_money = max([p.money_in_phase for p in self.__player_array]) 
     218             
     219            money_in_phase = me.money_in_phase 
     220             
     221            min_bet = self.__blinds[2] 
     222            if self.phase == "river": min_bet *= 2 
     223 
     224            if max_money == money_in_phase: self.__possible_actions["check"] = (None,None) 
     225 
     226            if max_money > money_in_phase:  
     227                call = min(me.money, max_money-money_in_phase) 
     228                self.__possible_actions["call"] = (call,call) 
     229            bet_raise = min( me.money, min_bet + max_money - money_in_phase ) 
     230            if max_money == 0 and me.money != 0.0: 
     231                self.__possible_actions["bet"] = (bet_raise, me.money) 
     232            #TODO this needs to change to reflect the last bet 
     233            else: self.__possible_actions["raise"] = (bet_raise, me.money) 
    223234 
    224235        return self.__possible_actions 
     
    227238 
    228239    def __getState(self): 
    229         state = {"phase": PHASES[self.__phase], 
     240        state = {"phase": self.phase, 
    230241                 "action_on": self.current_player.seat, 
    231242                 "pot_before_phase": self.pot, 
     
    265276    hand_over = property( __isHandOver ) 
    266277    possible_actions = property( __getPossibleActions ) 
     278    phase = property( lambda self: PHASES[self.__phase] ) 
    267279 
    268280    #returns the amount of money in pot before current phase