我怎样才能从4个牌手之间的9张牌中找到最高的牌?

2024-10-02 12:27:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着在网上查了几个资料来源,他们都处理5张牌和7张牌的牌。另外,我并不是真的在寻找代码,我会尝试自己去做(尽管如果您愿意,我希望用Python或JavaScript实现它)。我只想有人向我解释找到这样一只手的步骤(使用伪代码)。在

基本上,我要问的是:如何从4个玩家之间的9张牌中找到最高的扑克手?在

我应该分配所有最高的扑克手数排名,然后通过分析每个玩家的手,看看他们的手是否包含这个数字?这似乎有点乏味,我不确定这是正确的方法。在

另外,我注意到其他手牌计算器都是为了优化而设置的,有些人会计算每张牌的位数,这让我很困惑。在

编辑:下面是我正在制作的游戏:

这是一个6x6网格的游戏,其中四个玩家拿起牌,他们的棋子落在哪里,他们就拿起那张牌。卡片来自标准的52张卡片组,但是卡片面朝上,只有36张从卡片组中随机选择的卡片被使用。在

最终,在游戏接近尾声时,玩家手中最多只能有9张牌。在

赢得游戏的方法是在你周围的四个玩家中包含最高的扑克手。在

所以,基本上,如果你有一个皇家冲,而其他人都有一双或一个直发,他们就输了。在

在另一场比赛中,最高的手是直杆,其他手是三对或两对,则直杆者获胜。在

所以,最高的扑克手是相对于其他玩家的手最高的手。在4个玩家中,这只手牌的排名最高。在

扑克只是普通的手,可能是也可能不是最高的等级。在


Tags: 方法代码游戏来源玩家步骤数字javascript
1条回答
网友
1楼 · 发布于 2024-10-02 12:27:37

9张牌的手牌只有126种可能的5张牌组合。所以你可以在上面迭代,找到最高的。itertools.combinations(9_cards, 5)可以生成所有这些。在

为了找到最高点,一个简单的实现可以定义一个函数来给一只手打分。然后将此函数用作键:max(all_5_cards_hands, key=hand_score)

你可以用元组来表示分数。以手牌排名领先,其次是卡片排名。在

例如:

STRAIGHT_FLUSH = 9
...
TWO_PAIR = 2
ONE_PAIR = 1
HIGH_CARD = 0

hand_score('A7532')  # I omit suits here
# => (HIGH_CARD, 14,7,5,3,2)
hand_score('KK333')
# => (FULL_HOUSE, 3, 13)
hand_score('33444')
# => (FULL_HOUSE, 4, 3)
hand_score('AKQJ0')
# => (STRAIGHT, 14)

# Tuples can be easily compared:
(HIGH_CARD, 14,7,5,3,2) < (STRAIGHT, 14)
# => True

相关问题 更多 >

    热门问题