python3+pyQt5+QtDesignner实现窗口化猜数字游戏

描述:使用QtDesignner设计界面,pyQt5+python3实现主体方法制作的猜数字游戏。

游戏规则:先选择游戏等级:初级、中级、高级、魔鬼级,选择完游戏等级后点击“确定”,然后后台会自动生成一个与游戏等级匹配的“神秘数字”,游戏玩家在文本框内输入数字,再点击文本框旁边的“确定”,即可比较玩家所猜数字是否就是“神秘数字”。

游戏界面

源代码:

代码1:guessNumberGame.py (界面代码)

 1 # -*- coding: utf-8 -*-
 2
 3 # Form implementation generated from reading ui file ‘guessNumberGame.ui‘
 4 #
 5 # Created by: PyQt5 UI code generator 5.11.3
 6 #
 7 # WARNING! All changes made in this file will be lost!
 8
 9 from PyQt5 import QtCore, QtGui, QtWidgets
10
11 class Ui_Form(object):
12     def setupUi(self, Form):
13         Form.setObjectName("Form")
14         Form.resize(555, 463)
15         self.label = QtWidgets.QLabel(Form)
16         self.label.setGeometry(QtCore.QRect(40, 90, 181, 31))
17         self.label.setObjectName("label")
18         self.comboBox = QtWidgets.QComboBox(Form)
19         self.comboBox.setGeometry(QtCore.QRect(230, 30, 171, 31))
20         self.comboBox.setObjectName("comboBox")
21         self.comboBox.addItem("")
22         self.comboBox.addItem("")
23         self.comboBox.addItem("")
24         self.comboBox.addItem("")
25         self.pushButton_2 = QtWidgets.QPushButton(Form)
26         self.pushButton_2.setGeometry(QtCore.QRect(420, 30, 91, 31))
27         self.pushButton_2.setObjectName("pushButton_2")
28         self.pushButton = QtWidgets.QPushButton(Form)
29         self.pushButton.setGeometry(QtCore.QRect(420, 90, 91, 31))
30         self.pushButton.setObjectName("pushButton")
31         self.textBrowser = QtWidgets.QTextBrowser(Form)
32         self.textBrowser.setGeometry(QtCore.QRect(40, 151, 471, 201))
33         self.textBrowser.setObjectName("textBrowser")
34         self.lineEdit = QtWidgets.QLineEdit(Form)
35         self.lineEdit.setGeometry(QtCore.QRect(230, 90, 171, 31))
36         self.lineEdit.setObjectName("lineEdit")
37         self.label_3 = QtWidgets.QLabel(Form)
38         self.label_3.setGeometry(QtCore.QRect(40, 30, 181, 31))
39         self.label_3.setObjectName("label_3")
40         self.pushButton_3 = QtWidgets.QPushButton(Form)
41         self.pushButton_3.setGeometry(QtCore.QRect(220, 380, 111, 41))
42         font = QtGui.QFont()
43         font.setFamily("Agency FB")
44         font.setPointSize(12)
45         self.pushButton_3.setFont(font)
46         self.pushButton_3.setObjectName("pushButton_3")
47
48         self.retranslateUi(Form)
49         QtCore.QMetaObject.connectSlotsByName(Form)
50
51     def retranslateUi(self, Form):
52         _translate = QtCore.QCoreApplication.translate
53         Form.setWindowTitle(_translate("Form", "猜数字游戏"))
54         self.label.setText(_translate("Form", "<html><head/><body><p><span style=\" font-size:14pt;\">请猜一个数字:</span></p></body></html>"))
55         self.comboBox.setItemText(0, _translate("Form", "初级:数字小于20"))
56         self.comboBox.setItemText(1, _translate("Form", "中级:数字小于30"))
57         self.comboBox.setItemText(2, _translate("Form", "高级:数字小于50"))
58         self.comboBox.setItemText(3, _translate("Form", "魔鬼级:数字小于100"))
59         self.pushButton_2.setText(_translate("Form", "确定"))
60         self.pushButton.setText(_translate("Form", "确定"))
61         self.label_3.setText(_translate("Form", "<html><head/><body><p><span style=\" font-size:14pt;\">请选择游戏难度:</span></p></body></html>"))
62         self.pushButton_3.setText(_translate("Form", "再来一局"))

