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('')
elif self.label2.text()=='':
self.label2.setText('')
elif self.label3.text()=='':
self.label3.setText('')
else:
self.label4.setText('') def showNumber1(self):
self.btn1.setEnabled(False)
if self.label1.text()=='':
self.label1.setText('')
elif self.label2.text()=='':
self.label2.setText('')
elif self.label3.text()=='':
self.label3.setText('')
else:
self.label4.setText('') def showNumber2(self):
self.btn2.setEnabled(False)
if self.label1.text()=='':
self.label1.setText('')
elif self.label2.text()=='':
self.label2.setText('')
elif self.label3.text()=='':
self.label3.setText('')
else:
self.label4.setText('') def showNumber3(self):
self.btn3.setEnabled(False)
if self.label1.text()=='':
self.label1.setText('')
elif self.label2.text()=='':
self.label2.setText('')
elif self.label3.text()=='':
self.label3.setText('')
else:
self.label4.setText('') def showNumber4(self):
self.btn4.setEnabled(False)
if self.label1.text()=='':
self.label1.setText('')
elif self.label2.text()=='':
self.label2.setText('')
elif self.label3.text()=='':
self.label3.setText('')
else:
self.label4.setText('') def showNumber5(self):
self.btn5.setEnabled(False)
if self.label1.text()=='':
self.label1.setText('')
elif self.label2.text()=='':
self.label2.setText('')
elif self.label3.text()=='':
self.label3.setText('')
else:
self.label4.setText('') def showNumber6(self):
self.btn6.setEnabled(False)
if self.label1.text()=='':
self.label1.setText('')
elif self.label2.text()=='':
self.label2.setText('')
elif self.label3.text()=='':
self.label3.setText('')
else:
self.label4.setText('') def showNumber7(self):
self.btn7.setEnabled(False)
if self.label1.text()=='':
self.label1.setText('')
elif self.label2.text()=='':
self.label2.setText('')
elif self.label3.text()=='':
self.label3.setText('')
else:
self.label4.setText('') def showNumber8(self):
self.btn8.setEnabled(False)
if self.label1.text()=='':
self.label1.setText('')
elif self.label2.text()=='':
self.label2.setText('')
elif self.label3.text()=='':
self.label3.setText('')
else:
self.label4.setText('') def showNumber9(self):
self.btn9.setEnabled(False)
if self.label1.text()=='':
self.label1.setText('')
elif self.label2.text()=='':
self.label2.setText('')
elif self.label3.text()=='':
self.label3.setText('')
else:
self.label4.setText('') #重置按钮
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_())
pyqt5猜数游戏的更多相关文章
- 【BZOJ 1594】 [Usaco2008 Jan]猜数游戏 (二分+并查集)
1594: [Usaco2008 Jan]猜数游戏 Description 为了提高自己低得可怜的智商,奶牛们设计了一个新的猜数游戏,来锻炼她们的逻辑推理能力. 游戏开始前,一头指定的奶牛会在牛棚后面 ...
- usaco 猜数游戏
Description 为了提高智商,锻炼思维能力,奶牛设计了一个猜数游戏.游戏开始前,贝西会在牛棚后面摆上N个数字.所有数字排成一条直线,按次序从1到N编号.每个数字在1到10^9之间,没有两个数字 ...
- (一)Python之猜数游戏
猜数游戏由简如深的编码学习过程: 3次机会: print('------------------我爱鱼C工作室------------------')count=0while count < 3 ...
- 猜数游戏-flag的运用
package my;import java.util.Scanner;public class MyJava { public static void main(String[] ar ...
- Java课程设计——猜数游戏(201521123111 陈伟泽)
Java课程设计--猜数游戏(201521123111 陈伟泽) 1.团队课程设计博客链接 博客作业--猜数游戏 2.个人负责模块或任务说明 Answer:一些基础界面的构造,排行榜的构造,用文件录入 ...
- JAVA课程设计 猜数游戏 团队
团队名称,成员介绍 名称: 猜数游戏 成员: 网络1514 201521123086 周颖强 网络1514 201521123087蒋勃超 项目git地址 git.oschina.net/jbc113 ...
- BZOJ 2222: [Cqoi2006]猜数游戏【神奇的做法,傻逼题,猜结论】
2222: [Cqoi2006]猜数游戏 Time Limit: 20 Sec Memory Limit: 259 MBSubmit: 604 Solved: 260[Submit][Status ...
- 从scratch到python——猜数游戏
` 之前讲解了从scratch到python,基于python turtle库的实现,讲解了用scratch和python turtle绘图的实现,以及让小猫动起来和当角色被单击的例子. 本节课讲继续 ...
- VBS猜数游戏
VBS 猜数游戏 2018-11-09 21:19:11 by xutao msgbox "The Swami" ,,"Game" msgbox " ...
随机推荐
- sybase 备份和恢复
use master go dump transaction MBFEWKDB with no_log go dump transaction MBFEHISDB with no_log go use ...
- cf500C New Year Book Reading
C. New Year Book Reading time limit per test 2 seconds memory limit per test 256 megabytes input sta ...
- NuGet Package 管理工具
http://npe.codeplex.com/downloads/get/clickOnce/NuGetPackageExplorer.application
- codeforces 100548F (西安现场赛F题):容斥原理
题目大意: 对n个排成一排的物品涂色,有m种颜色可选. 要求相邻的物品颜色不相同,且总共恰好有K种颜色,问所有可行的方案数 分析: 从m种颜色中选出k种,有c(m,k)种方法,那么我们只用考虑 k种颜 ...
- windows 删除服务命令
在dos窗口下执行 sc delete 服务名( 例如 mysql) C:\Program Files\MySQL\MySQL Server 5.6\
- OSI七层以及各层上的协议
各层简介: [1]物理层:主要定义物理设备标准,如网线的接口类型.光纤的接口类型.各种传输介质的传输速率等.它的主要作用是传输比特流(就是由1.0转化为电流强弱来进行传输,到达目的地后在转化为1.0, ...
- 关闭钩子(shutdown hook)的作用
DK1.3介绍了java.lang.Runtime class的addShutdownHook()方法.如果你需要在你的程序关闭前采取什么措施,那么关闭钩子(shutdown hook)是很有用的. ...
- C#委托与事件之观察者Observer设计模式
前言 委托: 委托是一种在对象里保存方法引用的类型,同时也是一种类型安全的函数指针. 或委托可以看成一种表示函数的数据类型,类似函数指针. 事件是特殊的委托 观察者模式:两种角色:(1)Subj ...
- 关于Javascript语言中this关键字(变量)的用法
最近很多 Javascript初学者朋友总在问: Javascript 的this 关键字的用法.我在这里索性总结一下 this关键字的用法. this 关键字是面向对象编程语言中的一个重要概念!在J ...
- [Node.js] node-persist: localStorage on the server
// Save data var storage = require('node-persist'); storage.init(); var people= require('./people.js ...