基于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生成随机mac地址的方法
Mar 16 Python
python 3.5下xadmin的使用及修复源码bug
May 10 Python
Python 多进程并发操作中进程池Pool的实例
Nov 01 Python
在PyCharm下使用 ipython 交互式编程的方法
Jan 17 Python
python实现微信每日一句自动发送给喜欢的人
Apr 29 Python
django基于restframework的CBV封装详解
Aug 08 Python
如何在 Django 模板中输出 &quot;{{&quot;
Jan 24 Python
python序列类型种类详解
Feb 26 Python
python实现在内存中读写str和二进制数据代码
Apr 24 Python
python如何编写win程序
Jun 08 Python
python绘制箱型图
Apr 27 Python
Pandas数据结构之Series的使用
Mar 31 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 字符转义 注意事项
2009/05/27 PHP
PHP 创建文件(文件夹)以及目录操作代码
2010/03/04 PHP
PHP实现根据银行卡号判断银行
2015/04/29 PHP
Javascript基础知识(二)事件
2014/09/29 Javascript
js判断是否按下了Shift键的方法
2015/01/27 Javascript
深入理解JavaScript系列(46):代码复用模式(推荐篇)详解
2015/03/04 Javascript
javascript实现了照片拖拽点击置顶的照片墙代码
2015/04/03 Javascript
javascript中动态函数用法实例分析
2015/05/14 Javascript
javascript获取文档坐标和视口坐标
2015/05/26 Javascript
jquery实现触发时更新下拉列表内容的方法
2015/12/02 Javascript
Node.js模块封装及使用方法
2016/03/06 Javascript
JS控制FileUpload的上传文件类型实例代码
2016/10/07 Javascript
JS 实现可停顿的垂直滚动实例代码
2016/11/23 Javascript
nodeJS(express4.x)+vue(vue-cli)构建前后端分离实例(带跨域)
2017/07/05 NodeJs
关于Vue.nextTick()的正确使用方法浅析
2017/08/25 Javascript
Webpack打包字体font-awesome的方法示例
2018/04/26 Javascript
JS 实现获取验证码 倒计时功能
2018/10/29 Javascript
js前端如何写一个精确的倒计时代码
2019/10/25 Javascript
python中的代码编码格式转换问题
2015/06/10 Python
Python使用Mechanize模块编写爬虫的要点解析
2016/03/31 Python
influx+grafana自定义python采集数据和一些坑的总结
2018/09/17 Python
Python 基于jwt实现认证机制流程解析
2020/06/22 Python
Python常驻任务实现接收外界参数代码解析
2020/07/21 Python
利用HTML5的新特点实现图片文件异步上传
2014/05/29 HTML / CSS
轻化专业学生实习自我鉴定
2013/09/20 职场文书
优秀的自荐信要注意哪些
2014/01/03 职场文书
初中生物教学反思
2014/01/10 职场文书
重阳节登山活动方案
2014/02/03 职场文书
仓库主管岗位职责
2014/03/02 职场文书
公共场所禁烟标语
2014/06/25 职场文书
医德医风个人工作总结2014
2014/11/14 职场文书
2014年校务公开工作总结
2014/12/18 职场文书
涨价通知怎么写
2015/04/23 职场文书
党支部季度考核意见
2015/06/02 职场文书
退休职工欢送会致辞
2015/08/01 职场文书
MySQL count(*)统计总数问题汇总
2022/09/23 MySQL