pyqt5基础教程(四),制作猜数字小游戏

废话少说先上图。

 

重置游戏,生成新的随机数

直接上代码

from PyQt5.QtWidgets import *
from PyQt5.QtGui import QIcon,QPixmap
import sys, random, re


class Gameapp(QMainWindow):
    count=0
    num = random.randrange(1, 101)
    def __init__(self):
        super().__init__()
        self.ma = QWidget()
        self.ma.setGeometry(400, 300, 400, 300)
        self.ma.resize(400, 300)
        self.ma.setFixedSize(400, 300)
        self.ma.setWindowTitle('猜数字游戏')
        self.ma.setWindowIcon(QIcon('logo.png'))
        self.creat_widgets()
        self.config()
        self.ma.show()

    def creat_widgets(self):
        self.Qmessage = QLabel('电脑随机出个1-100的数字,猜一猜', self.ma)
        self.Lcom = QLabel('电脑:', self.ma)
        self.Lcom.setGeometry(10, 50, 60, 30)
        self.Luser = QLabel('猜测次数:', self.ma)
        self.Luser.setGeometry(200, 50, 80, 30)
        self.ComLcd = QLabel(self.ma)
        self.ComLcd.setGeometry(60, 50, 168, 168)
        self.UserLcd = QLCDNumber(self.ma)
        self.UserLcd.setGeometry(280, 50, 70, 35)
        self.Qmessage.setGeometry(10, 10, 300, 30)
        self.Bguess = QPushButton('开始', self.ma)
        self.Bguess.setGeometry(10, 230, 100, 45)
        self.Bres = QPushButton('RES', self.ma)
        self.Bres.setGeometry(120, 230, 45, 45)
        self.Lresult = QLabel(self.ma)
        self.Lresult.setGeometry(190, 230, 180, 30)
        self.Enum = QLineEdit(self.ma)
        self.Enum.setGeometry(10, 190, 100, 30)

    def config(self):
        self.Bguess.clicked.connect(self.validate)
        self.Bres.clicked.connect(self.restart)

    def show_pics(self,pic_index):
        imgName=''
        if pic_index=='1':
            imgName='D:/spiders_python/猜数字小游戏/big.png'
        elif pic_index=='2':
            imgName='D:/spiders_python/猜数字小游戏/small.png'
        elif pic_index == '3':
            imgName = 'D:/spiders_python/猜数字小游戏/yes.png'
        jpg = QPixmap(imgName)
        self.ComLcd.setPixmap(jpg)

    def show_msg(self,num1,num2):
        msg = ()
        usernum,comnum=num1,num2
        if usernum > comnum:
            msg = ('太大', '1')
            # print(msg)
            self.show_pics(msg[1])
            return msg
        elif usernum < comnum:
            msg = ('太小', '2')
            # print(msg)
            self.show_pics(msg[1])
            return msg
        elif usernum == comnum:
            msg = ('太棒了', '3')
            # print(msg)
            self.show_pics(msg[1])
            return msg

    def restart(self):
        self.count=0
        self.num=random.randrange(1,101)

    def validate(self):
            self.count+=1
            if not re.match('\d+', self.Enum.text()):#如果是非数字
                QMessageBox.warning(self.ma, '我只能呵呵了', '输入数字,本程序会自动清楚非数字字符')
            usernum = int(''.join(list(filter(str.isdigit, self.Enum.text()))).strip())
            comnum=self.num
            self.Enum.setText(str(usernum))
            self.Lresult.setText('输入的:{}'.format(str(usernum)))
            if usernum>100:
                QMessageBox.warning(self.ma, '啊偶', '请输入1-100之间的数字')
            else:
                msg=self.show_msg(usernum,comnum)
                self.Lresult.setText('输入的:{},{}'.format(str(usernum), msg[0]))
                self.UserLcd.display(str(self.count))
                if int(self.count) > 10:
                    QMessageBox.information(self.ma, '提示', '您需要休息一下了')



if __name__ == '__main__':
    s = QApplication(sys.argv)
    ui = Gameapp()
    sys.exit(s.exec_())

有兴趣的可以运行玩一下。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值