python - 作业13:打地鼠小游戏(附代码)

  • 作业要求
  • 课程知识点
    • QtDesigner的用法
    • 设计步骤
    • 对话框的实现
    • 对话框的测试
  • 哔哔赖赖
  • 完整代码和详细注释

github指路 冲冲冲冲冲

下载地址:点击跳转

作业要求

课程知识点

QtDesigner的用法

QtDesigner主要用于对话框设计,对于主窗口设计帮助不大

完成的设计保存为.ui文件,需要转化为.py文件才可以使用。

命令:pyuic5 -o 1.py 1.ui

设计步骤

放置容器 → 放置控件 → 放置分隔符(弹簧) → 放置控件 → 连接系统内置信号和槽

对话框的实现

载入.py格式的设计文件import xxx.py

在自己定义的类中继承其中的类class myDlg(QDialog,xxx.xxx)

在构造函数中调用setpuUi函数self.setpuUi(self)

对话框的测试

任何对话框都可以作为顶层对话框来调用(给它一些初始数据)

哔哔赖赖

上个学期的作业我居然现在才……想起来要写博客(当然我早就传到GitHub上面去了啊哈哈哈哈哈~

当时好像是期末周来着(大概可能实在是来不及吧

现在也是期末周来着,我还欠着安卓开发&数据库的大作业没哔哔赖赖,先把时间久远的python补上

我的数据库概率论软件工程和数据挖掘可怎么办呀555555555555

说实话这个作业小小的困扰了我一段时间来着

然后具体的历程艰不艰辛我也记不太真切了,大概就是边写代码边暗戳戳骂人的那种状态吧……感觉不错就哼个歌,写不出来就抓下头发

(导致我现在要秃了,全网征集洗了会长头发的洗发水555555555555555555最好是香香的那种/拜托了!

直接放代码吧,截图也没弄:))

附带一条私信,大概就是这样,

相比于其他来说真的工程量不算大,自己尝试一下吧

完整代码和详细注释

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2019/12/10 11:29
# @Author : Chen Shan
# Function :GUI programming - ground mouse gamesimport time
import os
import sys
import PyQt5.QtCore as qc
import PyQt5.QtGui as qg
import PyQt5.QtWidgets as qwimport threading as t
import randomimport numpy as np
import matplotlibmatplotlib.use("Qt5Agg")
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure  # 注意不是pyplot下的那个figure
from PyQt5 import QtCore, QtGui, QtWidgetsclass Ui_MainWindow(object):def setupUi(self, MainWindow):MainWindow.setObjectName("Whac-A-Mole")MainWindow.resize(750, 639)self.centralwidget = QtWidgets.QWidget(MainWindow)self.centralwidget.setObjectName("centralwidget")self.Start = QtWidgets.QPushButton(self.centralwidget)self.Start.setGeometry(QtCore.QRect(100, 30, 150, 50))self.Start.setObjectName("Start")self.Pause = QtWidgets.QPushButton(self.centralwidget)self.Pause.setGeometry(QtCore.QRect(300, 30, 150, 50))self.Pause.setObjectName("Pause")self.Stop = QtWidgets.QPushButton(self.centralwidget)self.Stop.setGeometry(QtCore.QRect(500, 30, 150, 50))self.Stop.setObjectName("Stop")self.pushButton = QtWidgets.QPushButton(self.centralwidget)self.pushButton.setGeometry(QtCore.QRect(100, 100, 150, 150))self.pushButton.setText("")self.pushButton.setObjectName("pushButton")self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)self.pushButton_2.setGeometry(QtCore.QRect(300, 100, 150, 150))self.pushButton_2.setText("")self.pushButton_2.setObjectName("pushButton_2")self.pushButton_3 = QtWidgets.QPushButton(self.centralwidget)self.pushButton_3.setGeometry(QtCore.QRect(500, 100, 150, 150))self.pushButton_3.setText("")self.pushButton_3.setObjectName("pushButton_3")self.pushButton_4 = QtWidgets.QPushButton(self.centralwidget)self.pushButton_4.setGeometry(QtCore.QRect(100, 250, 150, 150))self.pushButton_4.setText("")self.pushButton_4.setObjectName("pushButton_4")self.pushButton_5 = QtWidgets.QPushButton(self.centralwidget)self.pushButton_5.setGeometry(QtCore.QRect(300, 250, 150, 150))self.pushButton_5.setText("")self.pushButton_5.setObjectName("pushButton_5")self.pushButton_6 = QtWidgets.QPushButton(self.centralwidget)self.pushButton_6.setGeometry(QtCore.QRect(500, 250, 150, 150))self.pushButton_6.setText("")self.pushButton_6.setObjectName("pushButton_6")self.pushButton_7 = QtWidgets.QPushButton(self.centralwidget)self.pushButton_7.setGeometry(QtCore.QRect(100, 400, 150, 150))self.pushButton_7.setText("")self.pushButton_7.setObjectName("pushButton_7")self.pushButton_8 = QtWidgets.QPushButton(self.centralwidget)self.pushButton_8.setGeometry(QtCore.QRect(300, 400, 150, 150))self.pushButton_8.setText("")self.pushButton_8.setObjectName("pushButton_8")self.pushButton_9 = QtWidgets.QPushButton(self.centralwidget)self.pushButton_9.setGeometry(QtCore.QRect(500, 400, 150, 150))self.pushButton_9.setText("")self.pushButton_9.setObjectName("pushButton_9")self.label = QtWidgets.QLabel(self.centralwidget)self.label.setGeometry(QtCore.QRect(200, 570, 300, 50))font = QtGui.QFont()font.setFamily("HanziPen SC")font.setPointSize(36)self.label.setFont(font)self.label.setObjectName("label")self.Score = QtWidgets.QLabel(self.centralwidget)self.Score.setGeometry(QtCore.QRect(500, 570, 150, 50))font = QtGui.QFont()font.setFamily("HanziPen SC")font.setPointSize(36)self.Score.setFont(font)self.Score.setObjectName("Score")MainWindow.setCentralWidget(self.centralwidget)self.menubar = QtWidgets.QMenuBar(MainWindow)self.menubar.setGeometry(QtCore.QRect(0, 0, 750, 22))self.menubar.setObjectName("menubar")MainWindow.setMenuBar(self.menubar)self.statusbar = QtWidgets.QStatusBar(MainWindow)self.statusbar.setObjectName("statusbar")MainWindow.setStatusBar(self.statusbar)self.retranslateUi(MainWindow)QtCore.QMetaObject.connectSlotsByName(MainWindow)def retranslateUi(self, MainWindow):_translate = QtCore.QCoreApplication.translateMainWindow.setWindowTitle(_translate("MainWindow", "Whac-A-Mole"))self.Start.setText(_translate("MainWindow", "PLAY"))self.Pause.setText(_translate("MainWindow", "STOP"))self.Stop.setText(_translate("MainWindow", "END"))self.label.setText(_translate("MainWindow", "SCORE :"))self.Score.setText(_translate("MainWindow", "0"))class myMainWindow(qw.QMainWindow, Ui_MainWindow):# 重载构造函数def __init__(self, parent=None):# 重载父类构造函数super().__init__(parent)# 改变窗口显示的titleself.setWindowTitle("Whac-A-Mole")# 调用Ui_MainWindow中的函数来显示界面self.setupUi(self)self.retranslateUi(self)# 难易程度(可调节)# 随机产生地鼠的时间(ms)self.t2 = 1000# 地鼠显示时间(ms)self.t1 = 800# 游戏总时间(ms)self.t3 = 10000self.ppp = 0# 初始化self.init()# 动作组(每个按钮的点击效果)self.pushButton.clicked.connect(self.action1)self.pushButton_2.clicked.connect(self.action2)self.pushButton_3.clicked.connect(self.action3)self.pushButton_4.clicked.connect(self.action4)self.pushButton_5.clicked.connect(self.action5)self.pushButton_6.clicked.connect(self.action6)self.pushButton_7.clicked.connect(self.action7)self.pushButton_8.clicked.connect(self.action8)self.pushButton_9.clicked.connect(self.action9)self.Start.clicked.connect(self.startGame)self.Stop.clicked.connect(self.stopGame)self.Pause.clicked.connect(self.pauseGame)def init(self):# 参数# 暂停状态参数(0为不暂停,1为暂停)self.isPaused = 0# 地鼠图片self.p1 = 'QPushButton{background-image:url("pic/3.png")}'self.p3 = 'QPushButton{background-image:url("pic/4.png")}'# 背景图片self.p2 = 'QPushButton{background-image:url("pic/2.png")}'# 初始化背景图self.pushButton.setStyleSheet(self.p2)self.pushButton_2.setStyleSheet(self.p2)self.pushButton_3.setStyleSheet(self.p2)self.pushButton_4.setStyleSheet(self.p2)self.pushButton_5.setStyleSheet(self.p2)self.pushButton_6.setStyleSheet(self.p2)self.pushButton_7.setStyleSheet(self.p2)self.pushButton_8.setStyleSheet(self.p2)self.pushButton_9.setStyleSheet(self.p2)def showScore(self):self.Score.setText(str(self.score))def startGame(self):# 初始化# 分数self.score = 0# 记录按钮是否有地鼠,0为无,1为有self.haveMouse1 = 0self.haveMouse2 = 0self.haveMouse3 = 0self.haveMouse4 = 0self.haveMouse5 = 0self.haveMouse6 = 0self.haveMouse7 = 0self.haveMouse8 = 0self.haveMouse9 = 0# 设置定时器# 控制地鼠出现的时间self.timer1 = qc.QTimer(self)# 控制随机产生地鼠的时间self.timer2 = qc.QTimer(self)self.timer2.timeout.connect(self.CreateMouse)self.timer2.start(self.t2)# 控制游戏总时间self.timer3 = qc.QTimer(self)self.timer3.timeout.connect(self.gameOver)self.timer3.start(self.t3)# 初始化分数显示self.label.setText("SCORE :")self.Score.setText(str(self.score))def pauseGame(self):# 如果在没有暂停时按了暂停按钮if self.isPaused == 0:# 改变暂停状态self.isPaused = 1# 改变按键显示内容self.Pause.setText("CONTINUE")# 关闭定时器self.timer2.stop()# 初始化背景图self.pushButton.setStyleSheet(self.p2)self.pushButton_2.setStyleSheet(self.p2)self.pushButton_3.setStyleSheet(self.p2)self.pushButton_4.setStyleSheet(self.p2)self.pushButton_5.setStyleSheet(self.p2)self.pushButton_6.setStyleSheet(self.p2)self.pushButton_7.setStyleSheet(self.p2)self.pushButton_8.setStyleSheet(self.p2)self.pushButton_9.setStyleSheet(self.p2)# 如果在暂停时按了继续按钮elif self.isPaused == 1:# 改变暂停状态self.isPaused = 0# 改变按键显示内容self.Pause.setText("STOP")# 重新打开定时器self.timer2.start(self.t2)def gameOver(self):if self.ppp != 0:self.timer3.stop()self.label.setText("GAME OVER!FINAL SCORE :")self.Score.setText(str(self.score))self.timer1.stop()self.timer2.stop()self.ppp += 1# 初始化背景图self.pushButton.setStyleSheet(self.p2)self.pushButton_2.setStyleSheet(self.p2)self.pushButton_3.setStyleSheet(self.p2)self.pushButton_4.setStyleSheet(self.p2)self.pushButton_5.setStyleSheet(self.p2)self.pushButton_6.setStyleSheet(self.p2)self.pushButton_7.setStyleSheet(self.p2)self.pushButton_8.setStyleSheet(self.p2)self.pushButton_9.setStyleSheet(self.p2)def stopGame(self):self.timer3.stop()self.label.setText("GAME OVER!FINAL SCORE :")self.Score.setText(str(self.score))self.timer1.stop()self.timer2.stop()# 初始化背景图self.pushButton.setStyleSheet(self.p2)self.pushButton_2.setStyleSheet(self.p2)self.pushButton_3.setStyleSheet(self.p2)self.pushButton_4.setStyleSheet(self.p2)self.pushButton_5.setStyleSheet(self.p2)self.pushButton_6.setStyleSheet(self.p2)self.pushButton_7.setStyleSheet(self.p2)self.pushButton_8.setStyleSheet(self.p2)self.pushButton_9.setStyleSheet(self.p2)# 点击地鼠后地鼠消失def action1(self):# 如果有地鼠if self.haveMouse1 == 1:self.haveMouse1 = 0# 点击后图变成背景图self.pushButton.setStyleSheet(self.p2)# 分数+1self.score += 1self.showScore()def action2(self):# 如果有地鼠if self.haveMouse2 == 1:self.haveMouse2 = 0# 点击后图变成背景图self.pushButton_2.setStyleSheet(self.p2)# 分数+1self.score += 1self.showScore()def action3(self):# 如果有地鼠if self.haveMouse3 == 1:self.haveMouse3 = 0# 点击后图变成背景图self.pushButton_3.setStyleSheet(self.p2)# 分数+1self.score += 1self.showScore()def action4(self):# 如果有地鼠if self.haveMouse4 == 1:self.haveMouse4 = 0# 点击后图变成背景图self.pushButton_4.setStyleSheet(self.p2)# 分数+1self.score += 1self.showScore()def action5(self):# 如果有地鼠if self.haveMouse5 == 1:self.haveMouse5 = 0# 点击后图变成背景图self.pushButton_5.setStyleSheet(self.p2)# 分数+1self.score += 1self.showScore()def action6(self):# 如果有地鼠if self.haveMouse6 == 1:self.haveMouse6 = 0# 点击后图变成背景图self.pushButton_6.setStyleSheet(self.p2)# 分数+1self.score += 1self.showScore()def action7(self):# 如果有地鼠if self.haveMouse7 == 1:self.haveMouse7 = 0# 点击后图变成背景图self.pushButton_7.setStyleSheet(self.p2)# 分数+1self.score += 1self.showScore()def action8(self):# 如果有地鼠if self.haveMouse8 == 1:self.haveMouse8 = 0# 点击后图变成背景图self.pushButton_8.setStyleSheet(self.p2)# 分数+1self.score += 1self.showScore()def action9(self):# 如果有地鼠if self.haveMouse9 == 1:self.haveMouse9 = 0# 点击后图变成背景图self.pushButton_9.setStyleSheet(self.p2)# 分数+1self.score += 1self.showScore()# 地鼠自动消失def stop1(self):self.haveMouse1 = 0# 显示背景图self.pushButton.setStyleSheet(self.p2)def stop2(self):self.haveMouse2 = 0# 显示背景图self.pushButton_2.setStyleSheet(self.p2)def stop3(self):self.haveMouse3 = 0# 显示背景图self.pushButton_3.setStyleSheet(self.p2)def stop4(self):self.haveMouse4 = 0# 显示背景图self.pushButton_4.setStyleSheet(self.p2)def stop5(self):self.haveMouse5 = 0# 显示背景图self.pushButton_5.setStyleSheet(self.p2)def stop6(self):self.haveMouse6 = 0# 显示背景图self.pushButton_6.setStyleSheet(self.p2)def stop7(self):self.haveMouse7 = 0# 显示背景图self.pushButton_7.setStyleSheet(self.p2)def stop8(self):self.haveMouse8 = 0# 显示背景图self.pushButton_8.setStyleSheet(self.p2)def stop9(self):self.haveMouse9 = 0# 显示背景图self.pushButton_9.setStyleSheet(self.p2)# 随机产生地鼠def CreateMouse(self):# 在数组name中随机一个控件名temp = random.randint(1, 9)# 将随机到的按钮显示地鼠if temp == 1:self.pushButton.setStyleSheet(self.p1)self.haveMouse1 = 1# 打开一次性计时器self.timer1.singleShot(self.t1, self.stop1)elif temp == 2:self.pushButton_2.setStyleSheet(self.p3)self.haveMouse2 = 1# 打开一次性计时器self.timer1.singleShot(self.t1, self.stop2)elif temp == 3:self.pushButton_3.setStyleSheet(self.p1)self.haveMouse3 = 1# 打开一次性计时器self.timer1.singleShot(self.t1, self.stop3)elif temp == 4:self.pushButton_4.setStyleSheet(self.p3)self.haveMouse4 = 1# 打开一次性计时器self.timer1.singleShot(self.t1, self.stop4)elif temp == 5:self.pushButton_5.setStyleSheet(self.p1)self.haveMouse5 = 1# 打开一次性计时器self.timer1.singleShot(self.t1, self.stop5)elif temp == 6:self.pushButton_6.setStyleSheet(self.p1)self.haveMouse6 = 1# 打开一次性计时器self.timer1.singleShot(self.t1, self.stop6)elif temp == 7:self.pushButton_7.setStyleSheet(self.p1)self.haveMouse7 = 1# 打开一次性计时器self.timer1.singleShot(self.t1, self.stop7)elif temp == 8:self.pushButton_8.setStyleSheet(self.p3)self.haveMouse8 = 1# 打开一次性计时器self.timer1.singleShot(self.t1, self.stop8)elif temp == 9:self.pushButton_9.setStyleSheet(self.p1)self.haveMouse9 = 1# 打开一次性计时器self.timer1.singleShot(self.t1, self.stop9)app = qw.QApplication(sys.argv)
form = myMainWindow()
# 设定最小的程序窗口大小
form.setMinimumSize(750, 700)
form.show()
app.exec_()

