基于python3 pyQt5 QtDesignner实现窗口化猜数字游戏功能


Posted in Python onJuly 15, 2019

描述:使用QtDesignner设计界面,pyQt5+python3实现主体方法制作的猜数字游戏。

游戏规则:先选择游戏等级:初级、中级、高级、魔鬼级,选择完游戏等级后点击“确定”,然后后台会自动生成一个与游戏等级匹配的“神秘数字”,游戏玩家在文本框内输入数字,再点击文本框旁边的“确定”,即可比较玩家所猜数字是否就是“神秘数字”。

游戏界面:

基于python3 pyQt5 QtDesignner实现窗口化猜数字游戏功能 

源代码:

代码1: guessNumberGame.py (界面代码)

# -*- coding: utf-8 -*- 
 # Form implementation generated from reading ui file 'guessNumberGame.ui'
 #
 # Created by: PyQt5 UI code generator 5.11.3
 #
 # WARNING! All changes made in this file will be lost! 
 from PyQt5 import QtCore, QtGui, QtWidgets
 class Ui_Form(object):
   def setupUi(self, Form):
     Form.setObjectName("Form")
     Form.resize(555, 463)
     self.label = QtWidgets.QLabel(Form)
     self.label.setGeometry(QtCore.QRect(40, 90, 181, 31))
     self.label.setObjectName("label")
     self.comboBox = QtWidgets.QComboBox(Form)
     self.comboBox.setGeometry(QtCore.QRect(230, 30, 171, 31))
     self.comboBox.setObjectName("comboBox")
     self.comboBox.addItem("")
     self.comboBox.addItem("")
     self.comboBox.addItem("")
     self.comboBox.addItem("")
     self.pushButton_2 = QtWidgets.QPushButton(Form)
     self.pushButton_2.setGeometry(QtCore.QRect(420, 30, 91, 31))
     self.pushButton_2.setObjectName("pushButton_2")
     self.pushButton = QtWidgets.QPushButton(Form)
     self.pushButton.setGeometry(QtCore.QRect(420, 90, 91, 31))
     self.pushButton.setObjectName("pushButton")
     self.textBrowser = QtWidgets.QTextBrowser(Form)
     self.textBrowser.setGeometry(QtCore.QRect(40, 151, 471, 201))
     self.textBrowser.setObjectName("textBrowser")
     self.lineEdit = QtWidgets.QLineEdit(Form)
     self.lineEdit.setGeometry(QtCore.QRect(230, 90, 171, 31))
     self.lineEdit.setObjectName("lineEdit")
     self.label_3 = QtWidgets.QLabel(Form)
     self.label_3.setGeometry(QtCore.QRect(40, 30, 181, 31))
     self.label_3.setObjectName("label_3")
     self.pushButton_3 = QtWidgets.QPushButton(Form)
     self.pushButton_3.setGeometry(QtCore.QRect(220, 380, 111, 41))
     font = QtGui.QFont()
     font.setFamily("Agency FB")
     font.setPointSize(12)
     self.pushButton_3.setFont(font)
     self.pushButton_3.setObjectName("pushButton_3")
     self.retranslateUi(Form)
     QtCore.QMetaObject.connectSlotsByName(Form)
   def retranslateUi(self, Form):
     _translate = QtCore.QCoreApplication.translate
     Form.setWindowTitle(_translate("Form", "猜数字游戏"))
     self.label.setText(_translate("Form", "<html><head/><body><p><span style=\" font-size:14pt;\">请猜一个数字:</span></p></body></html>"))
     self.comboBox.setItemText(0, _translate("Form", "初级:数字小于20"))
     self.comboBox.setItemText(1, _translate("Form", "中级:数字小于30"))
     self.comboBox.setItemText(2, _translate("Form", "高级:数字小于50"))
     self.comboBox.setItemText(3, _translate("Form", "魔鬼级:数字小于100"))
     self.pushButton_2.setText(_translate("Form", "确定"))
     self.pushButton.setText(_translate("Form", "确定"))
     self.label_3.setText(_translate("Form", "<html><head/><body><p><span style=\" font-size:14pt;\">请选择游戏难度:</span></p></body></html>"))
     self.pushButton_3.setText(_translate("Form", "再来一局"))

