基于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 tkinter模块中类继承的三种方式分析
Aug 08 Python
Python+Socket实现基于TCP协议的客户与服务端中文自动回复聊天功能示例
Aug 31 Python
浅谈Django中view对数据库的调用方法
Jul 18 Python
Python3 pandas 操作列表实例详解
Sep 23 Python
Python实现串口通信(pyserial)过程解析
Sep 25 Python
pytorch 模拟关系拟合——回归实例
Jan 14 Python
Python基于Dlib的人脸识别系统的实现
Feb 26 Python
Django 删除upload_to文件的步骤
Mar 30 Python
4行Python代码生成图像验证码(2种)
Apr 07 Python
从0到1使用python开发一个半自动答题小程序的实现
May 12 Python
如何基于pandas读取csv后合并两个股票
Sep 25 Python
Python调用JavaScript代码的方法
Oct 27 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 数组使用详解 推荐
2011/06/02 PHP
20个PHP常用类库小结
2011/09/11 PHP
nginx+php-fpm配置文件的组织结构介绍
2012/11/07 PHP
CMS中PHP判断系统是否已经安装的方法示例
2014/07/26 PHP
php通过baihui网API实现读取word文档并展示
2015/06/22 PHP
PHP微信开发之二维码生成类
2015/06/26 PHP
php验证码的制作思路和实现方法
2015/11/12 PHP
详解PHP的Yii框架中日志的相关配置及使用
2015/12/08 PHP
php 命名空间(namespace)原理与用法实例小结
2019/11/13 PHP
对象特征检测法判断浏览器对javascript对象的支持
2009/07/25 Javascript
JQuery小知识
2010/10/15 Javascript
Js+Jq获取URL参数的集中方法示例代码
2014/05/20 Javascript
在JavaScript中处理字符串之fontcolor()方法的使用
2015/06/08 Javascript
使用jQuery mobile库检测url绝对地址和相对地址的方法
2015/12/04 Javascript
javascript事件处理模型实例说明
2016/05/31 Javascript
jquery对所有input type=text的控件赋值实现方法
2016/12/02 Javascript
Bootstrap源码解读标签、徽章、缩略图和警示框(8)
2016/12/26 Javascript
TypeScript入门-基本数据类型
2017/03/28 Javascript
详解Angular-Cli中引用第三方库
2017/05/21 Javascript
javascript数组去重方法总结(推荐)
2019/03/20 Javascript
vue中datepicker的使用教程实例代码详解
2019/07/08 Javascript
vue获取验证码倒计时组件
2019/08/26 Javascript
vue3.0 自适应不同分辨率电脑的操作
2021/02/06 Vue.js
[46:02]DOTA2上海特级锦标赛D组资格赛#2 Liquid VS VP第二局
2016/02/28 DOTA
python脚本实现查找webshell的方法
2014/07/31 Python
Python基于smtplib实现异步发送邮件服务
2015/05/28 Python
将TensorFlow的模型网络导出为单个文件的方法
2018/04/23 Python
使用sklearn之LabelEncoder将Label标准化的方法
2018/07/11 Python
Python 进程操作之进程间通过队列共享数据,队列Queue简单示例
2019/10/11 Python
Python Django框架防御CSRF攻击的方法分析
2019/10/18 Python
python opencv实现图片缺陷检测(讲解直方图以及相关系数对比法)
2020/04/07 Python
python3.7+selenium模拟淘宝登录功能的实现
2020/05/26 Python
新书吧创业计划书
2014/01/31 职场文书
活动总结模板
2014/05/09 职场文书
公司2014年度工作总结
2014/12/10 职场文书
活动主持人开场白
2015/05/28 职场文书