描述:使用QtDesignner设计界面,pyQt5+python3实现主体方法制作的猜数字游戏。
游戏规则:先选择游戏等级:初级、中级、高级、魔鬼级,选择完游戏等级后点击“确定”,然后后台会自动生成一个与游戏等级匹配的“神秘数字”,游戏玩家在文本框内输入数字,再点击文本框旁边的“确定”,即可比较玩家所猜数字是否就是“神秘数字”。
游戏界面:
<tt-image data-tteditor-tag="tteditorTag" contenteditable="false" class="syl1563173603727" data-render-status="finished" data-syl-blot="image" style="box-sizing: border-box; cursor: text; color: rgb(34, 34, 34); font-family: "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", "Helvetica Neue", Arial, sans-serif; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: pre-wrap; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-style: initial; text-decoration-color: initial; display: block;"><input class="pgc-img-caption-ipt" placeholder="图片描述(最多50字)" value="" style="box-sizing: border-box; outline: 0px; color: rgb(102, 102, 102); position: absolute; left: 187.5px; transform: translateX(-50%); padding: 6px 7px; max-width: 100%; width: 375px; text-align: center; cursor: text; font-size: 12px; line-height: 1.5; background-color: rgb(255, 255, 255); background-image: none; border: 0px solid rgb(217, 217, 217); border-radius: 4px; transition: all 0.2s cubic-bezier(0.645, 0.045, 0.355, 1) 0s;"></tt-image>
源代码:Python资源共享群:484031800
代码1: guessNumberGame.py (界面代码)
<pre spellcheck="false" style="box-sizing: border-box; margin: 5px 0px; padding: 5px 10px; border: 0px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-weight: 400; font-stretch: inherit; font-size: 16px; line-height: inherit; font-family: inherit; vertical-align: baseline; cursor: text; counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; background-color: rgb(240, 240, 240); border-radius: 3px; white-space: pre-wrap; color: rgb(34, 34, 34); letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;"> 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", "再来一局"))
界面代码
</pre>
代码2: runG uess.py (方法主体代码)
<pre spellcheck="false" style="box-sizing: border-box; margin: 5px 0px; padding: 5px 10px; border: 0px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-weight: 400; font-stretch: inherit; font-size: 16px; line-height: inherit; font-family: inherit; vertical-align: baseline; cursor: text; counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; background-color: rgb(240, 240, 240); border-radius: 3px; white-space: pre-wrap; color: rgb(34, 34, 34); letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;"> 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_()) #使程序一直循环运行直到主窗口被关闭终止进程(如果没有这句话,程
</pre>
网友评论