python - 作业13:打地鼠小游戏(附代码)相关推荐

  1. 一口气用Python写了13个小游戏 (附源码)

    大家好,今天给大家分享13个游戏源码,可以自己复现玩玩,研究下里面的编程逻辑,对学习编程(特别是初学者)应该会有很大帮助. 由于文章较长,大家记得滑到文末点个赞哈- 1.吃金币 源码分享: impor ...

  2. 手把手教你使用Python实现推箱子小游戏(附完整源码)

    文章目录 项目介绍 项目规则 项目接口文档 项目实现过程 前置方法编写 move核心方法编写 项目收尾 项目完善 项目整体源码 项目缺陷分析 项目收获与反思 项目介绍 我们这个项目是一个基于Pytho ...

  3. 分享Python开发的13个小游戏(附源码)

    导语 哈喽哈喽~铁汁萌!愉快的周末到了天气也变好了不知道大家有没有出去玩吖!小编这几天太累了周末就宅在家里啦

  4. 【Python游戏】用Python写的地道战小游戏,代码着实有点多 | 附带源码

    相关文件 想学Python的小伙伴可以关注小编的公众号[Python日志] 有很多的资源可以白嫖的哈,不定时会更新一下Python的小知识的哈!! 需要源码的小伙伴可以在公众号回复地道战 Python ...

  5. 打鸟小游戏-附代码及素材

    (素材是从pvz2素材吧找的) 亮点: 1.玩家是运动的,不是静态图片 2.玩家有3种效果,正常,发炮,爆炸 3.玩家可以切换射击模式,直线射击,单次三发,单次五发(对应不同的按键) 4.敌人(鸟), ...

  6. 智力过河游戏c语言,Flash制作的智力过河小游戏(附代码)

    游戏规则: 一只大狮子,一只小狮子,一只大老虎.一只小老虎.一只大花豹,一只小花豹要到河对面去,只有大动物和小老虎会划船,船每次只能乘两只动物.大动物之间互相吃不了,小动物之间互相吃不了,如果大动物不 ...

  7. vue2实现井字棋小游戏附代码

    用写东西来学习是最好的效果 运用到了子组件传递数据给父组件,父组件在回调里用$event做为参数,在调用函数时接收并使用 父组件传递数据给子组件,子组件用props接收 用map定义了一个二维数组来接 ...

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

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

  9. python十点半游戏代码_Python实现Pig Latin小游戏实例代码

    前言: 本文研究的主要是Python实现pig Latin小游戏的简单代码,具体介绍如下. Pig Latin是一个语言游戏. 步骤: 1.让用户输入一个英文单词 2.确保用户输入一个有效单词 3.将 ...

  10. 用DW敲-打地鼠小游戏

    相信大部分的道友们都玩过打地鼠的游戏吧,游戏的机制非常简单,所以今天我就分享一个极其不完善的打地鼠小游戏的代码给大家. 为什么是极其不完善的呢?因为该有的功能基本有,不该有的功能当然没有啦! 说人话部 ...

