Javascript 如何从4名玩家之间的9张牌中找到最高的牌数?
我试着在网上查阅了一些资料,它们都涉及5张牌和7张牌。另外,我并不是真的在寻找代码,我会尝试自己去做(尽管如果您愿意,我可能会在Python或JavaScript中实现这一点)。我只想有人向我解释一下寻找这样一只手(使用伪代码)的步骤 基本上,我要问的是:如何从4名玩家之间的9张牌中找到最高的牌 我是否应该在排名中分配所有最高的扑克牌号,然后解析每个玩家的牌,看看他们的牌是否包含该数字?这似乎有点乏味,我不确定这样做是否正确 另外,我注意到另一个手部评估器被设置为优化,有些人计算每张牌的位数,这让我很困惑 编辑:以下是我正在制作的游戏: 这是一款6x6网格的游戏,其中四名玩家拿起牌,无论他们的玩家牌落在哪里,他们都会拿起那张牌。卡片来自标准的52张卡片组,但卡片正面朝上,仅使用从卡片组中随机选择的36张卡片 最终,在游戏结束时,玩家手中最多可以有9张牌 赢得游戏的方法是在你周围的四名玩家中拥有最高的牌数 所以,基本上,如果你和皇室同花顺,而其他人都有一对或一对直发,他们就输了 在另一场比赛中,最高的一手是直杆,其余的一手是三杆或两杆,那么直杆的人获胜 所以,最高牌手是相对于其他牌手最高的牌手。这是4名玩家中排名最高的牌Javascript 如何从4名玩家之间的9张牌中找到最高的牌数?,javascript,python,pseudocode,poker,Javascript,Python,Pseudocode,Poker,我试着在网上查阅了一些资料,它们都涉及5张牌和7张牌。另外,我并不是真的在寻找代码,我会尝试自己去做(尽管如果您愿意,我可能会在Python或JavaScript中实现这一点)。我只想有人向我解释一下寻找这样一只手(使用伪代码)的步骤 基本上,我要问的是:如何从4名玩家之间的9张牌中找到最高的牌 我是否应该在排名中分配所有最高的扑克牌号,然后解析每个玩家的牌,看看他们的牌是否包含该数字?这似乎有点乏味,我不确定这样做是否正确 另外,我注意到另一个手部评估器被设置为优化,有些人计算每张牌的位数,这
扑克手只是普通的手,可能是,也可能不是排名最高的 对于一手9张牌,只有126种可能的5张牌组合。因此,您可以迭代它们以找到最高值<代码>itertools。组合(9张卡,5张)可以生成所有这些组合 为了找到最高值,一个简单的工具可以定义一个函数,给一只手打分。然后将此功能用作键:
max(所有5张牌手,键=手牌分数)
您可以使用元组来表示分数。手牌排名领先,卡牌排名紧随其后
例如:
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
直齐=9
...
两对=2
一对=1
高卡=0
手工评分('A7532')#我省略了西装
#=>(高_卡,14,7,5,3,2)
手感得分('KK333')
#=>(满座,3号,13号)
手牌分数('33444')
#=>(满屋子,4,3)
手感得分('AKQJ0')
#=>(直线,14)
#元组可以很容易地进行比较:
(高卡,14,7,5,3,2)<(直卡,14)
#=>正确
9张牌的手牌只有126种可能的5张牌组合。因此,您可以迭代它们以找到最高值<代码>itertools。组合(9张卡,5张)可以生成所有这些组合
为了找到最高值,一个简单的工具可以定义一个函数,给一只手打分。然后将此功能用作键:max(所有5张牌手,键=手牌分数)
您可以使用元组来表示分数。手牌排名领先,卡牌排名紧随其后
例如:
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
直齐=9
...
两对=2
一对=1
高卡=0
手工评分('A7532')#我省略了西装
#=>(高_卡,14,7,5,3,2)
手感得分('KK333')
#=>(满座,3号,13号)
手牌分数('33444')
#=>(满屋子,4,3)
手感得分('AKQJ0')
#=>(直线,14)
#元组可以很容易地进行比较:
(高卡,14,7,5,3,2)<(直卡,14)
#=>正确
Definepoker-hand
和higher-poker-hand
@Kabie,我注意到我可能不太清楚。请参见上面的编辑。非常感谢。所以一只手最多只能使用5张牌,对吗?@Kabie,这取决于你所说的使用。在游戏结束时,最多9张牌中只有5张牌(可能形成一张扑克牌,高或不高)在你的手上进行评估。基本上,我必须解析一张9张牌,看看它是否包含一张5张牌的扑克牌。如果一手牌包含一张5张扑克牌,则将其分离出来,以便在其他4名玩家之间进行评估和比较。定义扑克牌
和最高的扑克牌
@Kabie,我注意到我可能不清楚。请参见上面的编辑。非常感谢。所以一只手最多只能使用5张牌,对吗?@Kabie,这取决于你所说的使用。在游戏结束时,最多9张牌中只有5张牌(可能形成一张扑克牌,高或不高)在你的手上进行评估。基本上,我必须解析一张9张牌,看看它是否包含一张5张牌的扑克牌。如果这手牌包含一张5张牌的扑克牌,那么将其分离出来,以便在其他4名玩家之间进行评估和比较。嗯,我明白了。我会试试看,看有没有收获。非常感谢你@kabie。顺便说一句,如果手里的牌总数少于9张怎么办。例如,在游戏中,某人可以移动到没有牌的空间,并且在该回合中没有收到牌。因此,该玩家可能有8张牌而不是9张牌。另外一个玩家可能在最后有超过10张牌。所以,我只是想,让我们概括一下,如果一个玩家可以有x张牌,并且在该手牌中有可能有5张牌呢?还有一件事,我该如何引用拥有最高牌数的玩家?@Kaylie:9张牌
是玩家的手牌C(14,5)
is 2002。所以它仍然是可计算的。因此,您可以用手更换9张卡。参考玩家。通常的方法是将最高的手牌
指定为玩家
的属性(我假设您使用一个类来表示玩家?)。或者让它成为一个类方法。是的,我有一个类来代表玩家。非常愚蠢的问题,但我如何分配最高的手作为一个球员的属性。你能告诉我吗