我刚刚用 Python 完成了剪刀石头布游戏。现在,用户必须在三个按钮之间进行选择,字符串 user1
被设置为“Rock”、“Paper”或“Scissors”。
当我评估游戏时,代码只是运行一些 if 语句,例如检查,
if computer == "Paper"
但如果我想用我自己的元素稍微扩展一下游戏,那将是很多“if/else”。 Sow 我想我应该给每个项目一个唯一的编号,这样我就可以使用这个编号而不必弄乱这些字符串。
我的老师给了我将两个整数相除以确定谁获胜的提示。
但是在我考虑了一段时间之后,我没有找到任何解决方案来解决这个问题。这只是关于这背后的逻辑,我不需要任何代码。
如何使用这两个整数作为项目,仅通过一点数学就可以找到获胜者? 谢谢!
最佳答案
假设我们正在实现普通的剪刀石头布,正如您在对问题的评论中所说的那样。让我们分配:
Rock: 0
Paper: 1
Scissors: 2
此答案假定您了解模运算符 (%
),因此如果不了解,请先查找它以了解其含义。我在这个答案中使用它,这样当我们将 1 加到剪刀(即 2)时,您会得到 0 而不是 3,因为石头是 0 并且没有数字 3 的项目。
通过将数字分配给选择,我们希望一个选择在另一个人的选择之后出现就赢,如果在它之前出现就输,如果它们相等则平局。例如,2 紧跟在 1 之后,因此剪刀胜过布。我们将使用模运算符来确保我们的数字保持在 1 和 3 之间(包括 1 和 3)。
因此,如果您想确定玩家 1 是否获胜,您将检查他们的移动是否比玩家 2 的移动大 1。要判断他们是否打平,看他们是否有相同的着法。如果这些都不是真的,那么玩家 2 一定赢了。下面是一些测试的示例实现:
>>> def winner(p1, p2):
... if (p1+1) % 3 == p2:
... return "Player 2 won because their move is one greater than player 1"
... elif p1 == p2:
... return "It's a draw because both players played the same move"
... else:
... return "Player 1 wins because we know that it's not a draw and that player 2 didn't win"
...
>>>
>>>
>>> rock = 0
>>> paper = 1
>>> scissors = 2
>>> winner(rock, paper)
'Player 2 won because their move is one greater than player 1'
>>> winner(paper, scissors)
'Player 2 won because their move is one greater than player 1'
>>> winner(scissors, rock)
'Player 2 won because their move is one greater than player 1'
>>> winner(rock, scissors)
"Player 1 wins because we know that it's not a draw and that player 2 didn't win"
>>> winner(paper, paper)
"It's a draw because both players played the same move"
现在在这个游戏中,数学规则是一个项目击败数字小于它的项目(模 3)。如果您添加更多项目,您将需要提出一个数学规则来管理游戏的运行方式。一个例子(这不会很有趣)是保持规则,即一个项目击败项目 1 比它少(因此输给项目 1 比它多),并且与任何其他项目有联系,虽然这将是一个相当无聊的游戏。
希望回答对您有所帮助!!祝你好运!
关于python - 石头剪刀布 - 在数学上获得胜利,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41457556/