def get_best_play(mycard, handcard, last_remain, next_remain):
"""
返回最佳出牌方式
Parameters:
mycard (list[int]): 手牌
handcard (list[int]): 场上牌
last_remain (int): 上家剩余牌数
next_remain (int): 下家剩余牌数
Returns:
list[int]: 最佳出牌方式
"""
# 牌面值
# values = {str(i): i for i in range(3, 11)}
# values['J'] = 11
# values['Q'] = 12
# values['K'] = 13
# values['A'] = 14
# values['2'] = 15
# values['小王'] = 16
# values['大王'] = 17
#
values = {};
for s in ['♠', '♥', '♣', '♦']:
values.update({str(i) + s: i for i in range(3, 11)});
values['11' + s] = 11
values['12' + s] = 12
values['13' + s] = 13
values['14' + s] = 14
values['15' + s] = 15
values['小王'] = 16
values['大王'] = 17
# 牌面值对应的数量
num_mycard = [values[str(card)] for card in mycard]
num_handcard = [values[str(card)] for card in handcard]
# 场上牌最大值
if num_handcard:
max_handcard = max(num_handcard)
else:
# handle the case where num_handcard is empty
max_handcard = 0;
# 如果场上牌的数量为1或2,则出所有比场上牌大的牌
if len(handcard) <= 2:
return [x for x in mycard if values[x] > max_handcard]
# 如果场上牌的数量为3,则出所有三带一、三带二、顺子、连对、炸弹中比场上牌大的牌
if len(handcard) == 3:
# 如果场上牌为三带一
if num_handcard[0] == num_handcard[1] == num_handcard[2]:
for i in range(len(num_mycard) - 1):
if num_mycard[i] == num_mycard[i + 1] == num_mycard[i + 2]:
return [mycard[i], mycard[i + 1], mycard[i +
简单的斗地主出牌算法(python)
最新推荐文章于 2023-10-27 14:07:37 发布