/1前言/
最近在学习PyQt5视觉接口。 这是一个非常丰富的gui库,相对于tkinter库,它更强大,界面更优美,操作也不难。 于是我尝试了牛刀,开始制作用PyQt5可以可视化的“剪刀石头布”小游戏。 整体效果如下。
该程序实现了游戏回合统计、双方得分、平局次数统计和重启功能,无论是1局胜负,还是3局2胜、7局3胜都能完美解决。
/2具体实现/
让我详细介绍一下具体的步骤。
第一步:创建游戏主窗口
PyQt5主窗口的创建有固定的类型。 首先,创建一个APP对象。 app=应用程序(sys.argv )。 参数sys.argv是命令行参数。 这样,在计算机系统终端上运行程序时,可以传递命令参数来执行不同的逻辑代码。 执行APP对象,进入消息吉鲁类型,然后等待:sys.exit(app.exec_ ) ) ) )结束。 代码如下图所示。
其中,GameWindow () )是这次游戏的班级,窗口大小为900X400
将标题和图标添加到此窗口后,如下图所示。
效果如下图所示。
步骤2 :在网格布局中放置控件
PyQt5有绝对布局、水平布局、垂直布局、网格布局、表单布局5种布局方式,但这次只采用网格布局。 其他的版面设计方式各有特点,有兴趣的人请研究一下。
1 .我想把整个出窗分成3x3=9个网格,用网格布局填写内容。 首先,将“红方选手”、“第x次”、“蓝方选手”分别放入第1行的3个网格。
网格布局需要添加小部件函数,上图中的4个参数分别表示要放置的空间、要放置的行数、要放置的列数,上述3个控件分别位于第1行的1-3列。 效果如下图所示。
2 .保留“剪刀石头布”照片的展示位置,分别放在第二行的第一和第三网格。
把红蓝双方的得分情况放在第二行中间的网格上。
这里需要注意。 在第2行的第2个网格中嵌入新的网格对象,将其分成1行3列的网格。 其中,第一个网格得分为红色,第二个网格得分为“VS”,第三个网格得分为蓝色。
3 .绑定“游戏开始”、“重新开始”信号槽
在QpushButton中创建“开始游戏”按钮,绑定gamestart函数,并将其放置在第三行的第二个网格上。
on">
用QpushButton创建“重新开始”按钮,绑定restart函数(后续还会讲),并将该按钮放入第三行的第三个网格中。效果如下图所示:
现在基本框架已经搭建好了。
第三步:信号槽绑定信号
主要是针对开始游戏和重新开始游戏按钮绑定信号,下面给大家介绍一下上述的gamestart和restart函数。
1. gamestart函数
1)游戏开始后,我需要随机从“剪刀”、“石头”、“布”三张图片中选出1张放置到相应位置,代码如下图所示:
这里用了red和blue两个类,每次点击开始游戏按钮,都会调用该类,用random函数随机选出图片,并在相应位置展示。
2)判断输赢,实时更新数据
Gamestart下调用judge函数,判断得分,记录红方得分、蓝方得分、平局次数3个值,并用setText函数立即更新红方得分框、蓝方得分框及平局次数框的内容。
最后,为了避免游戏中不小心点击关闭窗口按钮,添加1个关闭事件,如下图所示。
当点击右上角叉号时,会进行提示,效果如下图所示:
到这里,这个小游戏就制作完毕了,界面比较简单,感兴趣的朋友可以继续开发更高级的功能。
/3 结语/
本文基于PyQt5可视化界面,用PyQt5做个可视化的“剪刀石头布”小游戏,可以实现游戏轮次统计,双方得分、平局次数统计和重新开始功能,不管是1局决胜负,还是三局两胜、七局三胜,都能完美解决。
欢迎大家尝试,消耗在家的无聊时间。本文涉及的代码都上传到了github地址上,后台回复“剪刀石头布”五个字即可获取代码。