主要知识点:QWidget,QPushButton,QTimer 计时器

说明:学 Qt 时的第一个小练习,只做了最基础简单的功能。

效果如下:

(注:鼠标点击时黄色圆圈是 录屏软件自带的)

完整代码:

import sys
import os
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
import randomclass myMainWindow(QWidget):def __init__(self, parent=None):super().__init__(parent)self.setWindowTitle("打地鼠小游戏")self.mousenum = 0#记录游戏开始后出现的地鼠只数global score score = 0self.timer = QTimer()#全局计时器self.timer.timeout.connect(self.gameend) #结束时调用self.mousetimer = QTimer()#地鼠出现时间计时器self.mousetimer.timeout.connect(self.mouseactive)self.remainingTimetimer = QTimer()#每秒刷新剩余时间self.remainingTimetimer.timeout.connect(self.remainingTimeShow)self.mouseSign = None#图像self.imagelayout = QGridLayout()x = 0for i in range(25):exec ("self.mouse%s=mouse()"%i)for i in range(5):for j in range(5):exec ("self.imagelayout.addWidget(self.mouse%s,%s,%s)"%(x,i,j))x+=1self.setLayout(self.imagelayout)self.imagelayout.addWidget(self.mouse10,2,0)#右侧固定窗口内控件self.settingslayout = QGridLayout()self.settingsWidget = QWidget()self.settingsWidget.setFixedSize(80,350)self.imagelayout.addWidget(self.settingsWidget,0,5,1,5)self.settingsWidget.setLayout(self.settingslayout)self.startPushButton = QPushButton("start")self.startPushButton.setFixedSize(50,30)self.textBrowser = QTextBrowser()self.textBrowser.setText("游戏未启动")self.textBrowser.setFixedSize(70,30)self.scoreTextBrowser = QTextBrowser()self.scoreTextBrowser.setText("击中数:0")self.scoreTextBrowser.setFixedSize(70,30)self.runTextBrowser = QTextBrowser()self.runTextBrowser.setText("逃离数:0")self.runTextBrowser.setFixedSize(70,30)self.remainingTimeTextBrowser = QTextBrowser()self.remainingTimeTextBrowser.setText("剩余时间:\n30秒")self.remainingTimeTextBrowser.setFixedSize(70,40)self.startPushButton.clicked.connect(self.gamestart)self.settingslayout.addWidget(self.startPushButton,0,0)self.settingslayout.addWidget(self.textBrowser,1,0)self.settingslayout.addWidget(self.runTextBrowser,2,0)self.settingslayout.addWidget(self.scoreTextBrowser,3,0)self.settingslayout.addWidget(self.remainingTimeTextBrowser,4,0)def gamestart(self):score = 0self.textBrowser.setText("游戏中")self.timer.start(30000)#单位毫秒 1000为1秒self.mousetimer.start(1250)self.remainingTimetimer.start(1000)def mouseactive(self):if self.mouseSign != None:exec ("self.mouse%s.flag = 0"%self.mouseSign)exec ("self.mouse%s.setStyleSheet('QPushButton{border-image: url(E:/打地鼠游戏/0.jpg)}')"%self.mouseSign)self.mouseSign = int(random.random()*25)#随机exec ("self.mouse%s.flag = 1"%self.mouseSign)exec ("self.mouse%s.setStyleSheet('QPushButton{border-image: url(E:/打地鼠游戏/3.jpg)}')"%self.mouseSign)#地鼠冒出self.mousetimer.start(1250)#地鼠出现时间self.mousenum += 1self.scoreTextBrowser.setText("击中数:"+str(score))self.runTextBrowser.setText("逃离数:"+str(self.mousenum-score-1))def gameend(self):self.timer.stop()self.mousetimer.stop()self.textBrowser.setText("游戏结束")self.mousenum = 0for i in range(25):exec ("self.mouse%s.flag = 0"%i)#地鼠flag还原def remainingTimeShow(self):remaintime = int(round(self.timer.remainingTime()/1000,0))self.remainingTimeTextBrowser.setText("剩余时间:\n"+str(remaintime)+"秒")self.remainingTimetimer.start(1000)class mouse(QPushButton):def __init__(self, parent=None):super().__init__(parent)self.setFixedSize(80,70)#self.resize(40, 30)self.setStyleSheet("QPushButton{border-image: url(E:/打地鼠游戏/0.jpg)}")#地洞self.flag = 0self.upTime = QTimer()#恢复锤子状态self.upTime.timeout.connect(self.mouseUp)def hit(self):if self.flag:self.setStyleSheet("QPushButton{border-image: url(E:/打地鼠游戏/xing.jpg)}")#地鼠被砸global scorescore += 1self.flag = 0def mousePressEvent(self,event):self.setCursor(QCursor(QPixmap(r"E:\打地鼠游戏\down.png")))#鼠标形状变成落下的锤子self.upTime.start(100)self.hit()def mouseUp(self):#抬起锤子self.setCursor(QCursor(QPixmap(r"E:\打地鼠游戏\up.png")))app = QApplication(sys.argv)
form = myMainWindow()
form.setFixedSize(480, 350)
form.show()
app.exec_()

