Get mucked cards from Stars flop games. __str__ method for Hand.
This commit is contained in:
		
							parent
							
								
									3c2c328f5a
								
							
						
					
					
						commit
						9d7c370449
					
				|  | @ -26,6 +26,7 @@ import operator | ||||||
| import time,datetime | import time,datetime | ||||||
| from copy import deepcopy | from copy import deepcopy | ||||||
| from Exceptions import * | from Exceptions import * | ||||||
|  | import pprint | ||||||
| import DerivedStats | import DerivedStats | ||||||
| import Card | import Card | ||||||
| 
 | 
 | ||||||
|  | @ -74,6 +75,7 @@ class Hand: | ||||||
|         self.folded = set() |         self.folded = set() | ||||||
|         self.dealt = set()  # 'dealt to' line to be printed |         self.dealt = set()  # 'dealt to' line to be printed | ||||||
|         self.shown = set()  # cards were shown |         self.shown = set()  # cards were shown | ||||||
|  |         self.mucked = set() # cards were mucked at showdown | ||||||
| 
 | 
 | ||||||
| #        self.action = [] | #        self.action = [] | ||||||
|         # Things to do with money |         # Things to do with money | ||||||
|  | @ -83,8 +85,49 @@ class Hand: | ||||||
|         self.rake = None |         self.rake = None | ||||||
| 
 | 
 | ||||||
|     def __str__(self): |     def __str__(self): | ||||||
|  |         vars = ( ("BB", self.bb), | ||||||
|  |                  ("SB", self.sb), | ||||||
|  |                  ("BUTTONPOS", self.buttonpos), | ||||||
|  |                  ("HAND NO.", self.handid), | ||||||
|  |                  ("SITE", self.sitename), | ||||||
|  |                  ("TABLE NAME", self.tablename), | ||||||
|  |                  ("HERO", self.hero), | ||||||
|  |                  ("MAXSEATS", self.maxseats), | ||||||
|  |                  ("LASTBET", self.lastBet), | ||||||
|  |                  ("ACTION STREETS", self.actionStreets), | ||||||
|  |                  ("STREETS", self.streets),    | ||||||
|  |                  ("ALL STREETS", self.allStreets), | ||||||
|  |                  ("COMMUNITY STREETS", self.communityStreets), | ||||||
|  |                  ("HOLE STREETS", self.holeStreets), | ||||||
|  |                  ("COUNTED SEATS", self.counted_seats), | ||||||
|  |                  ("DEALT", self.dealt), | ||||||
|  |                  ("SHOWN", self.shown), | ||||||
|  |                  ("MUCKED", self.mucked), | ||||||
|  |                  ("TOTAL POT", self.totalpot), | ||||||
|  |                  ("TOTAL COLLECTED", self.totalcollected), | ||||||
|  |                  ("RAKE", self.rake), | ||||||
|  |                  ("START TIME", self.starttime), | ||||||
|  |         ) | ||||||
|  |   | ||||||
|  |         structs = ( ("PLAYERS", self.players), | ||||||
|  |                     ("STACKS", self.stacks), | ||||||
|  |                     ("POSTED", self.posted), | ||||||
|  |                     ("POT", self.pot), | ||||||
|  |                     ("SEATING", self.seating), | ||||||
|  |                     ("GAMETYPE", self.gametype), | ||||||
|  |                     ("ACTION", self.actions), | ||||||
|  |                     ("COLLECTEES", self.collectees), | ||||||
|  |                     ("BETS", self.bets), | ||||||
|  |                     ("BOARD", self.board), | ||||||
|  |                     ("DISCARDS", self.discards), | ||||||
|  |                     ("HOLECARDS", self.holecards), | ||||||
|  |         ) | ||||||
|         str = '' |         str = '' | ||||||
|         str = str + "Hand Object for %s at %s" % (self.handid, self.sitename)  |         for (name, var) in vars: | ||||||
|  |             str = str + "\n%s = " % name + pprint.pformat(var) | ||||||
|  | 
 | ||||||
