• pyqt5猜数游戏


    电脑随机生成4个互不相等的数,你猜。

    1:你猜的数和正确答案相比,位置正确的个数

    2:你猜的数虽然在正确答案中,但位置不对,它的个数。

    代码如下:

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    #
    import time
    import sys
    from random import randint
    from PyQt5.QtWidgets import QApplication,QWidget,QTableWidgetItem
    from guess import Ui_Form
    
    class myform(QWidget,Ui_Form):
        def __init__(self):
            super().__init__()
            self.setupUi(self)
            
            self.randin() #调用函数生成随机数,存入数组
            self.i=0   #计数器,计算是否满10次
            
            #各按钮点击事件
            self.btn0.clicked.connect(self.showNumber0)
            self.btn1.clicked.connect(self.showNumber1)
            self.btn2.clicked.connect(self.showNumber2)
            self.btn3.clicked.connect(self.showNumber3)
            self.btn4.clicked.connect(self.showNumber4)
            self.btn5.clicked.connect(self.showNumber5)
            self.btn6.clicked.connect(self.showNumber6)
            self.btn7.clicked.connect(self.showNumber7)
            self.btn8.clicked.connect(self.showNumber8)
            self.btn9.clicked.connect(self.showNumber9)
            
            self.btn_reset.clicked.connect(self.reset)
            self.btn_ok.clicked.connect(self.ok)
            self.play.clicked.connect(self.again)
    
        #生成4个随机数存入列表a中
        def randin(self):
            a=[]
            while(len(a)!=4):
                x=randint(0,9)
                if x not in a:
                    a.append(x)
            self.a=a
            
        #点击数字按钮,显示相应数字
        def showNumber0(self):
            self.btn0.setEnabled(False)
            if self.label1.text()=='':
                self.label1.setText('0')
            elif self.label2.text()=='': 
                self.label2.setText('0')
            elif self.label3.text()=='': 
                self.label3.setText('0')
            else:
                self.label4.setText('0')
                
        def showNumber1(self):
            self.btn1.setEnabled(False)
            if self.label1.text()=='':
                self.label1.setText('1')
            elif self.label2.text()=='': 
                self.label2.setText('1')
            elif self.label3.text()=='': 
                self.label3.setText('1')
            else:
                self.label4.setText('1')
                
        def showNumber2(self):
            self.btn2.setEnabled(False)
            if self.label1.text()=='':
                self.label1.setText('2')
            elif self.label2.text()=='': 
                self.label2.setText('2')
            elif self.label3.text()=='': 
                self.label3.setText('2')
            else:
                self.label4.setText('2')
                
        def showNumber3(self):
            self.btn3.setEnabled(False)
            if self.label1.text()=='':
                self.label1.setText('3')
            elif self.label2.text()=='': 
                self.label2.setText('3')
            elif self.label3.text()=='': 
                self.label3.setText('3')
            else:
                self.label4.setText('3')
                
        def showNumber4(self):
            self.btn4.setEnabled(False)
            if self.label1.text()=='':
                self.label1.setText('4')
            elif self.label2.text()=='': 
                self.label2.setText('4')
            elif self.label3.text()=='': 
                self.label3.setText('4')
            else:
                self.label4.setText('4')
                
        def showNumber5(self):
            self.btn5.setEnabled(False)
            if self.label1.text()=='':
                self.label1.setText('5')
            elif self.label2.text()=='': 
                self.label2.setText('5')
            elif self.label3.text()=='': 
                self.label3.setText('5')
            else:
                self.label4.setText('5')
                
        def showNumber6(self):
            self.btn6.setEnabled(False)
            if self.label1.text()=='':
                self.label1.setText('6')
            elif self.label2.text()=='': 
                self.label2.setText('6')
            elif self.label3.text()=='': 
                self.label3.setText('6')
            else:
                self.label4.setText('6')
                
        def showNumber7(self):
            self.btn7.setEnabled(False)
            if self.label1.text()=='':
                self.label1.setText('7')
            elif self.label2.text()=='': 
                self.label2.setText('7')
            elif self.label3.text()=='': 
                self.label3.setText('7')
            else:
                self.label4.setText('7')
                
        def showNumber8(self):
            self.btn8.setEnabled(False)
            if self.label1.text()=='':
                self.label1.setText('8')
            elif self.label2.text()=='': 
                self.label2.setText('8')
            elif self.label3.text()=='': 
                self.label3.setText('8')
            else:
                self.label4.setText('8')
                
        def showNumber9(self):
            self.btn9.setEnabled(False)
            if self.label1.text()=='':
                self.label1.setText('9')
            elif self.label2.text()=='': 
                self.label2.setText('9')
            elif self.label3.text()=='': 
                self.label3.setText('9')
            else:
                self.label4.setText('9')
                
        #重置按钮
        def reset(self):
            self.label1.setText('')
            self.label2.setText('')
            self.label3.setText('')
            self.label4.setText('')
            
            self.btn0.setEnabled(True)
            self.btn1.setEnabled(True)
            self.btn2.setEnabled(True)
            self.btn3.setEnabled(True)
            self.btn4.setEnabled(True)
            self.btn5.setEnabled(True)
            self.btn6.setEnabled(True)
            self.btn7.setEnabled(True)
            self.btn8.setEnabled(True)
            self.btn9.setEnabled(True)
    
        #显示正确答案
        def showNub(self):
                self.label5.setText(str(self.a[0]))
                self.label6.setText(str(self.a[1]))
                self.label7.setText(str(self.a[2]))
                self.label8.setText(str(self.a[3]))
                self.btn_ok.setEnabled(False)
    
        #再来一遍(清空各种内容)
        def again(self):
            self.reset()
            self.label5.setText('')
            self.label6.setText('')
            self.label7.setText('')
            self.label8.setText('')
            self.table.clearContents()
            self.btn_ok.setEnabled(True)
            self.label.setText('再来一遍')
            self.i=0
            
        #确定按钮,比较你猜的数和随机生成的数
        def ok(self):
    
            #把你猜的数存入列表b中
            b=[int(self.label1.text()),int(self.label2.text()),int(self.label3.text()),int(self.label4.text())]
    
            #把你猜的数显示在表格中。self.i表示第几行,
            x=QTableWidgetItem(str(b))
            self.table.setItem(self.i,0,x) #设置单元格中的内容
    
            #判断两个列表
            k1=0 #位置正确,计算个数
            k2=0 #数对位置不对,计算个数
            for j in range(4):
                if b[j]==self.a[j]:
                    k1+=1
                if b[j] in self.a and b[j]!=self.a[j]:
                    k2+=1
                    
            #把计算结果写显示在表格内
            x1=QTableWidgetItem(str(k1))
            self.table.setItem(self.i,1,x1)
            
            x2=QTableWidgetItem(str(k2))
            self.table.setItem(self.i,2,x2)
                    
            if b==self.a:
                self.showNub()
                self.label.setText('恭喜过关')
            
            #满10次未猜对显示正确答案
            if self.i==9 and b!=self.a:
                self.showNub()
                self.label.setText('闯关失败')
                
            self.i+=1
            self.reset()
    
    if __name__=='__main__':
        app=QApplication(sys.argv)
        w=myform()
        w.show()
        sys.exit(app.exec_())
        
  • 相关阅读:
    【Hadoop】HDFS笔记(一):Hadoop的RPC机制
    英文分句
    破解google翻译API全过程
    最大匹配算法 (Maximum Matching)
    【Html 学习笔记】第八节——表单实践
    【Html 学习笔记】第七节——表单
    【Html 学习笔记】第六节——列表
    Linux下第一次Node尝试
    【Html 学习笔记】第五节——表格
    C++并发低级接口:std::thread和std::promise
  • 原文地址:https://www.cnblogs.com/jmlovepython/p/5716033.html
Copyright © 2020-2023  润新知