Changeset 17
- Timestamp:
- 02/04/08 06:45:26 (11 months ago)
- Files:
-
- 1 modified
-
holdemtable.py (modified) (13 diffs)
Legend:
- Unmodified
- Added
- Removed
-
holdemtable.py
r16 r17 10 10 11 11 class player(object): 12 starting_money = 1000.0 13 14 15 def __init__(self, id, user_id, seat): 12 def __init__(self, id, user_id, seat, starting_money): 16 13 self.__seat = seat 17 14 self.__id = id 18 15 self.__user_id = user_id 19 self.__money = s elf.starting_money16 self.__money = starting_money 20 17 self.__in_hand = True 21 18 self.__cards = [] … … 62 59 else: 63 60 if value != None: self.__money -= value 64 if not self.__has_acted and action != "small_blinds" and action != "large_blinds":61 if not self.__has_acted and not action in ["small_blinds","large_blinds","ante"]: 65 62 self.__has_acted = True 66 63 if action == "fold": self.__has_folded = True … … 85 82 86 83 87 PHASES = ["blinds", "flop", "turn", "river" ]84 PHASES = ["blinds", "flop", "turn", "river", "showdown"] 88 85 class holdemround(object): 89 86 90 87 91 def __init__(self,players, blinds):88 def __init__(self,players,format): 92 89 self.__deck = deck.deck() 93 self.__blinds = blinds 90 self.__blinds = None 91 self.__round_length = format["round_length"] 92 self.__blind_structure = format["blinds"] 94 93 #keep both of these on hand so we can quickly find a player 95 94 self.__players = players … … 100 99 self.__community_cards = None 101 100 self.__possible_actions = None #to cache possible actions 102 self.__hand_count = 0 101 self.__hand_count = None 102 103 103 104 104 #hand over? … … 117 117 self.__phase = None 118 118 self.__community_cards = [] 119 self.__hand_count += 1 119 if self.__hand_count == None: 120 self.__hand_count = 0 121 else: self.__hand_count += 1 122 #Next phase of blinds 123 if self.__hand_count % self.__round_length == 0: 124 #Next blind phase 125 self.__blinds = self.__blind_structure[self.__hand_count/self.__round_length] 120 126 print self.__player_array 121 127 for p in self.__player_array: p.nextHand() … … 137 143 pn = PHASES[self.__phase] 138 144 if pn == "blinds": 139 self.__player_array[0].doAction("small_blinds",self.__blinds[0]) 140 self.__player_array[1].doAction("large_blinds",self.__blinds[1]) 145 self.__player_array[0].doAction("small_blinds", 146 min(self.__player_array[0],self.__blinds[1])) 147 148 self.__player_array[1].doAction("large_blinds", 149 min(self.__player_array[1],self.__blinds[2])) 150 #do antes for the rest 151 for p in self.__player_array[2:]: 152 p.doAction("ante",min(p.money,self.__blinds[0])) 153 141 154 self.__action_on = 1 142 155 elif pn == "flop": … … 194 207 money_in_phase = me.money_in_phase 195 208 196 min_bet = self.__blinds[ 1]209 min_bet = self.__blinds[2] 197 210 if PHASES[self.__phase] == "river": min_bet *= 2 198 211 … … 216 229 "action_on": self.current_player.seat, 217 230 "pot_before_phase": self.pot, 218 "community_cards": self.__community_cards } 231 "community_cards": self.__community_cards, 232 "hand_number": self.__hand_count, 233 "current_blinds": self.__blinds} 219 234 p_actions = {} 220 235 … … 253 268 pot = property( lambda self: sum([ p.money_in_pot for p in self.__player_array] )) 254 269 270 DEFAULT_FORMAT = {"max_players":3, 271 "round_length":8, 272 "starting_money":2000.0. 273 "blinds":[(None,25,50), 274 (None,50,100), 275 (None,100,200), 276 (25,100,200), 277 (25,150,300), 278 (50,200,400), 279 (75,300,600), 280 (100,500,1000), 281 (200,500,1500), 282 (300,1000,2000), 283 (400,1500,3000), 284 (500,2000,4000), 285 (500,3000,6000), 286 (1000,4000,8000), 287 (1000,5000,10000), 288 (2000,5000,15000), 289 (3000,10000,20000), 290 (4000,15000,30000), 291 (5000,20000,40000)]} 255 292 256 293 class holdemtable: 257 def __init__(self, name, max_players = 3, blinds = (5.0,10.0)):258 self.__max_players = max_players294 def __init__(self, name, format = DEFAULT_FORMAT): 295 self.__max_players = format["max_players"] 259 296 self.__players={} 260 297 self.__game_started = False … … 262 299 self.__holdemgame = None 263 300 self.__deferreds = [] 264 self.__ blinds = blinds301 self.__format = format 265 302 self.__cached_response = None 266 303 … … 268 305 def addPlayer(self, data, deferred ): 269 306 p_id = data['client_id'] 270 self.__players[p_id]=player(p_id, data['user_id'], len(self.__players)) 307 self.__players[p_id]=player(p_id, 308 data['user_id'], 309 len(self.__players), 310 self.__format["starting_money"]) 271 311 self.addDeferred( p_id, deferred ) 272 312 self.stateChanged("Player Added") … … 275 315 def checkStart(self): 276 316 if self.isFull(): 277 self.__game_state = holdemround(self.__players,self.__blinds )317 self.__game_state = holdemround(self.__players,self.__blinds,self.__format) 278 318 self.__game_started = True 279 319 self.__game_state.nextHand() … … 295 335 table_info["game_in_progress"] = self.__game_started 296 336 table_info["name"] = self.__name 297 table_info[" blinds"] = self.__blinds337 table_info["format"] = self.__format 298 338 299 339 players = {}
