温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么在python中使用pyqt5实现一个24点小游戏

发布时间:2021-04-20 17:31:22 来源:亿速云 阅读:291 作者:Leah 栏目:开发技术

这期内容当中小编将会给大家带来有关怎么在python中使用pyqt5实现一个24点小游戏,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

python可以做什么

Python是一种编程语言,内置了许多有效的工具,Python几乎无所不能,该语言通俗易懂、容易入门、功能强大,在许多领域中都有广泛的应用,例如最热门的大数据分析,人工智能,Web开发等。

描述:一副牌中A、J、Q、K可以当成是1、11、12、13。任意抽取4张牌,用加、减、乘、除(可加括号)把牌面上的数算成24。每张牌对应的数字必须用一次且只能用一次。在规定时间内输入算式,输入正确加十分,输入错误生命值减一,点击确定提交并进入下一题,点击清空可清空算式。点击开始游戏进入游戏,可重新开始游戏。

from PyQt5 import QtCore, QtWidgets from PyQt5.QtWidgets import * from PyQt5.QtCore import QBasicTimer from PyQt5.QtGui import QPixmap import sys class Ui_Form(QWidget):  def setupUi(self,Form):   Form.setObjectName("Form")   Form.resize(946, 515)   self.pushButton = QtWidgets.QPushButton(Form)   self.pushButton.setGeometry(QtCore.QRect(70, 30, 131, 41))   self.pushButton.setObjectName("pushButton")   self.pushButton.clicked.connect(self.on_click1)   self.pushButton_4 = QtWidgets.QPushButton(Form)   self.pushButton_4.setGeometry(QtCore.QRect(280, 30, 131, 41))   self.pushButton_4.setObjectName("pushButton_4")   self.pushButton_4.clicked.connect(self.on_click4)   self.pushButton_4.setEnabled(False)   self.textEdit = QtWidgets.QTextEdit(Form)   self.textEdit.setGeometry(QtCore.QRect(700, 120, 191, 301))   self.textEdit.setObjectName("textEdit")   self.textEdit.setReadOnly(True)   self.label = QtWidgets.QLabel(Form)   self.label.setGeometry(QtCore.QRect(70, 300, 111, 31))   self.label.setObjectName("label")   self.lineEdit = QtWidgets.QLineEdit(Form)   self.lineEdit.setGeometry(QtCore.QRect(170, 300, 361, 31))   self.lineEdit.setObjectName("lineEdit")   self.lineEdit.setMaxLength(15)   self.label_2 = QtWidgets.QLabel(Form)   self.label_2.setGeometry(QtCore.QRect(70, 100, 101, 171))   self.label_2.setObjectName("label_2")   self.label_3 = QtWidgets.QLabel(Form)   self.label_3.setGeometry(QtCore.QRect(220, 100, 101, 171))   self.label_3.setObjectName("label_3")   self.label_4 = QtWidgets.QLabel(Form)   self.label_4.setGeometry(QtCore.QRect(370, 100, 101, 171))   self.label_4.setObjectName("label_4")   self.label_5 = QtWidgets.QLabel(Form)   self.label_5.setGeometry(QtCore.QRect(510, 100, 101, 171))   self.label_5.setObjectName("label_5")   self.pushButton_2 = QtWidgets.QPushButton(Form)   self.pushButton_2.setGeometry(QtCore.QRect(170, 360, 93, 28))   self.pushButton_2.setObjectName("pushButton_2")   self.pushButton_2.clicked.connect(self.on_click2)   self.pushButton_3 = QtWidgets.QPushButton(Form)   self.pushButton_3.setGeometry(QtCore.QRect(300, 360, 93, 28))   self.pushButton_3.setObjectName("pushButton_3")   self.pushButton_3.clicked.connect(self.on_click3)   self.progressBar = QtWidgets.QProgressBar(Form)   self.progressBar.setGeometry(QtCore.QRect(170, 430, 401, 21))   self.progressBar.setProperty("value", 0)   self.progressBar.setObjectName("progressBar")   self.timer = QBasicTimer()   self.step = 0   self.retranslateUi(Form)   QtCore.QMetaObject.connectSlotsByName(Form)  def retranslateUi(self, Form):   _translate = QtCore.QCoreApplication.translate   Form.setWindowTitle(_translate("Form", "24点游戏"))   self.pushButton.setText(_translate("Form", "开始游戏"))   self.pushButton_4.setText(_translate("Form", "重新开始"))   self.textEdit.setHtml(_translate("Form", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n" "<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n" "p, li { white-space: pre-wrap; }\n" "</style></head><body style=\" font-family:\'SimSun\'; font-size:9pt; font-weight:400; font-style:normal;\">\n" "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">规则:</p>\n" "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">一副牌中A、J、Q、K可以当成是1、11、12、13。任意抽取4张牌,用加、减、乘、除(可加括号)把牌面上的数算成24。每张牌对应的数字必须用一次且只能用一次。在规定时间内输入算式,输入正确加十分,输入错误生命值减一,点击确定提交并进入下一题,点击清空可清空算式。点击开始游戏进入游戏。</p></body></html>"))   self.label.setText(_translate("Form", "请输入算式:"))   self.label_2.setText(_translate("Form", ""))   self.label_3.setText(_translate("Form", ""))   self.label_4.setText(_translate("Form", ""))   self.label_5.setText(_translate("Form", ""))   self.pushButton_2.setText(_translate("Form", "确定"))   self.pushButton_3.setText(_translate("Form", "清空"))

