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

作者:白居不易1101 时间:2022-02-05 00:56:54 

描述:使用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实现窗口化猜数字游戏功能 ,网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

来源:https://www.cnblogs.com/heyangblog/p/11185010.html

标签:python3,pyQt5,QtDesignner,游戏
0
投稿

猜你喜欢

  • Golang极简入门教程(一):基本概念

    2024-04-26 17:20:46
  • Python中的上下文管理器相关知识详解

    2022-07-03 16:40:24
  • 对Web开发人员有用的8个网站小结

    2022-01-16 09:39:20
  • python装饰器三种装饰模式的简单分析

    2022-06-26 17:29:46
  • mysql设置指定ip远程访问连接实例

    2024-01-26 04:36:36
  • asp中通过addnew添加内容后取得当前文章的自递增ID的方法

    2011-02-05 11:05:00
  • 将Django项目部署到CentOs服务器中

    2021-07-30 20:11:11
  • Python离线安装包教程分享

    2023-08-03 18:16:40
  • Python中强大的命令行库click入门教程

    2023-05-01 04:24:09
  • pytorch 如何实现HWC转CHW

    2023-06-05 21:58:23
  • 详解微信小程序文件下载--视频和图片

    2023-08-10 16:38:50
  • xml文件调用css

    2008-09-05 17:12:00
  • GetPageSize和GetPageScroll:获取页面大小、窗口大小和滚动条位置

    2008-12-27 22:30:00
  • python opencv 读取本地视频文件 修改ffmpeg的方法

    2023-10-13 09:10:38
  • 用python写扫雷游戏实例代码分享

    2023-03-31 05:12:38
  • Python爬虫模拟登录带验证码网站

    2022-02-18 21:33:48
  • 如何使用Python在2秒内评估国际象棋位置详解

    2023-08-10 14:26:46
  • Python应用之利用pyecharts画中国地图

    2023-05-27 16:45:40
  • 一文详解Go语言fmt标准库的常用占位符使用

    2023-08-07 01:57:56
  • Python爬虫之线程池的使用

    2021-04-08 20:01:01
  • asp之家 网络编程 m.aspxhome.com