Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从4名玩家之间的9张牌中找到最高的牌数?_Javascript_Python_Pseudocode_Poker - Fatal编程技术网

Javascript 如何从4名玩家之间的9张牌中找到最高的牌数?

Javascript 如何从4名玩家之间的9张牌中找到最高的牌数?,javascript,python,pseudocode,poker,Javascript,Python,Pseudocode,Poker,我试着在网上查阅了一些资料,它们都涉及5张牌和7张牌。另外,我并不是真的在寻找代码,我会尝试自己去做(尽管如果您愿意,我可能会在Python或JavaScript中实现这一点)。我只想有人向我解释一下寻找这样一只手(使用伪代码)的步骤 基本上,我要问的是:如何从4名玩家之间的9张牌中找到最高的牌 我是否应该在排名中分配所有最高的扑克牌号,然后解析每个玩家的牌,看看他们的牌是否包含该数字?这似乎有点乏味,我不确定这样做是否正确 另外,我注意到另一个手部评估器被设置为优化,有些人计算每张牌的位数,这

我试着在网上查阅了一些资料,它们都涉及5张牌和7张牌。另外,我并不是真的在寻找代码,我会尝试自己去做(尽管如果您愿意,我可能会在Python或JavaScript中实现这一点)。我只想有人向我解释一下寻找这样一只手(使用伪代码)的步骤

基本上,我要问的是:如何从4名玩家之间的9张牌中找到最高的牌

我是否应该在排名中分配所有最高的扑克牌号,然后解析每个玩家的牌,看看他们的牌是否包含该数字?这似乎有点乏味,我不确定这样做是否正确

另外,我注意到另一个手部评估器被设置为优化,有些人计算每张牌的位数,这让我很困惑

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

这是一款6x6网格的游戏,其中四名玩家拿起牌,无论他们的玩家牌落在哪里,他们都会拿起那张牌。卡片来自标准的52张卡片组,但卡片正面朝上,仅使用从卡片组中随机选择的36张卡片

最终,在游戏结束时,玩家手中最多可以有9张牌

赢得游戏的方法是在你周围的四名玩家中拥有最高的牌数

所以,基本上,如果你和皇室同花顺,而其他人都有一对或一对直发,他们就输了

在另一场比赛中,最高的一手是直杆,其余的一手是三杆或两杆,那么直杆的人获胜

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


扑克手只是普通的手,可能是,也可能不是排名最高的

对于一手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)
#=>正确


Define
poker-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张卡。参考玩家。通常的方法是将
最高的手牌
指定为
玩家
的属性(我假设您使用一个类来表示玩家?)。或者让它成为一个类方法。是的,我有一个类来代表玩家。非常愚蠢的问题,但我如何分配最高的手作为一个球员的属性。你能告诉我吗