Python 中的石头剪刀布游戏

2025年3月17日 | 阅读 10 分钟

Python 是一种可以用于不同目的的编程语言,人们可以用它做任何事情。Python 也可以用于开发游戏。开发游戏是学习如何编写程序的好方法。

在下面的教程中,我们将学习如何在 Python 编程语言中创建简单的“石头剪刀布”游戏,而无需使用任何外部游戏库,例如 PyGame

但在我们开始之前,让我们简要了解一下“石头剪刀布”游戏是什么。

什么是“石头剪刀布”游戏?

我们大多数人可能都玩过石头剪刀布。石头剪刀布通常用作两个人或更多人之间公平的选择方法,以解决争端或做出公正的集体决定。这种方法类似于抛硬币、抽签或掷骰子。

如果不熟悉,石头剪刀布游戏被认为是两人或更多玩家之间的手部游戏。参与者同时说“石头、剪刀、布!”,然后将手形成石头(拳头)、一张纸(手掌向下)或一把剪刀(两根手指伸出)的形状。

这个游戏的规则很简单

规则 1:石头砸剪刀,所以石头

规则 2:布包石头,所以

规则 3:剪刀剪布,所以剪刀

现在我们已经了解了石头剪刀布游戏及其规则,我们可以开始思考这些规则如何转化为 Python 代码。

在下面的 Python 项目中,玩家将从石头、布和剪刀中选择一个。然后他们将点击播放按钮以显示游戏结果。

项目先决条件

我们将使用 Python 编程语言的基本概念以及 Tkinter 库和 random 模块来实现石头剪刀布项目。

Tkinter 库: Tkinter 库是一个标准的图形用户界面 (GUI) 库,是构建 GUI 应用程序最简单的方法之一。

random 模块: random 模块允许程序员生成随机数。

我们可以使用 Python pip 安装程序命令在命令提示符或终端上安装这些库,如下所示

语法

Python 项目结构

以下是我们使用 Python 构建一个功能齐全的带 GUI 的石头剪刀布游戏的步骤

步骤 1:导入所需的库

步骤 2:为应用程序创建 GUI

步骤 3:编写用户选择的代码

步骤 4:编写计算机选择的代码

步骤 5:定义函数

步骤 6:定义按钮

我们现在将详细讨论这些步骤。所以,让我们开始吧。

导入所需的库

每个项目的第一步是导入项目过程中所需的所有库和模块。在这种情况下,我们将需要导入 Tkinter 库和 random 模块。

让我们考虑以下代码片段来说明这一点

文件:rockPaperScissors.py

说明

在上面的代码片段中,我们导入了 Tkinter 库以及 random 模块。

为应用程序创建 GUI

完成导入所需的库和模块后,我们将使用 Tkinter 库的 Tk() 类初始化一个窗口,并为该窗口提供一些详细信息。

让我们看下面的代码片段来说明这一点:

文件:rockPaperScissors.py

说明

在上面的代码片段中,我们借助 Tkinter 库的 Tk() 类初始化了一个窗口。然后我们使用 title() 方法设置了窗口的标题。我们还使用 geometry() 方法设置了窗口的宽度和高度。然后我们在 config() 方法中通过 bg 参数指定了窗口的背景颜色。最后,我们通过在 resizable() 方法中将 widthheight 参数设置为 False 来固定窗口的大小。

现在,我们将使用 Label() 小部件类向窗口添加一个标签。以下代码片段是 Label() 小部件的实现。

文件:rockPaperScissors.py

说明

在上面的代码片段中,我们使用 Label() 小部件来显示用户无法更改的文本。在此小部件中,我们指定了窗口的名称,即 guiWindow。我们还定义了标签上显示的文本作为该标签的标题。我们还提供了文本应使用的字体样式。我们还使用 bg 参数指定了背景颜色,并使用 fg 参数指定了前景颜色。然后我们使用 pack 函数以块的形式组织小部件。

为用户选择创建列

现在我们已经成功创建了一个窗口,是时候创建玩家可以输入他们选择的列了。