以上为设置界面

import itertools import random   #已做题目数   self.question_number = 0   # 生命值   self.life = 3   # 分数   self.score = 0   # 重新开始标记   self.recover = 0  # 发牌器 随机抽取四个数字  def cardFun(self):   for i in range(4):    cardNum.append(int(random.random() * 100 % 13) + 1)   self.listSet = list(set(itertools.permutations(cardNum, 4)))   return self.listSet # 存放A(4,4)种排列方式的列表  # 显示四个数字对应的扑克牌  def cardCompute(self):   cardList = self.cardFun()   for i in range(len(cardList)):    self.cardGroup = cardList[i]   self.picture_1()   self.picture_2()   self.picture_3()   self.picture_4()  def fresh(self):   self.lineEdit.setText('')   self.cardFun()   self.cardCompute()   # 停止计时   self.progress_bar()   # 重新开始计时   self.step = 0   self.step = self.step + 1   self.progressBar.setValue(self.step)  # 开始游戏  def on_click1(self):   self.cardFun()   self.cardCompute()   self.progress_bar()   # 将开始游戏按钮设置为不可用   self.pushButton.setEnabled(False)   # 将重新开始游戏按钮设置为可用   self.pushButton_4.setEnabled(True)  # 确定提交  def on_click2(self):   # 已做题目数增加   self.question_number += 1   # 停止计时   self.timer.stop()   # 当做到最后一题   if self.question_number == 3:    self.recover = 1    # 获取输入算式    self.calstr = self.lineEdit.text()    # 如果所输入为空生命值减一    if self.calstr == "":     self.life -= 1    else:     # 计算所输入算式     self.result = int(eval(self.calstr))     # 如果正确加十分,错误生命值减一     if self.result == 24:      self.score += 10     else:      self.life -= 1    # 清空输入框    self.lineEdit.setText('')    # 弹出消息提示框    QMessageBox.information(self, "恭喜你", "答题结束\n您的生命值为" + str(self.life) + ",分数为" + str(self.score),          QMessageBox.Close)    # 设置确定和清空按钮为不可用    self.pushButton_2.setEnabled(False)    self.pushButton_3.setEnabled(False)   else:    self.calstr = self.lineEdit.text()    if self.calstr == "":     self.life -= 1     QMessageBox.information(self, "很遗憾", "算式输入不正确\n进入下一题", QMessageBox.Yes)     self.fresh()    else:     self.result = int(eval(self.calstr))     if self.result == 24:      self.score += 10      QMessageBox.information(self, "恭喜你", "算式输入正确\n进入下一题", QMessageBox.Yes)      self.fresh()     else:      self.life -= 1      QMessageBox.information(self, "很遗憾", "算式输入不正确\n进入下一题", QMessageBox.Yes)      self.fresh()  # 清空  def on_click3(self):   self.lineEdit.setText('')  #重新开始游戏  def on_click4(self):   # 初始化已做题数、生命值、分数、时间   self.question_number = 0   self.life = 3   self.score = 0   self.step = 0   self.timer.stop()   QMessageBox.information(self, "重新开始游戏", "生命值和分数已重置", QMessageBox.Yes)   if self.recover == 1:    self.pushButton_2.setEnabled(True)    self.pushButton_3.setEnabled(True)   self.cardFun()   self.cardCompute()   self.timer.start(600, self)   self.step = self.step + 1   self.progressBar.setValue(self.step)  # 使用一个计时器来启动进度条  def timerEvent(self, e):   # 如果时间到,则停止计时,已做题数加一   if self.step >= 100:    self.timer.stop()    self.question_number += 1    if self.question_number ==3:     self.recover = 1     self.calstr = self.lineEdit.text()     if self.calstr == "":      self.life -= 1     else:      self.result = int(eval(self.calstr))      if self.result == 24:       self.score += 10      else:       self.life -= 1     self.lineEdit.setText('')     # 弹出结果消息框     QMessageBox.information(self, "恭喜你", "答题结束\n您的生命值为"+str(self.life)+",分数为"+str(self.score), QMessageBox.Close)     self.pushButton_2.setEnabled(False)     self.pushButton_3.setEnabled(False)    else:     self.life -= 1     QMessageBox.information(self, "很遗憾", "规定时间已到\n进入下一题", QMessageBox.Yes)     self.fresh()     return   self.step = self.step + 1   self.progressBar.setValue(self.step)  # 进度条  def progress_bar(self):   if self.timer.isActive():    self.timer.stop()   else:    # 规定时间为1分钟    self.timer.start(600,self)  # 显示抽取的第一张牌  def picture_1(self):   if self.cardGroup[0] == 1:    self.label_2.setPixmap(QPixmap('./h2.png')) # 图片路径   elif self.cardGroup[0] == 2:    self.label_2.setPixmap(QPixmap('./h3.png'))   elif self.cardGroup[0] == 3:    self.label_2.setPixmap(QPixmap('./h4.png'))   elif self.cardGroup[0] == 4:    self.label_2.setPixmap(QPixmap('./h5.png'))   elif self.cardGroup[0] == 5:    self.label_2.setPixmap(QPixmap('./h6.png'))   elif self.cardGroup[0] == 6:    self.label_2.setPixmap(QPixmap('./h7.png'))   elif self.cardGroup[0] == 7:    self.label_2.setPixmap(QPixmap('./h7.png'))   elif self.cardGroup[0] == 5:    self.label_2.setPixmap(QPixmap('./h8.png'))   elif self.cardGroup[0] == 9:    self.label_2.setPixmap(QPixmap('./h9.png'))   elif self.cardGroup[0] == 10:    self.label_2.setPixmap(QPixmap('./h20.png'))   elif self.cardGroup[0] == 11:    self.label_2.setPixmap(QPixmap('./h21.png'))   elif self.cardGroup[0] == 12:    self.label_2.setPixmap(QPixmap('./h22.png'))   elif self.cardGroup[0] == 13:    self.label_2.setPixmap(QPixmap('./h23.png'))   # 将扑克牌填充整个标签   self.label_2.setScaledContents(True)  # 显示抽取的第二张牌  def picture_2(self):   if self.cardGroup[1] == 1:    self.label_3.setPixmap(QPixmap('./b1.png'))   elif self.cardGroup[1] == 2:    self.label_3.setPixmap(QPixmap('./b2.png'))   elif self.cardGroup[1] == 3:    self.label_3.setPixmap(QPixmap('./b3.png'))   elif self.cardGroup[1] == 4:    self.label_3.setPixmap(QPixmap('./b4.png'))   elif self.cardGroup[1] == 5:    self.label_3.setPixmap(QPixmap('./b5.png'))   elif self.cardGroup[1] == 6:    self.label_3.setPixmap(QPixmap('./b6.png'))   elif self.cardGroup[1] == 7:    self.label_3.setPixmap(QPixmap('./b7.png'))   elif self.cardGroup[1] == 5:    self.label_3.setPixmap(QPixmap('./b8.png'))   elif self.cardGroup[1] == 9:    self.label_3.setPixmap(QPixmap('./b9.png'))   elif self.cardGroup[1] == 10:    self.label_3.setPixmap(QPixmap('./b10.png'))   elif self.cardGroup[1] == 11:    self.label_3.setPixmap(QPixmap('./b11.png'))   elif self.cardGroup[1] == 12:    self.label_3.setPixmap(QPixmap('./b12.png'))   elif self.cardGroup[1] == 13:    self.label_3.setPixmap(QPixmap('./b13.png'))   self.label_3.setScaledContents(True)  # 显示抽取的第三张牌  def picture_3(self):   if self.cardGroup[2] == 1:    self.label_4.setPixmap(QPixmap('./f1.png'))   elif self.cardGroup[2] == 2:    self.label_4.setPixmap(QPixmap('./f2.png'))   elif self.cardGroup[2] == 3:    self.label_4.setPixmap(QPixmap('./f3.png'))   elif self.cardGroup[2] == 4:    self.label_4.setPixmap(QPixmap('./f4.png'))   elif self.cardGroup[2] == 5:    self.label_4.setPixmap(QPixmap('./f5.png'))   elif self.cardGroup[2] == 6:    self.label_4.setPixmap(QPixmap('./f6.png'))   elif self.cardGroup[2] == 7:    self.label_4.setPixmap(QPixmap('./f7.png'))   elif self.cardGroup[2] == 5:    self.label_4.setPixmap(QPixmap('./f8.png'))   elif self.cardGroup[2] == 9:    self.label_4.setPixmap(QPixmap('./f9.png'))   elif self.cardGroup[2] == 10:    self.label_4.setPixmap(QPixmap('./f10.png'))   elif self.cardGroup[2] == 11:    self.label_4.setPixmap(QPixmap('./f11.png'))   elif self.cardGroup[2] == 12:    self.label_4.setPixmap(QPixmap('./f12.png'))   elif self.cardGroup[2] == 13:    self.label_4.setPixmap(QPixmap('./f13.png'))   self.label_4.setScaledContents(True)  # 显示抽取的第四张牌  def picture_4(self):   if self.cardGroup[3] == 1:    self.label_5.setPixmap(QPixmap('./m1.png'))   elif self.cardGroup[3] == 2:    self.label_5.setPixmap(QPixmap('./m2.png'))   elif self.cardGroup[3] == 3:    self.label_5.setPixmap(QPixmap('./m3.png'))   elif self.cardGroup[3] == 4:    self.label_5.setPixmap(QPixmap('./m4.png'))   elif self.cardGroup[3] == 5:    self.label_5.setPixmap(QPixmap('./m5.png'))   elif self.cardGroup[3] == 6:    self.label_5.setPixmap(QPixmap('./m6.png'))   elif self.cardGroup[3] == 7:    self.label_5.setPixmap(QPixmap('./m7.png'))   elif self.cardGroup[3] == 5:    self.label_5.setPixmap(QPixmap('./m8.png'))   elif self.cardGroup[3] == 9:    self.label_5.setPixmap(QPixmap('./m9.png'))   elif self.cardGroup[3] == 10:    self.label_5.setPixmap(QPixmap('./m10.png'))   elif self.cardGroup[3] == 11:    self.label_5.setPixmap(QPixmap('./m11.png'))   elif self.cardGroup[3] == 12:    self.label_5.setPixmap(QPixmap('./m12.png'))   elif self.cardGroup[3] == 13:    self.label_5.setPixmap(QPixmap('./m13.png'))   self.label_5.setScaledContents(True) if __name__ == "__main__":  cardNum = [] # 存放随机牌组  cardGroup = () # 调用牌组  app = QtWidgets.QApplication(sys.argv)  Form = QtWidgets.QMainWindow()  ui = Ui_Form()  ui.setupUi(Form)  Form.show()  sys.exit(app.exec_())

上述就是小编为大家分享的怎么在python中使用pyqt5实现一个24点小游戏了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI