From 0e84dceb1f1bbb3050b0c886bd528b1f5969789d Mon Sep 17 00:00:00 2001
From: steffen123
Table hands_actions
-Did -separate this into an extra table because it makes SELECTing across -different streets so much easier. Also the space saving will be very -large.
+Did separate this into an extra table because it makes SELECTing across different streets so much easier. Also the space saving will be very large.
Field Name |
-
- Type - |
-
- Comment - |
+ Type |
+ Comment |
|
- id - |
-
- bigint - |
-
-
|
+ id |
+ bigint |
+ |
- hand_player_id - |
-
- bigint - |
-
- references - hands_players.id - |
+ hand_player_id |
+ bigint |
+ references hands_players.id |
- street - |
-
- smallint - |
-
- street - number, 0-3 (preflop, flop, turn, river) for holdem/omaha or 0-4 - for razz/stud --1 for seen showdown - |
+ street |
+ smallint |
+ street number, 0-3 (preflop, flop, turn, river) for holdem/omaha or 0-4 for razz/stud -1 for seen showdown |
- action_no - |
-
- smallint - |
-
- action number, 1-4 - |
+ action_no |
+ smallint |
+ action number, this is counted from zero for each street but across all players (e.g. in a heads up where the SB calls and the BB raises and the SB calls again would have numbers 0 and 1 for blinds, 2 and 4 for call and 3 for bet) |
- action - |
-
- char(5) - |
-
- bet - stands for bring in, complete, bet, double bet, raise and double - raise, since they all - technically - do the same thing. unbet is - used for when an uncalled bet is returned. -Other valid values: blind - call check fold - |
+ action |
+ char(5) |
+ Bet stands for bring in, complete, bet, double bet, raise and double raise, since they all - technically - do the same thing. Unbet is used for when an uncalled bet is returned. +Other valid values: blind call check fold |
- amount - |
-
- int - |
-
- amount put into the middle - for this action - |
+ amount |
+ int |
+ amount put into the middle for this action |
- comment - |
-
- text - |
-
-
|
+ comment |
+ text |
+ |
- comment_ts - |
-
- datetime (in UTC) - |
-
-
|
+ comment_ts |
+ datetime (in UTC) |
+
-
Tournament Tables
Table tourneys
Field name diff --git a/prepare-git.sh b/prepare-git.sh index 08dd0a5f..91b008e9 100755 --- a/prepare-git.sh +++ b/prepare-git.sh @@ -18,4 +18,5 @@ rm regression-test/*.found.txt rm regression-test/*.pyc rm pyfpdb/*.pyc + git-add--interactive diff --git a/pyfpdb/fpdb.py b/pyfpdb/fpdb.py index 50ff4512..cf9b99ae 100755 --- a/pyfpdb/fpdb.py +++ b/pyfpdb/fpdb.py @@ -343,7 +343,7 @@ blabla""") self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) self.window.connect("delete_event", self.delete_event) self.window.connect("destroy", self.destroy) - self.window.set_title("Free Poker DB - version: pre-alpha, git18") + self.window.set_title("Free Poker DB - version: pre-alpha, git19") self.window.set_border_width(1) self.window.set_size_request(950,400) self.window.set_resizable(True) diff --git a/pyfpdb/fpdb_parse_logic.py b/pyfpdb/fpdb_parse_logic.py index 1842d924..c024e7c7 100644 --- a/pyfpdb/fpdb_parse_logic.py +++ b/pyfpdb/fpdb_parse_logic.py @@ -28,7 +28,7 @@ def mainParser(db, cursor, site, category, hand): lineStreets=[] #char, valid values: (predeal, preflop, flop, turn, river) cardValues, cardSuits, boardValues, boardSuits=[],[],[],[] - antes, actionTypes, actionAmounts, seatLines, winnings, rakes=[],[],[],[],[],[] + antes, actionTypes, actionAmounts, actionNos, seatLines, winnings, rakes=[], [],[],[],[],[],[] #part 1: read hand no and check for duplicate siteHandNo=fpdb_simple.parseSiteHandNo(hand[0]) @@ -42,49 +42,36 @@ def mainParser(db, cursor, site, category, hand): raise fpdb_simple.FpdbError("tourneys are only supported on PS right now") siteTourneyNo=fpdb_simple.parseTourneyNo(hand[0]) buyin=fpdb_simple.parseBuyin(hand[0]) - #print "Buyin:", buyin fee=fpdb_simple.parseFee(hand[0]) - #print "Fee:", fee entries=-1 #todo: parse this prizepool=-1 #todo: parse this tourneyStartTime=handStartTime #todo: read tourney start time - #print "gametypeID:",gametypeID fpdb_simple.isAlreadyInDB(cursor, gametypeID, siteHandNo) #part 2: classify lines by type (e.g. cards, action, win, sectionchange) and street fpdb_simple.classifyLines(hand, category, lineTypes, lineStreets) - #for i in range (len(hand)): - # print "i:",i,"lineTypes[i]:",lineTypes[i],"hand[i]:",hand[i] #part 3: read basic player info #3a read player names, startcashes for i in range (len(hand)): #todo: use maxseats+1 here. if (lineTypes[i]=="name"): seatLines.append(hand[i]) - #print "seatLines:",seatLines - #print "hand:",hand names=fpdb_simple.parseNames(seatLines) - #print "names:",names playerIDs = fpdb_simple.recognisePlayerIDs(cursor, names, siteID) startCashes=fpdb_simple.parseCashes(seatLines, site) - fpdb_simple.createArrays(category, len(names), cardValues, cardSuits, antes, winnings, rakes, actionTypes, actionAmounts) + fpdb_simple.createArrays(category, len(names), cardValues, cardSuits, antes, winnings, rakes, actionTypes, actionAmounts, actionNos) - #3b remove people who sitout before cards are dealt (e.g. sitout instead of paying blinds) - #PS doesnt have a nameline for sitouts so for PS this can be skipped. havent tried FTP yet - - #3c read positions + #3b read positions if (category=="holdem" or category=="omahahi" or category=="omahahilo"): positions = fpdb_simple.parsePositions (hand, names) #part 4: take appropriate action for each line based on linetype for i in range(len(hand)): if (lineTypes[i]=="cards"): - #print "hand[i]:",hand[i] fpdb_simple.parseCardLine (site, category, lineStreets[i], hand[i], names, cardValues, cardSuits, boardValues, boardSuits) - #print "cardValues:",cardValues elif (lineTypes[i]=="action"): - fpdb_simple.parseActionLine (hand[i], lineStreets[i], names, actionTypes, actionAmounts, site) + fpdb_simple.parseActionLine (site, hand[i], lineStreets[i], names, actionTypes, actionAmounts, actionNos) elif (lineTypes[i]=="win"): fpdb_simple.parseWinLine (hand[i], site, names, winnings, isTourney) elif (lineTypes[i]=="rake"): @@ -99,7 +86,6 @@ def mainParser(db, cursor, site, category, hand): fpdb_simple.parseAnteLine(hand[i], site, names, antes) else: raise fpdb_simple.FpdbError("unrecognised lineType:"+lineTypes[i]) - #print "end of part4 cardValues:",cardValues,"cardSuits:",cardSuits #part 5: final preparations, then call fpdb_save_to_db.saveHoldem with # the arrays as they are - that file will fill them. @@ -110,7 +96,7 @@ def mainParser(db, cursor, site, category, hand): fpdb_simple.checkPositions(positions) cursor.execute("SELECT limit_type FROM gametypes WHERE id=%s",(gametypeID, )) - limit_type=cursor.fetchone()[0] #todo: remove this unnecessary database access + limit_type=cursor.fetchone()[0] fpdb_simple.convert3B4B(site, category, limit_type, actionTypes, actionAmounts) totalWinnings=0 @@ -119,6 +105,7 @@ def mainParser(db, cursor, site, category, hand): hudImportData=fpdb_simple.calculateHudImport(playerIDs, category, actionTypes, winnings, totalWinnings) if isTourney: + raise fpdb_simple.FpdbError ("tourneys are currently broken") payin_amounts=fpdb_simple.calcPayin(len(names), buyin, fee) ranks=[] for i in range (len(names)): @@ -142,8 +129,9 @@ def mainParser(db, cursor, site, category, hand): if (category=="holdem" or category=="omahahi" or category=="omahahilo"): result = fpdb_save_to_db.ring_holdem_omaha(cursor, category, siteHandNo, gametypeID, handStartTime, names, playerIDs, startCashes, positions, cardValues, - cardSuits, boardValues, boardSuits, winnings, rakes, actionTypes, actionAmounts, hudImportData) + cardSuits, boardValues, boardSuits, winnings, rakes, actionTypes, actionAmounts, actionNos, hudImportData) elif (category=="razz" or category=="studhi" or category=="studhilo"): + raise fpdb_simple.FpdbError ("stud/razz are currently broken") result = fpdb_save_to_db.ring_stud(cursor, category, siteHandNo, gametypeID, handStartTime, names, playerIDs, startCashes, antes, cardValues, cardSuits, winnings, rakes, actionTypes, actionAmounts, hudImportData) diff --git a/pyfpdb/fpdb_save_to_db.py b/pyfpdb/fpdb_save_to_db.py index 1dd656bf..a8040cf3 100644 --- a/pyfpdb/fpdb_save_to_db.py +++ b/pyfpdb/fpdb_save_to_db.py @@ -40,7 +40,7 @@ def ring_stud(cursor, category, site_hand_no, gametype_id, hand_start_time, #stores a holdem/omaha hand into the database def ring_holdem_omaha(cursor, category, site_hand_no, gametype_id, hand_start_time, names, player_ids, start_cashes, positions, card_values, card_suits, - board_values, board_suits, winnings, rakes, action_types, action_amounts, hudImportData): + board_values, board_suits, winnings, rakes, action_types, action_amounts, actionNos, hudImportData): #fill up the two player card arrays if (category=="holdem"): fpdb_simple.fillCardArrays(len(names), 2, card_values, card_suits) @@ -60,7 +60,7 @@ def ring_holdem_omaha(cursor, category, site_hand_no, gametype_id, hand_start_ti fpdb_simple.store_board_cards(cursor, hands_id, board_values, board_suits) - fpdb_simple.storeActions(cursor, hands_players_ids, action_types, action_amounts) + fpdb_simple.storeActions(cursor, hands_players_ids, action_types, action_amounts, actionNos) return site_hand_no #end def ring_holdem_omaha diff --git a/pyfpdb/fpdb_simple.py b/pyfpdb/fpdb_simple.py index 79c4cb3f..49e35853 100644 --- a/pyfpdb/fpdb_simple.py +++ b/pyfpdb/fpdb_simple.py @@ -199,7 +199,7 @@ def convertCardValuesBoard(arr): #end def convertCardValuesBoard #this creates the 2D/3D arrays. manipulates the passed arrays instead of returning. -def createArrays(category, seats, card_values, card_suits, antes, winnings, rakes, action_types, action_amounts): +def createArrays(category, seats, card_values, card_suits, antes, winnings, rakes, action_types, action_amounts, actionNos): for i in range(seats):#create second dimension arrays tmp=[] card_values.append(tmp) @@ -208,19 +208,26 @@ def createArrays(category, seats, card_values, card_suits, antes, winnings, rake antes.append(0) winnings.append(0) rakes.append(0) - - for i in range (8): - #build the first dimension array, for streets - #todo: 0-2 will of course be left empty, get rid of this nicely using consts + + if (category=="holdem" or category=="omahahi" or category=="omahahilo"): + streetCount=4 + else: + streetCount=8 + + for i in range(streetCount): #build the first dimension array, for streets tmp=[] action_types.append(tmp) tmp=[] action_amounts.append(tmp) + tmp=[] + actionNos.append(tmp) for j in range (seats): #second dimension arrays: players tmp=[] action_types[i].append(tmp) tmp=[] action_amounts[i].append(tmp) + tmp=[] + actionNos[i].append(tmp) if (category=="holdem" or category=="omahahi" or category=="omahahilo"): pass elif (category=="razz" or category=="studhi" or category=="studhilo"):#need to fill card arrays. @@ -555,8 +562,7 @@ def parseActionAmount(line, atype, site): #doesnt return anything, simply changes the passed arrays action_types and # action_amounts. For stud this expects numeric streets (3-7), for # holdem/omaha it expects predeal, preflop, flop, turn or river -def parseActionLine(line, street, names, action_types, action_amounts, site): - #print "parseActionLine, line:",line +def parseActionLine(site, line, street, names, action_types, action_amounts, actionNos): #this only applies to stud if (street<3): text="invalid street ("+str(street)+") for line: "+line @@ -571,12 +577,19 @@ def parseActionLine(line, street, names, action_types, action_amounts, site): elif (street=="river"): street=3 + nextActionNo=0 + for player in range(len(actionNos[street])): + for count in range(len(actionNos[street][player])): + if actionNos[street][player][count]>=nextActionNo: + nextActionNo=actionNos[street][player][count]+1 + atype=parseActionType(line) playerno=recognisePlayerNo(line, names, atype) amount=parseActionAmount(line, atype, site) action_types[street][playerno].append(atype) action_amounts[street][playerno].append(amount) + actionNos[street][playerno].append(nextActionNo) #end def parseActionLine #returns the action type code (see table design) of the given action line @@ -1066,12 +1079,14 @@ def splitRake(winnings, rakes, totalRake): rakes[i]=totalRake*winPortion #end def splitRake -def storeActions(cursor, hands_players_ids, action_types, action_amounts): +def storeActions(cursor, hands_players_ids, action_types, action_amounts, actionNos): #stores into table hands_actions + #print "start of storeActions, actionNos:",actionNos + #print " action_amounts:",action_amounts for i in range (len(action_types)): #iterate through streets for j in range (len(action_types[i])): #iterate through names for k in range (len(action_types[i][j])): #iterate through individual actions of that player on that street - cursor.execute ("INSERT INTO hands_actions (hand_player_id, street, action_no, action, amount) VALUES (%s, %s, %s, %s, %s)", (hands_players_ids[j], i, k, action_types[i][j][k], action_amounts[i][j][k])) + cursor.execute ("INSERT INTO hands_actions (hand_player_id, street, action_no, action, amount) VALUES (%s, %s, %s, %s, %s)", (hands_players_ids[j], i, actionNos[i][j][k], action_types[i][j][k], action_amounts[i][j][k])) #end def storeActions def store_board_cards(cursor, hands_id, board_values, board_suits): diff --git a/regression-test/fpdb_util_lib.py b/regression-test/fpdb_util_lib.py index 9afb9fb4..565f7cbd 100644 --- a/regression-test/fpdb_util_lib.py +++ b/regression-test/fpdb_util_lib.py @@ -64,11 +64,11 @@ def street_int2String(category, street): if street==0: return "Preflop" elif street==1: - return "Flop" + return "Flop " elif street==2: - return "Turn" + return "Turn " elif street==3: - return "River" + return "River " else: print "TODO: raise error, fpdb_util_lib.py street_int2String invalid street no" sys.exit(1) diff --git a/regression-test/ftp-omaha-hi-pl-ring-001-005.txt b/regression-test/known-broken/ftp-omaha-hi-pl-ring-001-005.txt similarity index 100% rename from regression-test/ftp-omaha-hi-pl-ring-001-005.txt rename to regression-test/known-broken/ftp-omaha-hi-pl-ring-001-005.txt diff --git a/regression-test/ftp-stud-hilo-ring-001.txt b/regression-test/known-broken/ftp-stud-hilo-ring-001.txt similarity index 100% rename from regression-test/ftp-stud-hilo-ring-001.txt rename to regression-test/known-broken/ftp-stud-hilo-ring-001.txt diff --git a/regression-test/ftp.6367428246.expected.txt b/regression-test/known-broken/ftp.6367428246.expected.txt similarity index 100% rename from regression-test/ftp.6367428246.expected.txt rename to regression-test/known-broken/ftp.6367428246.expected.txt diff --git a/regression-test/ftp.6929537410.expected.txt b/regression-test/known-broken/ftp.6929537410.expected.txt similarity index 100% rename from regression-test/ftp.6929537410.expected.txt rename to regression-test/known-broken/ftp.6929537410.expected.txt diff --git a/regression-test/ftp.6929553738.expected.txt b/regression-test/known-broken/ftp.6929553738.expected.txt similarity index 100% rename from regression-test/ftp.6929553738.expected.txt rename to regression-test/known-broken/ftp.6929553738.expected.txt diff --git a/regression-test/ps.14519394979.expected.txt b/regression-test/ps.14519394979.expected.txt index 3c5f86d8..962ec68c 100644 --- a/regression-test/ps.14519394979.expected.txt +++ b/regression-test/ps.14519394979.expected.txt @@ -23,24 +23,24 @@ player_name:Player_7 player_startcash:139 position:1 off Btn cards:Ts Jh winning From Table hands_actions ======================== -player_name:Player_1 actionCount:0 street:Preflop streetActionNo:0 action:call amount:4 -player_name:Player_1 actionCount:1 street:Flop streetActionNo:0 action:call amount:2 -player_name:Player_1 actionCount:2 street:Turn streetActionNo:0 action:call amount:4 -player_name:Player_1 actionCount:3 street:River streetActionNo:0 action:fold amount:0 -player_name:Player_2 actionCount:0 street:Preflop streetActionNo:0 action:blind amount:1 -player_name:Player_2 actionCount:1 street:Preflop streetActionNo:1 action:call amount:3 -player_name:Player_2 actionCount:2 street:Flop streetActionNo:0 action:check amount:0 -player_name:Player_2 actionCount:3 street:Flop streetActionNo:1 action:call amount:2 -player_name:Player_2 actionCount:4 street:Turn streetActionNo:0 action:check amount:0 -player_name:Player_2 actionCount:5 street:Turn streetActionNo:1 action:call amount:4 -player_name:Player_2 actionCount:6 street:River streetActionNo:0 action:check amount:0 -player_name:Player_2 actionCount:7 street:River streetActionNo:1 action:fold amount:0 -player_name:Player_3 actionCount:0 street:Preflop streetActionNo:0 action:blind amount:2 -player_name:Player_3 actionCount:1 street:Preflop streetActionNo:1 action:fold amount:0 -player_name:Player_4 actionCount:0 street:Preflop streetActionNo:0 action:bet amount:4 -player_name:Player_4 actionCount:1 street:Flop streetActionNo:0 action:bet amount:2 -player_name:Player_4 actionCount:2 street:Turn streetActionNo:0 action:bet amount:4 -player_name:Player_4 actionCount:3 street:River streetActionNo:0 action:bet amount:4 -player_name:Player_5 actionCount:0 street:Preflop streetActionNo:0 action:fold amount:0 -player_name:Player_6 actionCount:0 street:Preflop streetActionNo:0 action:fold amount:0 -player_name:Player_7 actionCount:0 street:Preflop streetActionNo:0 action:fold amount:0 +player_name:Player_1 street:Preflop streetActionNo:6 action:call amount:4 +player_name:Player_1 street:Flop streetActionNo:2 action:call amount:2 +player_name:Player_1 street:Turn streetActionNo:2 action:call amount:4 +player_name:Player_1 street:River streetActionNo:2 action:fold amount:0 +player_name:Player_2 street:Preflop streetActionNo:0 action:blind amount:1 +player_name:Player_2 street:Preflop streetActionNo:7 action:call amount:3 +player_name:Player_2 street:Flop streetActionNo:0 action:check amount:0 +player_name:Player_2 street:Flop streetActionNo:3 action:call amount:2 +player_name:Player_2 street:Turn streetActionNo:0 action:check amount:0 +player_name:Player_2 street:Turn streetActionNo:3 action:call amount:4 +player_name:Player_2 street:River streetActionNo:0 action:check amount:0 +player_name:Player_2 street:River streetActionNo:3 action:fold amount:0 +player_name:Player_3 street:Preflop streetActionNo:1 action:blind amount:2 +player_name:Player_3 street:Preflop streetActionNo:8 action:fold amount:0 +player_name:Player_4 street:Preflop streetActionNo:2 action:bet amount:4 +player_name:Player_4 street:Flop streetActionNo:1 action:bet amount:2 +player_name:Player_4 street:Turn streetActionNo:1 action:bet amount:4 +player_name:Player_4 street:River streetActionNo:1 action:bet amount:4 +player_name:Player_5 street:Preflop streetActionNo:3 action:fold amount:0 +player_name:Player_6 street:Preflop streetActionNo:4 action:fold amount:0 +player_name:Player_7 street:Preflop streetActionNo:5 action:fold amount:0 diff --git a/regression-test/ps.14519420999.expected.txt b/regression-test/ps.14519420999.expected.txt index 5c1de6de..ba18560f 100644 --- a/regression-test/ps.14519420999.expected.txt +++ b/regression-test/ps.14519420999.expected.txt @@ -23,24 +23,24 @@ player_name:Player_7 player_startcash:135 position:3 off Btn cards:8d 5d winning From Table hands_actions ======================== -player_name:Player_1 actionCount:0 street:Preflop streetActionNo:0 action:fold amount:0 -player_name:Player_2 actionCount:0 street:Preflop streetActionNo:0 action:call amount:2 -player_name:Player_2 actionCount:1 street:Flop streetActionNo:0 action:call amount:2 -player_name:Player_2 actionCount:2 street:Turn streetActionNo:0 action:bet amount:8 -player_name:Player_2 actionCount:3 street:River streetActionNo:0 action:bet amount:4 -player_name:Player_3 actionCount:0 street:Preflop streetActionNo:0 action:fold amount:0 -player_name:Player_4 actionCount:0 street:Preflop streetActionNo:0 action:blind amount:1 -player_name:Player_4 actionCount:1 street:Preflop streetActionNo:1 action:call amount:1 -player_name:Player_4 actionCount:2 street:Flop streetActionNo:0 action:check amount:0 -player_name:Player_4 actionCount:3 street:Flop streetActionNo:1 action:call amount:2 -player_name:Player_4 actionCount:4 street:Turn streetActionNo:0 action:check amount:0 -player_name:Player_4 actionCount:5 street:Turn streetActionNo:1 action:fold amount:0 -player_name:Player_5 actionCount:0 street:Preflop streetActionNo:0 action:blind amount:2 -player_name:Player_5 actionCount:1 street:Preflop streetActionNo:1 action:check amount:0 -player_name:Player_5 actionCount:2 street:Flop streetActionNo:0 action:bet amount:2 -player_name:Player_5 actionCount:3 street:Turn streetActionNo:0 action:bet amount:4 -player_name:Player_5 actionCount:4 street:Turn streetActionNo:1 action:call amount:4 -player_name:Player_5 actionCount:5 street:River streetActionNo:0 action:check amount:0 -player_name:Player_5 actionCount:6 street:River streetActionNo:1 action:call amount:4 -player_name:Player_6 actionCount:0 street:Preflop streetActionNo:0 action:fold amount:0 -player_name:Player_7 actionCount:0 street:Preflop streetActionNo:0 action:fold amount:0 +player_name:Player_1 street:Preflop streetActionNo:4 action:fold amount:0 +player_name:Player_2 street:Preflop streetActionNo:5 action:call amount:2 +player_name:Player_2 street:Flop streetActionNo:2 action:call amount:2 +player_name:Player_2 street:Turn streetActionNo:2 action:bet amount:8 +player_name:Player_2 street:River streetActionNo:1 action:bet amount:4 +player_name:Player_3 street:Preflop streetActionNo:6 action:fold amount:0 +player_name:Player_4 street:Preflop streetActionNo:0 action:blind amount:1 +player_name:Player_4 street:Preflop streetActionNo:7 action:call amount:1 +player_name:Player_4 street:Flop streetActionNo:0 action:check amount:0 +player_name:Player_4 street:Flop streetActionNo:3 action:call amount:2 +player_name:Player_4 street:Turn streetActionNo:0 action:check amount:0 +player_name:Player_4 street:Turn streetActionNo:3 action:fold amount:0 +player_name:Player_5 street:Preflop streetActionNo:1 action:blind amount:2 +player_name:Player_5 street:Preflop streetActionNo:8 action:check amount:0 +player_name:Player_5 street:Flop streetActionNo:1 action:bet amount:2 +player_name:Player_5 street:Turn streetActionNo:1 action:bet amount:4 +player_name:Player_5 street:Turn streetActionNo:4 action:call amount:4 +player_name:Player_5 street:River streetActionNo:0 action:check amount:0 +player_name:Player_5 street:River streetActionNo:2 action:call amount:4 +player_name:Player_6 street:Preflop streetActionNo:2 action:fold amount:0 +player_name:Player_7 street:Preflop streetActionNo:3 action:fold amount:0 diff --git a/regression-test/ps.14519433154.expected.txt b/regression-test/ps.14519433154.expected.txt index 81000579..6e739a5a 100644 --- a/regression-test/ps.14519433154.expected.txt +++ b/regression-test/ps.14519433154.expected.txt @@ -23,33 +23,33 @@ player_name:Player_7 player_startcash:135 position:4 off Btn cards:7c Jh winning From Table hands_actions ======================== -player_name:Player_1 actionCount:0 street:Preflop streetActionNo:0 action:fold amount:0 -player_name:Player_2 actionCount:0 street:Preflop streetActionNo:0 action:fold amount:0 -player_name:Player_3 actionCount:0 street:Preflop streetActionNo:0 action:call amount:2 -player_name:Player_3 actionCount:1 street:Preflop streetActionNo:1 action:call amount:2 -player_name:Player_3 actionCount:2 street:Flop streetActionNo:0 action:bet amount:2 -player_name:Player_3 actionCount:3 street:Flop streetActionNo:1 action:bet amount:4 -player_name:Player_3 actionCount:4 street:Flop streetActionNo:2 action:call amount:2 -player_name:Player_3 actionCount:5 street:Turn streetActionNo:0 action:bet amount:4 -player_name:Player_3 actionCount:6 street:Turn streetActionNo:1 action:bet amount:8 -player_name:Player_3 actionCount:7 street:Turn streetActionNo:2 action:call amount:4 -player_name:Player_3 actionCount:8 street:River streetActionNo:0 action:bet amount:4 -player_name:Player_3 actionCount:9 street:River streetActionNo:1 action:bet amount:8 -player_name:Player_3 actionCount:10 street:River streetActionNo:2 action:call amount:4 -player_name:Player_4 actionCount:0 street:Preflop streetActionNo:0 action:call amount:2 -player_name:Player_4 actionCount:1 street:Preflop streetActionNo:1 action:call amount:2 -player_name:Player_4 actionCount:2 street:Flop streetActionNo:0 action:bet amount:4 -player_name:Player_4 actionCount:3 street:Flop streetActionNo:1 action:bet amount:4 -player_name:Player_4 actionCount:4 street:Turn streetActionNo:0 action:bet amount:8 -player_name:Player_4 actionCount:5 street:Turn streetActionNo:1 action:bet amount:8 -player_name:Player_4 actionCount:6 street:River streetActionNo:0 action:bet amount:8 -player_name:Player_4 actionCount:7 street:River streetActionNo:1 action:bet amount:8 -player_name:Player_5 actionCount:0 street:Preflop streetActionNo:0 action:blind amount:1 -player_name:Player_5 actionCount:1 street:Preflop streetActionNo:1 action:bet amount:3 -player_name:Player_5 actionCount:2 street:Flop streetActionNo:0 action:check amount:0 -player_name:Player_5 actionCount:3 street:Flop streetActionNo:1 action:fold amount:0 -player_name:Player_6 actionCount:0 street:Preflop streetActionNo:0 action:blind amount:2 -player_name:Player_6 actionCount:1 street:Preflop streetActionNo:1 action:call amount:2 -player_name:Player_6 actionCount:2 street:Flop streetActionNo:0 action:check amount:0 -player_name:Player_6 actionCount:3 street:Flop streetActionNo:1 action:fold amount:0 -player_name:Player_7 actionCount:0 street:Preflop streetActionNo:0 action:fold amount:0 +player_name:Player_1 street:Preflop streetActionNo:3 action:fold amount:0 +player_name:Player_2 street:Preflop streetActionNo:4 action:fold amount:0 +player_name:Player_3 street:Preflop streetActionNo:5 action:call amount:2 +player_name:Player_3 street:Preflop streetActionNo:9 action:call amount:2 +player_name:Player_3 street:Flop streetActionNo:2 action:bet amount:2 +player_name:Player_3 street:Flop streetActionNo:6 action:bet amount:4 +player_name:Player_3 street:Flop streetActionNo:8 action:call amount:2 +player_name:Player_3 street:Turn streetActionNo:0 action:bet amount:4 +player_name:Player_3 street:Turn streetActionNo:2 action:bet amount:8 +player_name:Player_3 street:Turn streetActionNo:4 action:call amount:4 +player_name:Player_3 street:River streetActionNo:0 action:bet amount:4 +player_name:Player_3 street:River streetActionNo:2 action:bet amount:8 +player_name:Player_3 street:River streetActionNo:4 action:call amount:4 +player_name:Player_4 street:Preflop streetActionNo:6 action:call amount:2 +player_name:Player_4 street:Preflop streetActionNo:10 action:call amount:2 +player_name:Player_4 street:Flop streetActionNo:3 action:bet amount:4 +player_name:Player_4 street:Flop streetActionNo:7 action:bet amount:4 +player_name:Player_4 street:Turn streetActionNo:1 action:bet amount:8 +player_name:Player_4 street:Turn streetActionNo:3 action:bet amount:8 +player_name:Player_4 street:River streetActionNo:1 action:bet amount:8 +player_name:Player_4 street:River streetActionNo:3 action:bet amount:8 +player_name:Player_5 street:Preflop streetActionNo:0 action:blind amount:1 +player_name:Player_5 street:Preflop streetActionNo:7 action:bet amount:3 +player_name:Player_5 street:Flop streetActionNo:0 action:check amount:0 +player_name:Player_5 street:Flop streetActionNo:4 action:fold amount:0 +player_name:Player_6 street:Preflop streetActionNo:1 action:blind amount:2 +player_name:Player_6 street:Preflop streetActionNo:8 action:call amount:2 +player_name:Player_6 street:Flop streetActionNo:1 action:check amount:0 +player_name:Player_6 street:Flop streetActionNo:5 action:fold amount:0 +player_name:Player_7 street:Preflop streetActionNo:2 action:fold amount:0 |