棄牌動作分為兩階段,第一階段為牌局第一輪是否棄牌,第二階段為牌局第二輪至第五輪的棄牌判斷。
依據自身手牌好壞決定是否棄牌
if input[7] == 0: #第一階段
hand1 = int(float(input[5]))
hand2 = int(float(input[6]))
level = BBQ.set_hands_level(hand1,hand2)
input[7] = level
print("level: ",level)
if level == 5:
if (random.randrange(1,100,1)>=35): #true / false
output = (action_predict(input))
else:
output = [8,-1]
elif level == 4 :
if (random.randrange(1,100,1)>=25):
output = (action_predict(input))
else:
output = [8,-1]
elif level == 3 :
if (random.randrange(1,100,1)>=20):
output = (action_predict(input))
else:
output = [8,-1]
elif level == 2 :
if (random.randrange(1,100,1)>=10):
output = (action_predict(input))
else:
output = [8,-1]
else :
output = (action_predict(input))
output.append(level)
else: #第二階段
print("----------------------------------------------第二階段")
output = abandon(input)
依據公共牌與手牌組合的卡片強度和對手下注模式來判斷棄牌,以高牌和一對與其他牌組做為區分,高牌情況下如果對手突然加注3倍或以上的籌碼有60%機率棄牌或是ALL-in會有85%機率棄牌;一對情況下同理,但棄牌機率會下降;其他牌組不考慮棄牌動作。
#type 0高牌 1一對 2三條 3兩對 4順子 5同花 6葫蘆 7鐵支 8同花順 9同順缺1 10同花缺1 11同花缺2 12順缺1
def abandon(input):
output=[]
new_input = []
for i in range(0,len(input)) :
if i <= 9:
if i == 8 or i == 9:
new_input.append((input[i]/input[12]))
else:
new_input.append(input[i])
elif (i%3) == 1 and input[i] == -1:
break
elif (i%3) == 0 and input[i] != -1:
new_input.append((input[i]/input[12]))
else :
new_input.append(input[i])
strength = BBQ.check_strength(new_input[0:7]) #牌型判斷參數
if strength==0: #高牌
if input[9] > (input[8]+input[9])*3:
if (random.randrange(1,100,1)>=60):
output = (action_predict(input))
else:
output = [8,BBQ.bargain(input[0:7],input[8:10])]
elif input[9]>1500: #all-in待改
if (random.randrange(1,100,1)>=85):
output = (action_predict(input))
else:
output = [8,BBQ.bargain(input[0:7],input[8:10])]
else:
output = (action_predict(input))
elif strength==1: #一對
if input[9] > (input[8]+input[9])*6: #6倍底池
if (random.randrange(1,100,1)>=40):
output = (action_predict(input))
else:
output = [8,BBQ.bargain(input[0:7],input[8:10])]
elif input[9]==3000: #all-in待改
if (random.randrange(1,100,1)>=65):
output = (action_predict(input))
else:
output = [8,BBQ.bargain(input[0:7],input[8:10])]
else:
output = (action_predict(input))
else: #比高牌與一對好的牌組
output = (action_predict(input))
return output