|  |         for (name, struct) in structs: | ||||||
|  |             str = str + "\n%s =\n" % name + pprint.pformat(struct, 4) | ||||||
|         return str |         return str | ||||||
| 
 | 
 | ||||||
|     def insert(self, db): |     def insert(self, db): | ||||||
|  | @ -494,12 +537,13 @@ class HoldemOmahaHand(Hand): | ||||||
|             pass |             pass | ||||||
|                  |                  | ||||||
| 
 | 
 | ||||||
|     def addHoleCards(self, cards, player, shown=False, dealt=False): |     def addHoleCards(self, cards, player, shown, mucked, dealt=False): | ||||||
|         """\ |         """\ | ||||||
| Assigns observed holecards to a player. | Assigns observed holecards to a player. | ||||||
| cards   list of card bigrams e.g. ['2h','Jc'] | cards   list of card bigrams e.g. ['2h','Jc'] | ||||||
| player  (string) name of player | player  (string) name of player | ||||||
| shown   whether they were revealed at showdown | shown   whether they were revealed at showdown | ||||||
|  | mucked  whether they were mucked at showdown | ||||||
| dealt   whether they were seen in a 'dealt to' line | dealt   whether they were seen in a 'dealt to' line | ||||||
| """ | """ | ||||||
|         logging.debug("addHoleCards %s %s" % (cards, player)) |         logging.debug("addHoleCards %s %s" % (cards, player)) | ||||||
|  | @ -516,23 +560,25 @@ dealt   whether they were seen in a 'dealt to' line | ||||||
|             self.dealt.add(player) |             self.dealt.add(player) | ||||||
|         if shown: |         if shown: | ||||||
|             self.shown.add(player) |             self.shown.add(player) | ||||||
|  |         if mucked: | ||||||
|  |             self.mucked.add(player) | ||||||
|         if player in self.holecards['PREFLOP']: |         if player in self.holecards['PREFLOP']: | ||||||
|             self.holecards['PREFLOP'][player].update(cardset) |             self.holecards['PREFLOP'][player].update(cardset) | ||||||
|         else: |         else: | ||||||
|             self.holecards['PREFLOP'][player] = cardset |             self.holecards['PREFLOP'][player] = cardset | ||||||
| 
 | 
 | ||||||