界面代码

代码2runGuess.py (方法主体代码)

 1 # -*- coding: utf-8 -*-
 2 import sys,random,time
 3 from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow
 4 from guessNumberGame import Ui_Form
 5
 6 times=1 #声明一个模块内的全局变量;用于记录猜数字的次数
 7 rand=20#声明一个模块内的全局变量;神秘数字的最大范围
 8 allTimes=7#声明一个模块内的全局变量;游戏最大次数
 9 class mwindow(QWidget, Ui_Form):
10     def __init__(self): #初始化
11         super(mwindow, self).__init__()  #这是对继承自父类的属性进行初始化。而且是用父类的初始化方法来初始化继承的属性。
12         self.setupUi(self)
13     #定义一个方法:从下拉框选择游戏难度
14     def gameLevel(self):
15         times=1
16         global rand,allTimes
17         level=self.comboBox.currentIndex()
18         if level==0:
19             rand=20
20             allTimes=7
21         if level==1:
22             rand=30
23             allTimes=10
24         if level==2:
25             rand=50
26             allTimes = 15
27         if level==3:
28             rand=100
29             allTimes = 20
30
31     #定义一个方法:选择游戏难度后生成一个随机的神秘数字
32     def getRandNum(self):
33         global theNum,times
34         times=1           #每次选择游戏难度并点击“确定”后,已猜数字次数都重新归为1
35         w.pushButton.setEnabled(True)   #设置pushButton可点击(即选择了游戏难度之后,pushButton才可点击)
36         theNum=random.randint(1,rand)
37         self.textBrowser.append(‘开始游戏吧,你有%d次机会,数字范围:1-%d‘ %(allTimes,rand))
38         # self.textBrowser.append(str(theNum)) #直接显示神秘数字,用于调试时使用
39
40     #定义一个方法:点击“确定”按钮的事件,用于比较所猜数字和神秘数字
41     def guess(self):
42         global allTimes,times #使用全局变量times
43         yourNum = int(self.lineEdit.text()) #从文本框获取到输入的数字,并转化为int型
44         if yourNum < theNum and times < allTimes:
45             text = "你猜的数字%d小了!你还有%d次机会,再猜!" %(yourNum,allTimes-times)
46             self.textBrowser.append(text)   #把提示信息写入textBrowser
47             times += 1
48         elif yourNum > theNum and times <allTimes:
49             text =  "你猜的数字%d大了!你还有%d次机会,再猜!" %(yourNum,allTimes-times)
50             self.textBrowser.append(text)
51             times += 1
52         elif yourNum == theNum and times <allTimes:
53             text = ‘你猜对了,就是%d,你一共猜了%s次!‘ % (theNum,times)
54             self.textBrowser.append(text)
55         else:
56             text = ‘%d次机会用完了你也没猜对!神秘数字其实是:%d‘ %(allTimes,theNum)
57             self.textBrowser.append(text)
58
59     #定义一个方法:点击“再来一局”时触发的事件
60     def reStart(self):
61         self.textBrowser.clear()  #清除textBrowser内的内容
62         self.lineEdit.clear()     #清除lineEdit内的内容
63         w.pushButton.setEnabled(False)  #设置pushButton不可点击(即在选择游戏难度之前,pushButton不可点击)
64
65 if __name__ == ‘__main__‘:
66     app = QApplication(sys.argv)
67     w = mwindow()
68     w.pushButton.setEnabled(False)  #设置pushButton不可点击(即在选择游戏难度之前,pushButton不可点击)
69     w.pushButton.clicked.connect(w.guess)   #绑定guess方法
70     w.pushButton_2.clicked.connect(w.getRandNum)
71     w.comboBox.currentIndexChanged.connect(w.gameLevel)
72     w.pushButton_3.clicked.connect(w.reStart)
73     w.show()
74     sys.exit(app.exec_()) #使程序一直循环运行直到主窗口被关闭终止进程(如果没有这句话,程序运行时会一闪而过)

原文地址:https://www.cnblogs.com/heyangblog/p/11185010.html

时间: 2024-10-07 05:12:11

