Changeset 10
- Timestamp:
- 02/03/08 11:03:50 (4 years ago)
- Files:
-
- 2 modified
-
holdemtable.py (modified) (10 diffs)
-
tabled.py (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
holdemtable.py
r9 r10 12 12 self.cards = [] 13 13 self.action_history = [] 14 self.status = "need implementing" 14 15 15 16 def nextHand(self): … … 25 26 dat = {"user_id" : self.user_id, 26 27 "id" : self.id, 27 "required_action": self.required_action,28 28 "cards" : self.cards} 29 29 return dat … … 48 48 self.players = players 49 49 self.player_array = players.values() 50 self.player_array.sort( cmp=lambda x,y: x.seat - y.seat) ) 50 self.player_array.sort( cmp=lambda x,y: x.seat - y.seat) 51 print self.player_array 51 52 self.action_on = None 52 53 self.phase = 0 … … 60 61 self.action_on = 0 61 62 #rotate the players 62 self.player_array = self.player_array.append(self.player_array.pop(0))63 self.player_array.append(self.player_array.pop(0)) 63 64 self.phase = 0 64 65 self.pot = 0.0 65 66 self.community_cards = [] 67 print self.player_array 66 68 for p in self.player_array: p.nextHand() 67 69 #deal cards 68 for _ in xrange(2): for p in self.player_array: 69 p.dealCard(self.deck.deal()) 70 for _ in xrange(2): 71 for p in self.player_array: 72 p.dealCard(self.deck.deal()) 70 73 return True 71 74 … … 81 84 return True 82 85 86 def requiredAction( self, player_id): 87 self.action_on and player_id == self.player_array[self.action_on].id 88 83 89 #returns possible actions for a player 84 90 def possibleActions(self, player_id): 85 return {} 91 if player_id != self.player_array[self.action_on].id: return None 92 else: return {} #TODO add stuff here 86 93 87 94 def getState(self): … … 92 99 p_actions = {} 93 100 94 for (n, d) in self.players.items():95 if p.inHand(): p_actions[n] = d.publicData()101 for (n,p) in self.players.items(): 102 if p.inHand(): p_actions[n] = p.publicData() 96 103 state["player_actions"] = p_actions 97 104 … … 102 109 103 110 class holdemtable: 104 max_players = 4111 max_players = 2 105 112 def __init__(self, name): 106 113 self.players={} … … 112 119 113 120 114 def addPlayer(self, data ):121 def addPlayer(self, data, deferred ): 115 122 p_id = data['client_id'] 116 if self.isFull(): return None117 123 self.players[p_id]=player(p_id, data['user_id'], len(self.players)) 118 s tateChanged()119 return p_id120 124 self.addDeferred( p_id, deferred ) 125 self.stateChanged("Player Added") 126 self.checkStart() 121 127 #check to see if the game is full and possibly start it 122 128 def checkStart(self): 123 129 if self.isFull(): 124 self.game_state = holdemround( )130 self.game_state = holdemround(self.players) 125 131 self.game_started = True 126 stateChanged() 132 self.game_state.nextHand() 133 self.stateChanged("Game Starting") 127 134 return True 128 135 return False … … 136 143 root["stat"] = "ok" 137 144 root["type"] = "game_state" 138 root["you"] = self.players[p_id].privateData() 145 you = self.players[p_id].privateData() 146 147 req_action = self.game_started and\ 148 self.game_state.requiredAction(p_id) 149 150 you["reqired_action"] = req_action 151 if req_action: you["possible_actions"] = self.game_state.possibleActions(p_id) 152 153 root["you"] = you 139 154 140 155 table_info = {} … … 151 166 if self.game_started: 152 167 root["game_state"] = self.game_state.getState() 168 return root 153 169 154 170 def addDeferred(self, p_id, deferred): 171 print "Adding player id(%s) to deferred" % p_id 155 172 self.deferred.append((p_id, deferred)) 156 173 157 174 #call this when the state changes to update all the deferred 158 def stateChanged(self): 159 for (p,d) in self.deferred: 160 d.callback(self.genStatus(p)) 175 def stateChanged(self,action): 176 dl = self.deferred[:] 161 177 self.deferred = [] 178 for (p,d) in dl: 179 stat = self.genStatus(p) 180 stat["action"] = action 181 d.callback(stat) 162 182 163 183 -
tabled.py
r9 r10 13 13 from twisted.internet import defer 14 14 15 tables = {"test_table":holdemtable( )}15 tables = {"test_table":holdemtable("test_table")} 16 16 17 17 class PokerTableProtocol(NetstringReceiver): … … 49 49 return 50 50 else: 51 self.id = self.table.addPlayer(decoded)51 self.id = decoded['client_id'] 52 52 d = defer.Deferred() 53 53 d.addCallback(self.sendMessage) 54 self.table.add Deferred(self.id, d)54 self.table.addPlayer(decoded, d) 55 55 else: 56 56 self.transport.write( cjson.encode(protocol.MakeError(102,"Unknown Method")) )