|     def addShownCards(self, cards, player, holeandboard=None): |     def addShownCards(self, cards, player, holeandboard=None, shown=True, mucked=False): | ||||||
|         """\ |         """\ | ||||||
| For when a player shows cards for any reason (for showdown or out of choice). | For when a player shows cards for any reason (for showdown or out of choice). | ||||||
| Card ranks will be uppercased | Card ranks will be uppercased | ||||||
| """ | """ | ||||||
|         logging.debug("addShownCards %s hole=%s all=%s" % (player, cards,  holeandboard)) |         logging.debug("addShownCards %s hole=%s all=%s" % (player, cards,  holeandboard)) | ||||||
|         if cards is not None: |         if cards is not None: | ||||||
|             self.addHoleCards(cards,player,shown=True) |             self.addHoleCards(cards,player,shown, mucked) | ||||||
|         elif holeandboard is not None: |         elif holeandboard is not None: | ||||||
|             holeandboard = set([self.card(c) for c in holeandboard]) |             holeandboard = set([self.card(c) for c in holeandboard]) | ||||||
|             board = set([c for s in self.board.values() for c in s]) |             board = set([c for s in self.board.values() for c in s]) | ||||||
|             self.addHoleCards(holeandboard.difference(board),player,shown=True) |             self.addHoleCards(holeandboard.difference(board),player,shown, mucked) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|     def writeHTMLHand(self, fh=sys.__stdout__): |     def writeHTMLHand(self, fh=sys.__stdout__): | ||||||
|  |  | ||||||
|  | @ -66,7 +66,7 @@ follow :  whether to tail -f the input""" | ||||||
|             self.re_ShowdownAction   = re.compile(r"^%s: shows \[(?P<CARDS>.*)\]" %  player_re, re.MULTILINE) |             self.re_ShowdownAction   = re.compile(r"^%s: shows \[(?P<CARDS>.*)\]" %  player_re, re.MULTILINE) | ||||||
|             self.re_CollectPot       = re.compile(r"Seat (?P<SEAT>[0-9]+): %s (\(button\) |\(small blind\) |\(big blind\) )?(collected|showed \[.*\] and won) \(\$(?P<POT>[.\d]+)\)(, mucked| with.*|)" %  player_re, re.MULTILINE) |             self.re_CollectPot       = re.compile(r"Seat (?P<SEAT>[0-9]+): %s (\(button\) |\(small blind\) |\(big blind\) )?(collected|showed \[.*\] and won) \(\$(?P<POT>[.\d]+)\)(, mucked| with.*|)" %  player_re, re.MULTILINE) | ||||||
|             self.re_sitsOut          = re.compile("^%s sits out" %  player_re, re.MULTILINE) |             self.re_sitsOut          = re.compile("^%s sits out" %  player_re, re.MULTILINE) | ||||||
|             self.re_ShownCards       = re.compile("^Seat (?P<SEAT>[0-9]+): %s \(.*\) showed \[(?P<CARDS>.*)\].*" %  player_re, re.MULTILINE) |             self.re_ShownCards       = re.compile("^Seat (?P<SEAT>[0-9]+): %s \(.*\) (?P<SHOWED>showed|mucked) \[(?P<CARDS>.*)\].*" %  player_re, re.MULTILINE) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|     def readSupportedGames(self): |     def readSupportedGames(self): | ||||||
|  | @ -222,7 +222,7 @@ follow :  whether to tail -f the input""" | ||||||
|             # Also works with Omaha hands. |             # Also works with Omaha hands. | ||||||
|             cards = m.group('NEWCARDS') |             cards = m.group('NEWCARDS') | ||||||
|             cards = set(cards.split(' ')) |             cards = set(cards.split(' ')) | ||||||
|             hand.addHoleCards(cards, m.group('PNAME')) |             hand.addHoleCards(cards, m.group('PNAME'), shown=False, mucked=False) | ||||||
| 
 | 
 | ||||||
|     def readDrawCards(self, hand, street): |     def readDrawCards(self, hand, street): | ||||||
|         logging.debug("readDrawCards") |         logging.debug("readDrawCards") | ||||||
|  | @ -314,9 +314,15 @@ follow :  whether to tail -f the input""" | ||||||
|     def readShownCards(self,hand): |     def readShownCards(self,hand): | ||||||
|         for m in self.re_ShownCards.finditer(hand.handText): |         for m in self.re_ShownCards.finditer(hand.handText): | ||||||
|             if m.group('CARDS') is not None: |             if m.group('CARDS') is not None: | ||||||
|  |                 print "SHOWED", m.group('SHOWED') | ||||||
|                 cards = m.group('CARDS') |                 cards = m.group('CARDS') | ||||||
|                 cards = set(cards.split(' ')) |                 cards = set(cards.split(' ')) | ||||||
|                 hand.addShownCards(cards=cards, player=m.group('PNAME')) | 
 | ||||||
|  |                 (shown, mucked) = (False, False) | ||||||
|  |                 if m.group('SHOWED') == "showed": shown = True | ||||||
|  |                 elif m.group('SHOWED') == "mucked": mucked = True | ||||||
|  | 
 | ||||||
|  |                 hand.addShownCards(cards=cards, player=m.group('PNAME'), shown=shown, mucked=mucked) | ||||||
| 
 | 
 | ||||||
| if __name__ == "__main__": | if __name__ == "__main__": | ||||||
|     parser = OptionParser() |     parser = OptionParser() | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user