python3+pyQt5+QtDesignner实现窗口化猜数字游戏的相关文章

python3.3使用tkinter实现猜数字游戏代码

发布时间:2014-06-18   编辑:www.jbxue.com 原文地址:http://www.jbxue.com/article/python/22152.html python3.3使用tkinter开发猜数字游戏的例子,python3.3中tkinter的使用方法. 本节脚本小编分享一例ython3.3中tkinter开发猜数字小游戏的代码. 例子,python3.3中tkinter实例. 复制代码代码示例: # -*- coding: utf-8 -*-import tkinter

猜数字游戏的实现(Python3.5)

最近实现了一个猜数字的游戏,用python写的,本人python技术很渣,在不断百度的情况下,总算完成了这个猜数字的游戏,写上一点心得,也许以后有用. 猜数字游戏规则特别简单,就是用户猜一个4位数字,如果位置正确则记为A,数字正确则记为B(例如:被猜数字1234,用户输入了1456:则返回1A1B) 首先,我定义了一个猜数字的大类,写入了初始化方法后,加了一个生成4位不重复数字的方法,具体逻辑是这样:首先生成一个10位不重复的序列,然后利用List的pop方法,返回结果,然后把每个结果用字符串累

Python3基础学习-while循环实例- 猜数字游戏

需求: 猜数字游戏, 要求如下: 给个数字, 比如是66. 让用户一直猜,直到猜对退出. 中间输入q或Q也能退出 如果猜大了,提示用户猜小一点; 如果猜小了,提示用户猜大一点; likely = 66 while True: guest_num = input("请输入你猜测的数字[q|Q退出]: ") if guest_num.upper() == "Q": break elif int(guest_num) > likely: print("你猜

JavaScript一个猜数字游戏

效果图: 代码: <body> <script type="text/javascript"> window.onload = newgame; //页面载入的时候就开始一个新的游戏 window.onpopstate = popState; //处理历史记录相关事件 var state,ui; //全局变量,在newgame()方法中会对其初始化 function newgame( playagin ){ //开始一个新的猜数字游戏 //初始化一个包含需要的文

猜数字游戏及rand()函数

#include<stdio.h>#include<stdlib.h>int main() { short number; short guess=0; number=rand()%100; number++; printf("猜数字游戏\n"); printf("该数字在1到100之间\n"); while(guess!=number) { printf("请你输入所猜数字:"); scanf("%hd&quo

原创Android游戏--猜数字游戏V1.1 --数据存储,Intent,SimpleAdapter的学习与应用

--------------------------------------------------------------- V0.1版本 上次做完第一个版本后,发现还有一些漏洞,并且还有一些可以添加的功能,以及一些可改进的地方,于是准备继续完善此游戏,顺便学Android了. 本次更新信息如下: 1.改正了随机数生成算法,更正了不能产生数字'9'的bug 2.增加了数据存储与IO的内容,使用了SharedPreferences保存数据 3.保存数据为: 总盘数,猜中的盘数 4.使用了Simp

*循环-20. 猜数字游戏

1 /* 2 * Main.c 3 * C20-循环-20. 猜数字游戏 4 * Created on: 2014年8月18日 5 * Author: Boomkeeper 6 *********测试部分通过********* 7 */ 8 9 #include <stdio.h> 10 11 int main(void){ 12 13 int random = 0,N = 0;//系统输入的随机数和最大猜测次数 14 int in = 0;//每次输入的猜测 15 int count = 0

猜数字 游戏

前几天一直做的一个小游戏,猜数字游戏,开始不会做,通过老师的帮助还是成功做出来了,也算小有成就了,嘿嘿. 下面给大家看看我做的这个小游戏: public class GuessNumber { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("\t****** 猜数字 ******\n"); System.out.println("

Python实现简单的猜数字游戏

Python实现简单的猜数字游戏,具体如下: 随机生成一个1-10之间的数字,让用户来猜,当猜错时,会提示猜的数字是大还是小了,直到用户猜对为止. import random secret = random.randint(1,10) #print(secret) print('------猜数字游戏!-----') guess = 0 while guess != secret: temp = input('猜数字游戏开始,请输入数字:') guess = int(temp) if guess