界面代码

代码2: runG uess.py (方法主体代码)

# -*- coding: utf-8 -*-
 import sys,random,time
 from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow
 from guessNumberGame import Ui_Form 
 times=1 #声明一个模块内的全局变量;用于记录猜数字的次数
 rand=20#声明一个模块内的全局变量;神秘数字的最大范围
 allTimes=7#声明一个模块内的全局变量;游戏最大次数
 class mwindow(QWidget, Ui_Form):
   def __init__(self): #初始化
     super(mwindow, self).__init__() #这是对继承自父类的属性进行初始化。而且是用父类的初始化方法来初始化继承的属性。
     self.setupUi(self)
   #定义一个方法:从下拉框选择游戏难度
   def gameLevel(self):
     times=1
     global rand,allTimes
     level=self.comboBox.currentIndex()
     if level==0:
       rand=20
       allTimes=7
     if level==1:
       rand=30
       allTimes=10
     if level==2:
       rand=50
       allTimes = 15
     if level==3:
       rand=100
       allTimes = 20
   #定义一个方法:选择游戏难度后生成一个随机的神秘数字
   def getRandNum(self):
     global theNum,times
     times=1      #每次选择游戏难度并点击“确定”后,已猜数字次数都重新归为1
     w.pushButton.setEnabled(True)  #设置pushButton可点击(即选择了游戏难度之后,pushButton才可点击)
     theNum=random.randint(1,rand)
     self.textBrowser.append('开始游戏吧,你有%d次机会,数字范围:1-%d' %(allTimes,rand))
     # self.textBrowser.append(str(theNum)) #直接显示神秘数字,用于调试时使用
   #定义一个方法:点击“确定”按钮的事件,用于比较所猜数字和神秘数字
   def guess(self):
     global allTimes,times #使用全局变量times
     yourNum = int(self.lineEdit.text()) #从文本框获取到输入的数字,并转化为int型
     if yourNum < theNum and times < allTimes:
       text = "你猜的数字%d小了!你还有%d次机会,再猜!" %(yourNum,allTimes-times)
       self.textBrowser.append(text)  #把提示信息写入textBrowser
       times += 1
     elif yourNum > theNum and times <allTimes:
       text = "你猜的数字%d大了!你还有%d次机会,再猜!" %(yourNum,allTimes-times)
       self.textBrowser.append(text)
       times += 1
     elif yourNum == theNum and times <allTimes:
       text = '你猜对了,就是%d,你一共猜了%s次!' % (theNum,times)
       self.textBrowser.append(text)
     else:
       text = '%d次机会用完了你也没猜对!神秘数字其实是:%d' %(allTimes,theNum)
       self.textBrowser.append(text)
   #定义一个方法:点击“再来一局”时触发的事件
   def reStart(self):
     self.textBrowser.clear() #清除textBrowser内的内容
     self.lineEdit.clear()   #清除lineEdit内的内容
     w.pushButton.setEnabled(False) #设置pushButton不可点击(即在选择游戏难度之前,pushButton不可点击)
 if __name__ == '__main__':
   app = QApplication(sys.argv)
   w = mwindow()
   w.pushButton.setEnabled(False) #设置pushButton不可点击(即在选择游戏难度之前,pushButton不可点击)
   w.pushButton.clicked.connect(w.guess)  #绑定guess方法
   w.pushButton_2.clicked.connect(w.getRandNum)
   w.comboBox.currentIndexChanged.connect(w.gameLevel)
   w.pushButton_3.clicked.connect(w.reStart)
   w.show()
   sys.exit(app.exec_()) #使程序一直循环运行直到主窗口被关闭终止进程(如果没有这句话,程序运行时会一闪而

总结

