手把手教你用Python作个可视化的“剪刀石头布”小游戏

点击上方“Python爬虫与数据挖掘”,进行关注git

回复“书籍”便可获赠Python从入门到进阶共10本电子书github

网络

app

框架

dom

众里寻他千百度。蓦然回首,那人却在,灯火阑珊处。函数

/1 前言/布局

  最近在学习PyQt5可视化界面,这是一个内容很是丰富的gui库,相对于tkinter库,功能更增强大,界面更加美观,操做也不难。因而我开始小试牛刀,用PyQt5作个可视化的“剪刀石头布”小游戏,整体效果以下:学习

  该程序能够实现游戏轮次统计,双方得分、平局次数统计和从新开始功能,无论是1局决胜负,仍是三局两胜、七局三胜,都能完美解决。ui

/2 具体实现/

  下面给你们详细介绍一下具体步骤。

第一步:建立游戏主窗口

  PyQt5建立主窗口有其固定的套路,首先要建立应用程序对象:app=QApplication(sys.argv),参数sys.argv是命令行参数,这使得能够在电脑系统终端执行程序时,传入命令参数,来执行不一样的逻辑代码。执行应用程序对象,进入消息循环等待退出: sys.exit(app.exec_()),代码以下图所示:

  其中,GameWindow()是本次游戏的类,窗口大小为900X400

再为该窗口添加标题和图标以下图所示:

  效果以下图所示:

第二步:以网格布局方式放控件

  PyQt5有5种布局方式,分别是绝对布局、水平布局、垂直布局、网格布局和表单布局,本次只采用网格布局,其他布局方式各有特色,感兴趣的朋友能够研究一下。

  1.我想把整个出窗口分红3x3=9个网格,而后以网格布局的方式往里填内容,首先将“红方选手”、“第X轮”、“蓝方选手”分别放入第一行的3个网格中。

  网格布局须要用到addWidget函数,它的上图中的4个参数分别表明放置的空间、放置行数、放置的列数,上述3个控件分别放在第1行的1-3列。效果以下图所示:

  2.留出“剪刀石头布”图片展现位置,分别放置在第二行的1和3网格。

  第二行中间网格放置红蓝双方得分状况。

  这里须要注意一下,我在第二行第二个网格里又嵌入一个新的网格对象,将其分红1个1行3列的网格,其中第1个网格放红方得分,第二个网格放“VS”,第三个放蓝方得分。

  3.绑定“开始游戏”、“从新开始”信号槽

  用QpushButton建立“开始游戏”按钮,绑定gamestart函数(后续还会讲),并将该按钮放入第三行的第二个网格中。

  用QpushButton建立“从新开始”按钮,绑定restart函数(后续还会讲),并将该按钮放入第三行的第三个网格中。效果以下图所示:

  如今基本框架已经搭建好了。

第三步:信号槽绑定信号

  主要是针对开始游戏和从新开始游戏按钮绑定信号,下面给你们介绍一下上述的gamestart和restart函数。

1. gamestart函数

  1)游戏开始后,我须要随机从“剪刀”、“石头”、“布”三张图片中选出1张放置到相应位置,代码以下图所示:

  这里用了red和blue两个类,每次点击开始游戏按钮,都会调用该类,用random函数随机选出图片,并在相应位置展现。

  2)判断输赢,实时更新数据

  Gamestart下调用judge函数,判断得分,记录红方得分、蓝方得分、平局次数3个值,并用setText函数当即更新红方得分框、蓝方得分框及平局次数框的内容。

  最后,为了不游戏中不当心点击关闭窗口按钮,添加1个关闭事件,以下图所示。

  当点击右上角叉号时,会进行提示,效果以下图所示:

  到这里,这个小游戏就制做完毕了,界面比较简单,感兴趣的朋友能够继续开发更高级的功能。

/3 结语/

  本文基于PyQt5可视化界面,用PyQt5作个可视化的“剪刀石头布”小游戏,能够实现游戏轮次统计,双方得分、平局次数统计和从新开始功能,无论是1局决胜负,仍是三局两胜、七局三胜,都能完美解决。

  欢迎你们尝试,消耗在家的无聊时间本文涉及的代码都上传到了github地址上,后台回复“剪刀石头”五个字便可获取代码

------------------- End -------------------

往期精彩文章推荐:

欢迎你们点赞,留言,转发,转载,感谢你们的相伴与支持

想加入Python学习群请在后台回复【入群

万水千山老是情,点个【在看】行不行

/今日留言主题/

你通常喜欢玩什么游戏呢?