基于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执行等待程序直到第二天零点的方法
Apr 23 Python
python中argparse模块用法实例详解
Jun 03 Python
Django 多语言教程的实现(i18n)
Jul 07 Python
python 读写文件,按行修改文件的方法
Jul 12 Python
Python字典的核心底层原理讲解
Jan 24 Python
树莓派实现移动拍照
Jun 22 Python
Python使用itchat模块实现简单的微信控制电脑功能示例
Aug 26 Python
python查看数据类型的方法
Oct 12 Python
解决springboot yml配置 logging.level 报错问题
Feb 21 Python
使用 pytorch 创建神经网络拟合sin函数的实现
Feb 24 Python
Python实现Wordcloud生成词云图的示例
Mar 30 Python
Python集合的基础操作
Nov 01 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 正则 过滤html 的超链接
2009/06/02 PHP
php检查是否是ajax请求的方法
2015/04/16 PHP
php获取客户端IP及URL的方法示例
2017/02/03 PHP
JavaScript中令你抓狂的魔术变量
2006/11/30 Javascript
javascript获取鼠标位置部分的实例代码(兼容IE,FF)
2013/08/05 Javascript
JavaScript学习小结(一)——JavaScript入门基础
2015/09/02 Javascript
学习JavaScript设计模式(封装)
2015/11/26 Javascript
JS组件Bootstrap Table表格多行拖拽效果实现代码
2015/12/08 Javascript
js只执行1次的函数示例
2016/07/20 Javascript
Javascript 实现简单计算器实例代码
2016/10/23 Javascript
概述一个页面从输入URL到页面加载完的过程
2016/12/16 Javascript
使用UrlConnection实现后台模拟http请求的简单实例
2017/01/04 Javascript
jQuery异步提交表单实例
2017/05/30 jQuery
封装运动框架实战左右与上下滑动的焦点轮播图(实例)
2017/10/17 Javascript
浅析node应用的timing-attack安全漏洞
2018/02/28 Javascript
解决vue中无法动态修改jqgrid组件 url地址的问题
2018/03/01 Javascript
javascript使用substring实现的展开与收缩文字功能示例
2019/06/17 Javascript
浅谈JS中this在各个场景下的指向
2019/08/14 Javascript
Element Dialog对话框的使用示例
2020/07/26 Javascript
[01:09]DOTA2次级职业联赛 - 99战队宣传片
2014/12/01 DOTA
[00:09]DOTA2新版本PA至宝特效动作展示
2014/11/19 DOTA
在Python中定义和使用抽象类的方法
2016/06/30 Python
1 行 Python 代码快速实现 FTP 服务器
2018/01/25 Python
Python selenium实现微博自动登录的示例代码
2018/05/16 Python
Python推导式简单示例【列表推导式、字典推导式与集合推导式】
2018/12/04 Python
详解Python3 对象组合zip()和回退方式*zip
2019/05/15 Python
python读出当前时间精度到秒的代码
2019/07/05 Python
解决pycharm不能自动补全第三方库的函数和属性问题
2020/03/12 Python
python进度条显示-tqmd模块的实现示例
2020/08/23 Python
python opencv实现简易画图板
2020/08/27 Python
优秀大学生的自我评价
2014/01/16 职场文书
槐乡的孩子教学反思
2014/04/27 职场文书
优秀毕业生求职信
2014/06/05 职场文书
巴黎圣母院读书笔记
2015/06/26 职场文书
Python基础知识之变量的详解
2021/04/14 Python
html原生table实现合并单元格以及合并表头的示例代码
2023/05/07 HTML / CSS