让我们看下面的代码片段来说明这一点:

文件:rockPaperScissors.py

说明

在上面的代码片段中,我们使用 StringVar() 类将玩家的选择存储在 userInput 变量中。然后我们创建了一个标签来为玩家显示一些文本。最后,我们使用 Entry() 小部件创建了一个输入文本字段。在此小部件中,我们使用 textvariable 参数来检索 Entry() 小部件的文本。我们还使用 place() 函数将小部件放置在特定的坐标。

计算机选择的代码

我们现在将使用 random 模块的 randint() 函数让计算机选择其偏好。让我们考虑以下代码片段来说明这一点。

文件:rockPaperScissors.py

说明

在上面的代码片段中,我们使用 random 模块的 randint() 函数从给定范围中随机选择一个数字。然后我们使用 if-elif-else 条件语句来玩石头剪刀布。

如果计算机选择 1,则石头将设置为 compSelection 变量。

如果计算机选择 2,则布将设置为 compSelection 变量。

如果计算机选择 3,则剪刀将设置为 compSelection 变量。

创建开始游戏的函数

一旦我们从用户选择和计算机选择中获得值,我们将编写一个函数来开始游戏。此函数将检查 userSelection 变量的值并将其与 compSelection 变量的值进行比较,并返回所需的语句。

文件:rockPaperScissors.py

说明

在上面的代码片段中,我们创建了 StringVar() 类的一个对象。然后我们将一个函数定义为 letsPlay()。在此函数中,我们使用 if-elif-else 条件语句将用户的输入值与计算机选择的值进行比较,并使用 set() 函数根据比较结果存储相应的语句。在这个石头剪刀布游戏中,选择石头的一方将战胜选择剪刀的另一方,但会输给选择布的一方;选择布的一方将输给选择剪刀的一方。如果双方选择相同,则游戏将打平。

定义一个函数来重置游戏

我们现在将创建一个函数来重置游戏。此函数会将所有变量设置为空字符串。

让我们看下面的代码片段来说明这一点:

文件:rockPaperScissors.py

说明

在上面的代码片段中,我们将一个函数定义为 resetGame()。在此函数中,我们将 resuserInput 等变量的值设置为空字符串。

定义一个退出游戏的函数

我们现在将定义一个函数,通过停止 mainloop() 方法的执行来退出石头剪刀布程序。

让我们看下面的代码片段来说明这一点:

文件:rockPaperScissors.py

说明

在上面的代码片段中,我们使用 destroy() 方法停止 mainloop() 方法的执行并退出程序。

定义窗口的按钮

现在让我们定义一些按钮来执行窗口上的处理。这些按钮将包括播放、重置和退出。

让我们考虑以下代码片段来说明这些按钮的定义。

文件:rockPaperScissors.py

说明

我们在上面的代码片段中创建了一个标签来显示结果。然后我们多次使用 Button() 小部件来创建不同的按钮来播放、重置和退出游戏。我们在这些小部件中使用 command 参数来在点击按钮时调用指定的函数。最后,我们调用 mainloop() 方法来执行程序。

因此,使用 Python 中的 Tkinter 库的石头剪刀布游戏就完成了。我们现在可以保存文件并运行程序以查看它是否有效。

要运行程序,我们可以在命令行 shell 或终端中键入以下命令

命令

但在我们看到输出之前,这里有一个完整的项目代码。

完整的项目代码

以下程序文件是“石头剪刀布游戏”项目的完整代码。

文件:rockPaperScissors.py

输出

Rock Paper Scissors Game in Python

结论

最后,我们可以得出结论,我们已经成功地使用 Python 编程语言开发了石头剪刀布游戏。我们利用 Tkinter 库来渲染图形。我们还利用 random 模块来生成随机选择。通过这个项目,我们学习了如何创建不同的窗口小部件,如标签、文本字段和按钮。我们还看到了如何借助按钮调用函数。因此,我们以以下方式在 Python 中创建了一个石头剪刀布游戏。