基于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 开发Activex组件方法
Nov 08 Python
Python实现抓取网页并且解析的实例
Sep 20 Python
使用grappelli为django admin后台添加模板
Nov 18 Python
Python读写配置文件的方法
Jun 03 Python
基于Python实现一个简单的银行转账操作
Mar 06 Python
python如何查看系统网络流量的信息
Sep 12 Python
python matplotlib坐标轴设置的方法
Dec 05 Python
使用实现pandas读取csv文件指定的前几行
Apr 20 Python
详解PyCharm安装MicroPython插件的教程
Jun 24 Python
tensorflow之变量初始化(tf.Variable)使用详解
Feb 06 Python
一些关于python 装饰器的个人理解
Aug 31 Python
python实现企业微信定时发送文本消息的实例代码
Nov 25 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中mkdir函数用法实例分析
2014/11/15 PHP
支持png透明图片的php生成缩略图类分享
2015/02/08 PHP
php实现单笔转账到支付宝功能
2018/10/09 PHP
centos7上编译安装php7以php-fpm方式连接apache
2018/11/08 PHP
基于Jquery的温度计动画效果
2010/06/18 Javascript
web基于浏览器的本地存储方法应用
2012/11/27 Javascript
JavaScript去除空格的三种方法(正则/传参函数/trim)
2013/02/06 Javascript
JS Pro-深入面向对象的程序设计之继承的详解
2013/05/07 Javascript
jquery 获取表单元素里面的值示例代码
2013/07/28 Javascript
js实现漂浮回顶部按钮实例
2015/05/06 Javascript
jquery模拟进度条实现方法
2015/08/03 Javascript
javascript将DOM节点添加到文档的方法实例分析
2015/08/04 Javascript
javascript类型系统_正则表达式RegExp类型详解
2016/06/24 Javascript
JavaScript中push(),join() 函数 实例详解
2016/09/06 Javascript
提高Web性能的前端优化技巧总结
2017/02/27 Javascript
canvas仿iwatch时钟效果
2017/03/06 Javascript
JS脚本实现网页自动秒杀点击
2018/01/11 Javascript
javascript对HTML字符转义与反转义
2018/12/13 Javascript
详解Vue 如何监听Array的变化
2019/06/06 Javascript
vue之a-table中实现清空选中的数据
2019/11/07 Javascript
vue(2.x,3.0)配置跨域代理
2019/11/27 Javascript
一篇文章带你使用Typescript封装一个Vue组件(简单易懂)
2020/06/05 Javascript
JS寄快递地址智能解析的实现代码
2020/07/16 Javascript
[01:54]胎教DOTA2 准妈妈玩家现身中国区预选赛
2016/06/26 DOTA
Python使用os.listdir()和os.walk()获取文件路径与文件下所有目录的方法
2019/04/01 Python
联想西班牙官网:Lenovo西班牙
2018/08/28 全球购物
武汉英思工程科技有限公司&ndash;ORACLE面试测试题目
2012/04/30 面试题
linux面试题参考答案(7)
2014/07/24 面试题
大专生自我鉴定范文
2013/10/01 职场文书
大学毕业生文采飞扬的自我鉴定
2013/12/03 职场文书
医务工作者先进事迹材料
2014/01/26 职场文书
婚礼主持结束词
2014/03/13 职场文书
网络编辑求职信
2014/04/30 职场文书
公司离职证明标准样本
2014/10/05 职场文书
小石潭记导游词
2015/02/03 职场文书
PHP中国际化的字符串排序和比较对象详解
2021/08/23 PHP