图片素材:


PyQt5 打地鼠小游戏 代码及素材相关推荐

  1. Python 和 PyQt5 实现打地鼠小游戏

    Python 和 PyQt5 实现打地鼠小游戏 实现效果: 视频效果: https://live.csdn.net/v/264602https://live.csdn.net/v/264602 代码: ...

  2. linux打地鼠游戏代码,JavaScript实现打地鼠小游戏

    一.实验说明 1. 环境介绍 本实验环境采用Ubuntu Linux桌面环境,实验中会用到桌面上的程序: Xfce终端: Linux命令行终端,打开后会进入Bash环境,可以使用Linux命令 Fir ...

  3. python打地鼠代码_vue实现打地鼠小游戏

    本文实例为大家分享了vue实现打地鼠小游戏的具体代码,供大家参考,具体内容如下 效果图如下: 代码如下: 打地鼠游戏 {{n}}号地鼠 设置参数 速度: 总数: 开始 统计分数面板 总数: {{TOT ...

  4. 如何用python制作五子棋游戏_Python制作打地鼠小游戏

    原文链接 Python制作小游戏(二十一)​mp.weixin.qq.com 效果展示 打地鼠小游戏https://www.zhihu.com/video/1200492442610450432 简介 ...

  5. matlab制作打地鼠游戏,Python制作打地鼠小游戏

    原标题:Python制作打地鼠小游戏 导语 大家好,欢迎来到 Crossin的编程教室 ! 打地鼠游戏相信大家都知道,这里就不多介绍了,反正就是不停地拿锤子打洞里钻出来的地鼠呗~ 今天就给大家分享一个 ...

  6. python小游戏制作软件_Python制作打地鼠小游戏

    原文链接Python制作小游戏(二十一)​mp.weixin.qq.com 效果展示打地鼠小游戏https://www.zhihu.com/video/1200492442610450432 简介 打 ...

  7. java 打地鼠 源代码_Java实现的打地鼠小游戏完整示例【附源码下载】

    本文实例讲述了Java实现的打地鼠小游戏.分享给大家供大家参考,具体如下: 这里涉及到java线程和GUI的相关知识,一个简单的java小游戏打地鼠,有兴趣的朋友可以优化一下.先来看看运行效果: 具体 ...

  8. 敲地鼠java_Java实现的打地鼠小游戏完整示例【附源码下载】

    本文实例讲述了Java实现的打地鼠小游戏.分享给大家供大家参考,具体如下: 这里涉及到java线程和GUI的相关知识,一个简单的java小游戏打地鼠,有兴趣的朋友可以优化一下.先来看看运行效果: 具体 ...

  9. java android 打地鼠_Android实现打地鼠小游戏

    本文实例为大家分享了Android实现打地鼠小游戏的具体代码,供大家参考,具体内容如下 实现结果 代码实现 playmouse.java package com.example.playmouse; ...

最新文章

  1. sqlserver中能用when_sqlserver中if语句顶替when.case.语句
  2. springcloud学之前需要掌握什么_学国画之前我们需要准备什么?
  3. Nginx常见的错误及解决方法
  4. Java:何时使用静态方法
  5. Python 爬虫篇-利用BeautifulSoup库爬取墨迹天气网的天气信息实例演示,调用墨迹天气api接口获取空气质量
  6. 泛华金控携手神策数据,赋能保险经代公司筑就全闭环智能营销
  7. 算了一挂,也不知准不准
  8. Android Lifecycle组件使用
  9. 室内定位系列 ——WiFi位置指纹(译)
  10. ios字典存bool_iOS 常见的数据存储方式
  11. VIM使用系列:quickfix功能
  12. CMOS 与BIOS
  13. Fedora七年风雨路:寻访14个版本的足迹
  14. Python 标准库一览(Python进阶学习)
  15. Wind安装python插件遇到问题怎么办
  16. 安培龙IPO过会:年营收5亿 同创伟业与中移创新是股东
  17. 99%网赚精准引流技巧!
  18. 如何查看office是否永久激活版本
  19. 在C#中调用条码标签打印机中的动态链接库PPLA/PPLB(Argox)
  20. mysql 中字段存放表情符号,Incorrect string value: ‘\xF0\x9F\x8C\xBB‘ for column

热门文章

  1. 云和恩墨荣获2023数字中国创新大赛·信创赛道“最具发展潜力奖”等4个奖项
  2. 关于图文转换的web工具
  3. 一个简单的RPG游戏架构设计方案
  4. OSChina 周三乱弹 —— 充会员才是你唯一的出路
  5. 软件测试职业规划的思考
  6. copy 和 mutableCopy的区别
  7. lass path resource [com/spring/] cannot be resolved to URL because it does not
  8. java class b_“ [B””是哪种Java类型?
  9. 转 CanvasPaint—基于HTML5的Windows画板
  10. Python教程: while循环20例