在 poke 游戏中的技巧期间循环访问元组时更新默认命令



所以我希望得到一个由 4 个元组组成的元组的输入,其中包含在扑克游戏的某个阶段玩的 4 个技巧。我能够从中获得一些结果,这将给我可能的赢家,并在元组中找到该卡的索引。

下面是一个示例:

(('9D', '9S', '3S', '0D'),)

元组内部包含 4 个元组,但在这种形式下它仍然可以用作有效输入。

我能够比较某些值并获得该卡的索引。

例:

Due to certain issues this snippet has been deleted, please refer to the answer below 

您可能会看到我正在使用一种非常基本的方式来测试可能的结果。现在我被困在它希望我记录获胜者的阶段。或者更具体地说,记录某个获胜者赢得的技巧数量。请注意,玩家编号由元组中的索引位置预先确定。

('9D',   '9S',   '3S',   '0D')
Player0 Player1 Player2 Player3

我的目标是 1.记录玩家的获胜技巧次数。2. 将密钥更新为该播放器,并将该密钥的值递增 1。然后按照模式处理所有卡片元组。

示例输入:

score_phase((0, 0, 0, 0), (('9D', '9S', '3S', '0D'),), '2D')

期望的输出应该变成(10, 10, 10, 1),因为除了玩家4之外,没有人赢得这个把戏,但是他出价的0与他在那个阶段赢得的把戏数量不同。

您可能希望在代码中指出的一些问题是因为我目前正在尝试获取可能给我一些见解的主要输出。可悲的是,到目前为止,没有人启发我。 有关如何处理此问题的任何帮助将不胜感激。

编辑:如果玩家0赢了一招,他将得到一分(这可能是稍后的输出。如果他在bids中出价1,那么他做了一个技巧,所以他得到1 + 10(10做出正确的预测。我只想问是否有办法实现这一目标?我可以得到一个数字的索引,指示谁打了那张牌。因此,我可以使用它并将其与竞价元组进行比较并更新他的分数。但我认为仅使用元组和列表可能无法做到这一点,所以我想知道是否可以在默认命令中更新它们。但其他实现方式也非常感谢!

在你的应用中,你需要处理很多事情。以下是您对问题的(10, 10, 10, 1)部分的一些启发。我冒昧地对您的代码进行了一些更改。不过,它应该仍然可以识别。

SPECIALS = {"0": 10, "J": 11, "Q": 12, "K": 13, "A": 14}

def getCardValue(inputVal):
special = inputVal[:-1]
return SPECIALS.get(special, int(special))

def score_phase(bids, tricks, deck_top):
# Unwrap tricks
tricks = tricks[0]
# Convert to a high score list.
result = [0 if deck_top[-1] != x[-1] else getCardValue(x)
for x
in tricks]
best = max(result)
winners = [i for i in range(len(result)) if result[i] == best]
print('Winner(s) by index: {}'.format(', '.join(str(winner)
for winner
in winners)))
def score(i):
if bids[i] > 0:
if result[i] == best:
return 11
else:
return 0
else:
if result[i] == best:
return 1
else:
return 10
return [score(i) for i in range(len(bids))]
if __name__ == '__main__':
print(score_phase((0, 0, 0, 0), (('9D', '9S', '3S', '0D'),), '2D'))

希望它有所帮助。

最新更新