📜  在Python中使用 PyQt5 的井字游戏(1)

📅  最后修改于: 2023-12-03 14:51:19.731000             🧑  作者: Mango

在Python中使用 PyQt5 的井字游戏

简介

本篇文章将介绍如何使用 PyQt5 建立一个简单的井字游戏。PyQt5 是 Python 下流行的 GUI 库之一,支持开发跨平台应用程序。井字游戏是一个小型的游戏,适合初学者练手,学习 PyQt5 的基本用法。本文将从如何安装 PyQt5 库开始,到如何实现井字游戏的功能,将逐步为你展示 PyQT5 的基本用法。

安装 PyQt5

在开始安装 PyQt5 之前,请确保你已经安装了 Python3。PyQt5 的安装有两种方式,这里我们选择使用 pip 安装。

pip3 install pyqt5

确保 PyQt5 安装正确之后,我们就可以开始编写代码了。

编写井字游戏

在这里,我们使用 Qt Designer 工具来构建 GUI 界面。Qt Designer 是一个为 PyQt5 设计的 GUI 设计工具,可以通过拖动控件的方法轻松搭建一个用户界面。

1. 创建 Qt Designer 界面

首先我的是在Mac系统下,我选择打开PyCharm,使用 PyCharm 打开一个新项目,创建一个新的 PyQt5 文件。

打开 Designer 界面。

pyqt5-tools designer

然后,可根据个人喜好,设计一个自己想要的井字游戏样式的 UI 界面。

这里我设计的是一个简单版格子井字游戏样式,主要是由九个按钮组成,每个按钮上都印有 “O”,或 “X”。

alt text

在 Designer 工具中,点击左上方的“Widget Box”选项卡。在“Button”组件下,将“QPushButton”界面部件拖动到窗口的标题栏下方。按住 CTRL 键复制按钮,让你在窗口中创建 9 个按钮。设置 3 列和 3 行,每个按钮都应该在一行。每个按钮的属性如下:

objectName: button_0
text: 
styleSheet: QPushButton{background-color:#e0e0d1;border: 1px solid #C6C6C6;}

其中,“objectName”属性是为每个按钮取一个唯一的名称,方便在代码中使用。styleSheet属性是设置按钮的样式表,用于改变背景色、边框等。

保存 QWidget 到“ui”文件,用于之后的 Python 代码。

2. 将 Qt Designer 界面转换成 Python 代码

使用 pyuic 统一转换为 Python 代码。该命令接受 Qt Designer UI 文件和一个输出文件名,并将转换完成的 Python 代码写入输出文件。

pyuic5 ui.ui -o main.py
3. 编写主要程序

在 main.py 文件中,我们添加一个 click 事件函数,为“按钮”组件添加一个单击事件 ,并在相应的单元格中添加交替的“X”和“O”。

class Ui_MainWindow(object):
 
    def setupUi(self, MainWindow):
        ...
        
        self.buttons = {
            0: self.button_0,
            1: self.button_1,
            2: self.button_2,
            3: self.button_3,
            4: self.button_4,
            5: self.button_5,
            6: self.button_6,
            7: self.button_7,
            8: self.button_8,
        }
 
        for button in self.buttons.values():
            button.clicked.connect(self.click)    # 让每个按钮都发生单击事件
 
    def click(self):
        button = self.sender()
        if button.text() == '':
            self.turn += 1    # 表示下一个人下子了
            if self.turn % 2 == 0:
                button.setText('O')
            else:
                button.setText('X')    # 每个单元格交替出现'O'和'X'
            self.check_winner()    # 判断是否有胜者
 
    def check_winner(self):
        # 注意:自行在这里添加您自己的胜者检查代码!
        pass
 
 
class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
 
    def __init__(self):
        super(MainWindow, self).__init__()
        self.setupUi(self)
        self.show()
        self.turn = 0    # 轮到哪一位玩家了

 
def main():
    app = QtWidgets.QApplication(sys.argv)
    main = MainWindow()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()

在 check_winner 函数中,你可以按照你的想法实现胜者检查代码,然后在这个函数中实现胜利后的提示。当游戏结束后,可以给玩家提供开始新游戏的选项。

我们现在已经完成能够处理单击事件的井字游戏了!运行代码即可开始玩游戏。

结论

本文介绍了如何在 Python 中使用 PyQt5 构建一个交互式井字游戏。我们介绍了如何使用 Designer 工具创建用户界面,并将其转化为 Python 代码。代码包括一个 click 事件函数,用于处理单击事件,并在单元格中添加交替的 X 和 O。学习这些基础内容可以让我们更好地理解如何使用 PyQt5 来构建一个更加复杂的应用程序。