fix twostartcards to handle 22 and unknowns properly
This commit is contained in:
parent
bd3e14e6de
commit
41877097c9
|
@ -39,23 +39,36 @@ def calcStartCards(hand, player):
|
||||||
|
|
||||||
def twoStartCards(value1, suit1, value2, suit2):
|
def twoStartCards(value1, suit1, value2, suit2):
|
||||||
""" Function to convert 2 value,suit pairs into a Holdem style starting hand e.g. AQo
|
""" Function to convert 2 value,suit pairs into a Holdem style starting hand e.g. AQo
|
||||||
Hand is stored as an int 13 * x + y where (x+2) represents rank of 1st card and
|
Incoming values should be ints 2-14 (2,3,...K,A), suits are 'd'/'h'/'c'/'s'
|
||||||
|
Hand is stored as an int 13 * x + y + 1 where (x+2) represents rank of 1st card and
|
||||||
(y+2) represents rank of second card (2=2 .. 14=Ace)
|
(y+2) represents rank of second card (2=2 .. 14=Ace)
|
||||||
If x > y then pair is suited, if x < y then unsuited"""
|
If x > y then pair is suited, if x < y then unsuited
|
||||||
if value1 < 2 or value2 < 2:
|
Examples:
|
||||||
|
0 Unknown / Illegal cards
|
||||||
|
1 22
|
||||||
|
2 32o
|
||||||
|
3 42o
|
||||||
|
...
|
||||||
|
14 32s
|
||||||
|
15 33
|
||||||
|
16 42o
|
||||||
|
...
|
||||||
|
170 AA
|
||||||
|
"""
|
||||||
|
if value1 is None or value1 < 2 or value1 > 14 or value2 is None or value2 < 2 or value2 > 14:
|
||||||
ret = 0
|
ret = 0
|
||||||
if value1 == value2: # pairs
|
elif value1 == value2: # pairs
|
||||||
ret = (13 * (value2-2) + (value2-2) )
|
ret = (13 * (value2-2) + (value2-2) ) + 1
|
||||||
elif suit1 == suit2:
|
elif suit1 == suit2:
|
||||||
if value1 > value2:
|
if value1 > value2:
|
||||||
ret = 13 * (value1-2) + (value2-2)
|
ret = 13 * (value1-2) + (value2-2) + 1
|
||||||
else:
|
else:
|
||||||
ret = 13 * (value2-2) + (value1-2)
|
ret = 13 * (value2-2) + (value1-2) + 1
|
||||||
else:
|
else:
|
||||||
if value1 > value2:
|
if value1 > value2:
|
||||||
ret = 13 * (value2-2) + (value1-2)
|
ret = 13 * (value2-2) + (value1-2) + 1
|
||||||
else:
|
else:
|
||||||
ret = 13 * (value1-2) + (value2-2)
|
ret = 13 * (value1-2) + (value2-2) + 1
|
||||||
|
|
||||||
# print "twoStartCards(", value1, suit1, value2, suit2, ")=", ret
|
# print "twoStartCards(", value1, suit1, value2, suit2, ")=", ret
|
||||||
return ret
|
return ret
|
||||||
|
@ -66,8 +79,8 @@ def twoStartCardString(card):
|
||||||
ret = 'xx'
|
ret = 'xx'
|
||||||
if card > 0:
|
if card > 0:
|
||||||
s = ('2', '3', '4', '5', '6', '7', '8', '9', 'T', 'J', 'Q', 'K', 'A')
|
s = ('2', '3', '4', '5', '6', '7', '8', '9', 'T', 'J', 'Q', 'K', 'A')
|
||||||
x = card / 13
|
x = (card-1) / 13
|
||||||
y = card - 13 * x
|
y = (card-1) - 13 * x
|
||||||
if x == y: ret = s[x] + s[y]
|
if x == y: ret = s[x] + s[y]
|
||||||
elif x > y: ret = s[x] + s[y] + 's'
|
elif x > y: ret = s[x] + s[y] + 's'
|
||||||
else: ret = s[y] + s[x] + 'o'
|
else: ret = s[y] + s[x] + 'o'
|
||||||
|
|
|
@ -516,8 +516,8 @@ class GuiPlayerStats (threading.Thread):
|
||||||
if holecards: # re-use level variables for hole card query
|
if holecards: # re-use level variables for hole card query
|
||||||
query = query.replace("<hgameTypeId>", "hp.startcards")
|
query = query.replace("<hgameTypeId>", "hp.startcards")
|
||||||
query = query.replace("<orderbyhgameTypeId>"
|
query = query.replace("<orderbyhgameTypeId>"
|
||||||
, ",case when floor(hp.startcards/13) >= mod(hp.startcards,13) then hp.startcards + 0.1 "
|
, ",case when floor((hp.startcards-1)/13) >= mod((hp.startcards-1),13) then hp.startcards + 0.1 "
|
||||||
+ " else 13*mod(hp.startcards,13) + floor(hp.startcards/13) "
|
+ " else 13*mod((hp.startcards-1),13) + floor((hp.startcards-1)/13) + 1 "
|
||||||
+ " end desc ")
|
+ " end desc ")
|
||||||
else:
|
else:
|
||||||
query = query.replace("<orderbyhgameTypeId>", "")
|
query = query.replace("<orderbyhgameTypeId>", "")
|
||||||
|
|
Loading…
Reference in New Issue
Block a user