以上所述是小编给大家介绍的基于python3 pyQt5 QtDesignner实现窗口化猜数字游戏功能 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
python 数据加密代码
Dec 24 Python
python实现数通设备tftp备份配置文件示例
Apr 02 Python
Python中的条件判断语句基础学习教程
Feb 07 Python
Python2实现的LED大数字显示效果示例
Sep 04 Python
python利用selenium进行浏览器爬虫
Apr 25 Python
用python写一个定时提醒程序的实现代码
Jul 22 Python
python实现对列表中的元素进行倒序打印
Nov 23 Python
pyinstaller还原python代码过程图解
Jan 08 Python
Python使用Socket实现简单聊天程序
Feb 28 Python
python 日志 logging模块详细解析
Mar 31 Python
如何设置PyCharm中的Python代码模版(推荐)
Nov 20 Python
yolov5返回坐标的方法实例
Mar 17 Python
python 判断字符串中是否含有汉字或非汉字的实例
Jul 15 #Python
如何利用Python模拟GitHub登录详解
Jul 15 #Python
python中将两组数据放在一起按照某一固定顺序shuffle的实例
Jul 15 #Python
postman模拟访问具有Session的post请求方法
Jul 15 #Python
Django的models模型的具体使用
Jul 15 #Python
利用Python进行图像的加法,图像混合(附代码)
Jul 14 #Python
anaconda中更改python版本的方法步骤
Jul 14 #Python
You might like
PHP下的Oracle客户端扩展(OCI8)安装教程
2014/09/10 PHP
highchart数据源纵轴json内的值必须是int(详解)
2017/02/20 PHP
浅谈PHP表单提交(POST&amp;GET&amp;URL编/解码)
2017/04/03 PHP
php检查函数必传参数是否存在的实例详解
2017/08/28 PHP
使用composer 安装 laravel框架的方法图文详解
2019/08/02 PHP
JavaScript实现防止网页被嵌入Frame框架的代码分享
2014/12/29 Javascript
玩转JavaScript OOP - 类的实现详解
2016/06/08 Javascript
JQueryEasyUI之DataGrid数据显示
2016/11/23 Javascript
原生JavaScript实现AJAX、JSONP
2017/02/07 Javascript
深入学习nodejs中的async模块的使用方法
2017/07/12 NodeJs
windows系统下更新nodejs版本的方案
2017/11/24 NodeJs
垃圾回收器的相关知识点总结
2018/05/13 Javascript
vue+mousemove实现鼠标拖动功能(拖动过快失效问题解决方法)
2018/08/24 Javascript
深入理解JavaScript的值传递和引用传递
2018/10/24 Javascript
OpenLayer3自定义测量控件MeasureTool
2020/09/28 Javascript
vue中defineProperty和Proxy的区别详解
2020/11/30 Vue.js
[38:39]完美世界DOTA2联赛循环赛 IO vs GXR BO2第二场 11.04
2020/11/05 DOTA
操作Windows注册表的简单的Python程序制作教程
2015/04/07 Python
python snownlp情感分析简易demo(分享)
2017/06/04 Python
Python实现改变与矩形橡胶的线条的颜色代码示例
2018/01/05 Python
利用python如何处理nc数据详解
2018/05/23 Python
python解决字符串倒序输出的问题
2018/06/25 Python
python+opencv实现霍夫变换检测直线
2020/10/23 Python
python pytest进阶之xunit fixture详解
2019/06/27 Python
python动态进度条的实现代码
2019/07/03 Python
Python实现网页截图(PyQT5)过程解析
2019/08/12 Python
Python工程师必考的6个经典面试题
2020/06/28 Python
python简单利用字典破解zip文件口令
2020/09/07 Python
python 三种方法实现对Excel表格的读写
2020/11/19 Python
HTML5中通过li-canvas轻松实现单图、多图、圆角图绘制,单行文字、多行文字等
2018/11/30 HTML / CSS
CK加拿大官网:Calvin Klein加拿大
2020/03/14 全球购物
大学生优秀团员事迹材料
2014/01/30 职场文书
九年级数学教学反思
2014/02/02 职场文书
坚定理想信念心得体会
2014/03/11 职场文书
企业家王石演讲稿:坚持与放下
2014/04/27 职场文书
思想作风整顿个人剖析材料
2014/10/06 职场文书