最新文章

  1. 2011年图书馆技术发展方向
  2. java system_深入分析java中的System
  3. python多线程怎么写日志_Python日志记录在多进程下的使用
  4. 用python爬取网页数据并存入数据库中源代码_Python爬取51cto数据并存入MySQL方法详解...
  5. gis等时圈怎么做_如何批量制作交通等时圈
  6. Hexo中Next主题个性化美化的解决方案
  7. 让你成为高效的Web开发者的10个步骤
  8. 5.3 使用SQL还是NoSQL
  9. MySQL数值型超出范围_MySQL 数值类型溢出处理
  10. egon说一切皆对象--------面向对象进阶紫禁之巅
  11. 销售方法论居然来自公司战略!看看IBM、华为、SAP是怎么做的
  12. Codeforces348B Apple Tree DFS
  13. 几个不错的网站(转)
  14. 什么是电脑pe系统?
  15. PHP全国快递寄件接口,1天接入四通一达,极兔,宅急送,德邦,京东,天天
  16. 关于/etc/hosts文件
  17. dimm和udimm_服务器内存类型(UDIMM、RDIMM和LRDIMM)
  18. WM_CTLCOLOR消息重载
  19. 用原生js代码实现虚拟滚动条
  20. 基于web的在线视频编辑的设计

热门文章

  1. 基于Python+kociemba+opencv的3阶魔方自动还原
  2. 爬虫出现selenium.common.exceptions.NoSuchWindowException: Message: Browsing context has been discarded
  3. oracle归档切换,oracle 切换归档方式
  4. nvme1.3 Feature - Telemetry
  5. 端午节,我用Python爬取屈原的诗
  6. 游泳这项技术怎么学?
  7. 新职业教育的三节课,凭什么做到今天这样
  8. 虫师乙醇自动化测试培训第三期
  9. C++/EasyX面向对象编程实现-简单双人对战五子棋
  10. hive和presto处理月末月初