我正在尝试实现一个名为“总统”的纸牌游戏(玩家vs. 2个僵尸玩家)。让我们假设一个僵尸玩家的手是这样的:
tablecards = ['2 of Hearts']
bot_hand = ['6 of Clubs', '3 of Diamonds', '3 of Hearts', '9 of Diamonds', '9 of Spades', '5 of Clubs', 'Ace of Spades', '4 of Diamonds', 'Ace of Hearts', '7 of Hearts', 'King of Hearts', 'Jack of Hearts', '5 of Spades', 'King of Diamonds', '4 of Hearts', '5 of Hearts', '9 of Hearts']机器人需要选择(并附加到桌面卡片上)价值最低的卡片,该卡片的价值高于桌面上的卡片(红心2张)。所以在这个例子中,它应该选择3个钻石,如果3个钻石不可用,它应该选择4个钻石,如果4个钻石不可用,它应该选择5个梅花,依此类推。
我如何实现这样的条件呢?任何帮助都将不胜感激。
发布于 2018-01-02 19:38:33
您可以执行以下任一操作:
使用"{} of {}".
还要注意,在进行比较之前,您可能希望使用int函数将字符串转换为整数("10"小于"2",但int("10")大于int("2"))。
要从列表中提取min,您可以使用min function,并使用key参数。例如:
min(["2 of Clubs", "3 of Diamonds", "10 of Clubs"], key = lambda s: int(s.split(" ")[0]))请注意,您将需要一个稍微复杂的密钥来处理Ace、King、Queen和Jack。也许你可以创建一个字典来将这些字符串转换成数字。
specialCards = {"Jack": 11, "Queen": 12, "King": 13, "Ace": 14}
def key(card):
s = card.split(' ')[0]
if s in specialCards:
return specialCards[s]
else:
return int(s)发布于 2018-01-02 19:45:43
由于您只关心卡片的值,因此我建议使用某种形式的字符串操作将字符串拆分,然后将卡片的值转换为整数。
找到最高值和相应的索引卡,然后让机器人来玩。
如果将来你做了适合的事情来扮演一个角色,我建议你看一看min-max树--但这是一个显著的难度增加。
https://stackoverflow.com/questions/48060186
复制相似问题