手把手教你!100行代码,用Python做一个“消灭病毒”的小游戏

Python|做一个无线弹窗病毒 用python做一个电脑病毒,一起分享给朋友吧(。・∀・)ノ゙哈哈哈 阅读详情

公众号关注 “菜鸟学Python”

设为 “星标”,重磅干货,第一时间送达!

烟花三月下扬州,我想3月能下楼。虽然很多地方都已经开始慢慢的开放了,但是我怀念的胡辣汤,海底捞,还有烧鸡都没有开门。眼看宅在家,吃了睡睡了吃,肚子上的救生圈都出来了一层又一层。宅男的我都练出一身厨艺。买了理发工具已经可以兼职当“Tony”老师理发了。

想必大家已经窝在家里快发霉了吧,趁着时间充裕,我又重新捡起了之前学习的PyQt5。以前不是有一个打地鼠的游戏,这次用简单100多行代码写一个《消灭地鼠病毒》的小游戏,效果如下,废话少说先看视频!

视频镇楼

01

PyQt介绍及安装

PyQt5是基于Digia公司强大的图形程式框架Qt5的python接口,由一组python模块构成。PyQt5本身拥有超过620个类和6000函数及方法。在可以运行于多个平台,包括:Unix, Windows,and Mac OS。Python的gui中有三大框架,分别是PyQt、wxpython和tkinter,我个人偏爱于PyQt,因为PyQt是比较流行的一个 Tkinter 的替代品,功能非常强大,可以用Qt开发多美漂亮的界面,也就可以用PyQt开发多么漂亮的界面

安装PyQt

其实安装比较简单,只需在命令行输入pip install PyQt5,引入模块:

02

构建界面

构造窗口,添加图标和音乐,并以网格形式对控件进行布局

1).构造1个窗口

  • PyQt5应用必须创建一个应用(Application)对象;

  • sys.argv参数是一个来自命令行的参数列表,Top是窗口的类,setFixedSize设置窗口大小为900x600;

  • show()方法在屏幕上显示出widget;

  • sys.exit(app.exec_())调用主循环用于接收来自窗口触发的事件,并且转发他们到widget应用上处理

2).添加图标、名称及背景音乐

效果如下

3).构造网格布局,并将25张地洞图片填满5x5=25个网格

  • QgridLayout为网格布局,除了网格布局,PyQt5有绝对位置和布局类两种布局管理方式;

  • 其中布局管理又分为水平布局、垂直布局、网格布局、表单布局四种布局方法;

  • 每种方法都有其特点,这里不再展开,有兴趣的朋友可以研究一下,本次只采用网格布局;

首先创建QgridLayout的实例,然后循环构造25个virus类,最后通过addWidget()方法将25个virus类分别放入imagelayout实例中,其中每个virus都包含地洞图等信息

运行程序,效果如图

4)在右侧添加设置栏

大家可以发现,上述效果图布局比较稀疏,因为我留有空余,想在右边放置一列设置栏,包含开始游戏、消灭病毒数、逃跑病毒数以及剩余时间等信息。

首先构造1个新的窗口,并将其嵌入主窗体中:

创建QgridLayout的实例,然后构造新窗口,设置大小,将其添加到主窗体中,addWidget5个参数分别为要添加的新窗口、在第1行、第6列,占5行、1列,效果如下:

添加设置信息

用setText函数对各个标签进行命名,最后用addWidget将其放入新加的窗口中,其中“开始游戏”标签还绑定了gamestart函数,后续还会讲到,效果如下:

03

添加时间控件

为什么要添加时间控件呢?因为我们要设置一局游戏的时长、要设置病毒每次出现的时间间隔、要设置病毒停留的时间,PyQt5有现成的计时函数Qtimer,我们需要设置3个计时器。

共添加了全局计时、病毒随机出现计时、剩余时间计时共3个计时器,这3个计时器都在gamestart函数下启动

当点击“开始游戏”时,会启动gamestart函数,然后启动timer(全局)、virustimer(病毒出现间隔)、remainter(游戏剩余时间)3个计时器,同时,计时器会按照设置的时间循环定时启动绑定的函数。其中全局计时器绑定gameover函数

即30秒后会调用该函数,将结束游戏。

病毒出现计时器绑定virusactive函数

首先检测上个病毒在哪个位置出现,然后将该位置恢复为地洞图片,其中virus.flag(初始值为0,病毒出现后设置成1)是病毒出现在哪个框的标志;

后续会用于检测小锤是否砸到病毒。接着用random函数在25个地洞中随机选出下次病毒将会出现的位置,并将该位置的地洞图片替换为病毒出现的图片。

剩余时间计时器绑定remainTimeshow函数

每个1秒更新一下剩余时间,并用setText函数将更新内容投送到remaintimeText标签框,请大家注意,最下面一行是重新启动剩余时间计时器,这样就能达到循环的效果了。

04

添加提示框

为了避免游戏中不小心点了右上角的叉号而将游戏关闭,需要添加1个提示框

closeEvent代表窗口关闭时间,用QMessageBox.question函数进行消息提示,效果如下:

05

记分问题

经过上面的几个步骤,基本框架已经搭建完了,现在需要考虑如何消灭病毒和计分的问题了。

1).首先绑定1个鼠标事件,即鼠标点击时,将鼠标指针换成落下的小锤图片

mousePressEvent为鼠标点击函数,每次鼠标点击时该函数会启动,停留0.1秒,接着启动upTime计时器,该计时器绑定up函数

即0.1秒后鼠标指针由落下的小锤图片替换成抬起的锤子图片,这样就完成了1次敲击动作。最后构造1个kill函数,主要用于计分

之前说过,每个virus类都有其特征,那么我们就可以比对当前小锤砸到的virus类是否是病毒之前出现的那个virus类,通过什么来比较呢?

还记得前面说过的virus.flag吗?我们设置的每个virus的flag的初始值为0,当病毒出现在该virus类时,之前已将其设置成1,只需要看看当前小锤砸到的virus类的flag是否为1就可以判断小锤是否砸到病毒了,如果砸到则计1分。


到这里基本已经将游戏的整个编写过程讲解完毕,这只是1个非常基础的游戏,PyQt还可以制作很多更加高大上的游戏,感兴趣的朋友可以继续研究探索。

近期热门:

十行代码,用Python做一个迷你版的美图秀秀

实战:Flask + Vue 生成漂亮的词云

Python和Go都很火,我要怎么选?

情人眼里出西施,我用Python帮你搞定了!

高手心得|菜鸟学Python从入门到进阶

漫画,假装自己是Python高手,学会这十招就可以

看了范伟和葛大爷的电影,我决定用Python做个石头剪刀布

需要源码,请找菜鸟哥,后台输入:【菜鸟哥】

一文彻底看懂十进制IP\主机IP\网络IP的三个IP字节转换 本文操作的使用软件是VS2010。采用语言是C语言。 1.字节存储顺序 多字节数据的各字节在微机中的存放顺序有小端(Little Endian)和大端(Big Endian)之分。Intel体系芯片使用小端,IBM的Power PC使用大端。 例如,将0x12345678写入到1000h开始的内存中,结果如图。 地址 小端方式 大端... 阅读详情

相关推荐

100行Python代码,做一个打地鼠小游戏~

最近在学习使用 Python 来完成一些小游戏,使用到的有 Pygame 和 PyQt5 等,根据网上前人的代码,整理了一个打地鼠的小游戏,今天也分享给大家,一起学习!

wslejbb的博客 2001

十五种小游戏代码(有0积分下载的哦)

List item

m0_56582404的博客 1万+

利用python制作病毒小程序

【代码】利用python制作病毒小程序。

XYJ17386413732的博客 693

23款小游戏-Python一行代码就能玩

给IT入门加星标,提升编程技能 free-python-games,一行代码就能进入使用Python开发的小游戏快乐玩耍! 安装 pip install freegames Python包括随您的安装一起分发的大量标准库。标准库有一个称为Turtle的模块,这是一种向普通人介绍python编程的流行方法。今天介绍的所有游戏都是使用Python及其Turtle模块实现的。 每个游戏都完全独立于其他游戏,不试一试 您永远都不知道最喜欢哪种游戏。 安装完之后我们可以使用"python -m fre

m0_63176080的博客 2万+

GIS小白也能看懂的实战:5步教你将ArcGIS里的等高线和水系完美导入CAD做规划图

本文详细介绍了如何将ArcGIS中的等高线和水系数据高效导入CAD,制作专业规划底图的5个关键步骤。从数据准备、ArcGIS处理到CAD优化,涵盖坐标系设置、数据裁剪、格式转换等实用技巧,特别适合设计规划领域的新手快速掌握GIS与CAD协同工作流程。

weixin_27966471的博客 426

意图识别和纠错问题

可想而知,错误的意图识别会带来多大的负面影响。基于词典,就是对用户query内容和词典内容进行比对,比较常见的方式是序列标注问题里用的最大逆向匹配,通过这种方式找到词典里的实体词,匹配触发了自然就有意图了,而在词典匹配的时候,不是使用链表之类的来构造匹配结构,而是使用搜索树的结构,这种匹配的复杂度最低,速度也快,两者结合,其速度甚至比很多模型要快得多(基本上1ms以内就能完成),fasttext速度非常快,但是textcnn之类的其实就已经达到ms级别以上,bert甚至在10ms级别。

TURING.DT 4574

python写病毒代码_手把手教你!100行代码,用Python做一个“消灭病毒”的小游戏...

烟花三月下扬州,我想3月能下楼。虽然很多地方都已经开始慢慢的开放了,眼看宅在家,吃了睡睡了吃,肚子上的救生圈都出来了一层又一层。宅男的我都练出一身厨艺。买了理发工具已经可以兼职当“Tony”老师理发了。想必大家已经窝在家里快发霉了吧,趁着时间充裕,我又重新捡起了之前学习的PyQt5。以前不是有一个打地鼠的游戏,这次用简单100多行代码写一个《消灭地鼠病毒》的小游戏,效果如下,废话少说先看视频!Py...

weixin_39985365的博客 4839

【图像超分】论文复现:Pytorch实现ESPCN

论文精读:由于ESPCN没有公布源码,我们选择github上一个高star的项目来复现。准备数据集,以及数据预处理搭建网络模型设置参数并训练测试训练好的模型用训练好的模型测试自己的数据本文我们使用pycharm链接服务器训练。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 1万+

python期末作业100多行的游戏代码_手把手教你!100行代码,用Python做一个“消灭病毒”的小游戏...

安装PyQt其实安装比较简单,只需在命令行输入pip install PyQt5,引入模块:02构建界面构造窗口,添加图标和音乐,并以网格形式对控件进行布局1).构造1个窗口PyQt5应用必须创建一个应用(Application)对象;sys.argv参数是一个来自命令行的参数列表,Top是窗口的类,setFixedSize设置窗口大小为900x600;show方法在屏幕上显示出widget;sy...

weixin_39853843的博客 1297

ROS2 多机器人导航仿真入门教程(一)

RMF 是建立在 ROS 2 基础上的一系列可重复使用、可扩展的库和工具,可实现任何类型机器人系统的异构机群的互操作性。RMF 利用标准化的通信协议与部署机器人的基础设施、环境和自动化系统进行通信,以优化关键资源(如机器人、电梯、门、通道等)的使用。它通过资源分配和通过 RMF 核心(将在本书后面详细介绍)防止共享资源冲突,从而为系统增加智能。RMF 灵活而强大,几乎可以在任何通信层上运行,并与任何数量的物联网设备集成。RMF 的架构设计允许随着环境自动化水平的提高而扩展。

2506_90492529的博客 1660

24. SAP UI5 应用如何使用 OData 数据模型

本教程之前的二十三个步骤,使用的数据模型都是 JSON 模型。从本步骤开始,我们要学习另一种非常重要的数据模型:OData 数据模型。 OData 数据模型也是 SAP 产品里广泛使用的数据模型,比如 SAP S/4HANA,SAP CRM Fiori 应用等等,都使用的是 OData 数据模型而不是 JSON 数据模型。 使用 OData 数据模型的典型场景就是,通过 OData 模型提供的 Read API,将远端服务器上存储的数据通过 OData 协议读取到客户端,并显示在 SAP UI5 应用里。.

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 5801

pyqt python 输入中文_手把手教你!100行代码,用Python做一个“消灭病毒”的小游戏...

转自:菜鸟学Python烟花三月下扬州,我想3月能下楼。虽然很多地方都已经开始慢慢的开放了,但是我怀念的胡辣汤,海底捞,还有烧鸡都没有开门。眼看宅在家,吃了睡睡了吃,肚子上的救生圈都出来了一层又一层。宅男的我都练出一身厨艺。买了理发工具已经可以兼职当“Tony”老师理发了。想必大家已经窝在家里快发霉了吧,趁着时间充裕,我又重新捡起了之前学习的PyQt5。以前不是有一个打地鼠的游戏,这次用...

weixin_39756696的博客 163

数据仓库从明细到汇总:DWD与DWS层建模实战指南

DWS层的“主题”是指业务分析的核心场景,通常分为“用户主题、商品主题、订单主题、营销主题”等。主题的定义需紧密结合业务需求,避免“为了汇总而汇总”。例如,电商平台的核心业务需求包括“用户活跃度分析”“商品销售情况分析”“订单转化分析”,对应的DWS层主题即可定义为“用户主题汇总表”“商品主题汇总表”“订单主题汇总表”。主题定义时需注意“粒度适中”——汇总粒度既不能过细(否则与DWD层重复,失去汇总意义),也不能过粗(否则无法满足细分分析需求)。

2401_83088008的博客 646

pyqt5 将值传给下一个窗体_手把手教你!100行代码,用Python做一个“消灭病毒”的小游戏...

转自:菜鸟学Python烟花三月下扬州,我想3月能下楼。虽然很多地方都已经开始慢慢的开放了,但是我怀念的胡辣汤,海底捞,还有烧鸡都没有开门。眼看宅在家,吃了睡睡了吃,肚子上的救生圈都出来了一层又一层。宅男的我都练出一身厨艺。买了理发工具已经可以兼职当“Tony”老师理发了。想必大家已经窝在家里快发霉了吧,趁着时间充裕,我又重新捡起了之前学习的PyQt5。以前不是有一个打地鼠的游戏,这次用...

weixin_39868248的博客 227

关于爬虫源影视资源设置

本文介绍了Omnibox 2.1.3版本的爬虫脚本配置方法,重点演示了如何添加猫眼资源数据源。脚本包含完整的API请求处理、数据格式化、视频详情获取和弹幕匹配等功能模块。通过环境变量配置采集站API地址和弹幕API地址,支持视频列表获取、分类检索、详情查询和播放地址解析等功能。脚本采用模块化设计,包含完善的错误处理和日志记录机制,能够将采集站返回的数据转换为标准格式,并支持批量获取视频详情来丰富数据。同时提供了弹幕匹配功能,可根据视频文件名或播放地址自动匹配相关弹幕资源。

欢迎来到鸾姝淡月博客,专为程序员和编程爱好者打造的技术博客。我们分享编程语言趋势、开发工具、编程哲学、职业发展等,助你掌握新技术,优化技能,激发编程热情。 4687

基于STM32单片机设计的红外人脸测温仪(QT上位机)

基于STM32单片机设计的红外人脸测温仪(QT上位机)是一种结合红外测温和人脸识别技术的设备,可以快速、非接触地测量人体体温并识别身份,广泛应用于人员密集场所的体温筛查和出入管理。基于STM32单片机设计的红外人脸测温仪是一种功能实用、易于使用的人脸测温设备,可以有效提高测温效率和识别准确率,广泛应用于各类人员密集场所的体温筛查和出入管理。

走向CTO的路上... 1720

python 病毒大战的积分部分和奖励部分_手把手教你!100行代码,用Python做一个“消灭病毒”的小游戏...

安装PyQt其实安装比较简单,只需在命令行输入pip install PyQt5,引入模块:02构建界面构造窗口,添加图标和音乐,并以网格形式对控件进行布局1).构造1个窗口PyQt5应用必须创建一个应用(Application)对象;sys.argv参数是一个来自命令行的参数列表,Top是窗口的类,setFixedSize设置窗口大小为900x600;show方法在屏幕上显示出widget;sy...

weixin_31281613的博客 356

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

pygame小游戏——消灭病毒保卫城市

pygame小游戏——消灭病毒保卫城市 游戏简介 近期新冠肺炎疫情肆虐,考虑病毒传播的机理,用pygame开发消灭病毒保卫城市小游戏。本游戏属于策略游戏,通过设定城市人数(决定收入),可购买道具,包括医护人员(决定收留病人的数量)、研发药物(可提升治愈率,降低致死率)、限制出行(可降低人员移动的幅度,同时减少资金的产生)、全民防护(可阻止病毒传染)。每一天可利用收入进行道具的购买,并开始防护,等所...

weixin_39151703的博客 1429

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

100行的python作品详解_100行Python代码,完成一个打地鼠小游戏!

↑关注 + 星标,每天学Python新技能后台回复【大礼包】送你Python自学大礼包最近在学习使用 Python 来完成一些小游戏,使用到的有 Pygame 和 PyQt5 等,在前面,已经通过 Pygame 完成来一个小小的 Mp3 工具,Mp3 小工具最近,又学习了下 PyQt5,根据网上前人的代码,整理了一个打地鼠的小游戏,今天也分享给大家,一起学习!游戏画面首先先进行游戏画面排版,cl...

weixin_39833763的博客 516

python打地鼠小游戏代码_制作一个打地鼠的小游戏!100行Python代码轻松搞定

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。以下文章来源于萝卜大杂烩 ,作者周萝卜 游戏画面首先先进行游戏画面排版,classTopWindow(QWidget):def__init__(self,parent=None):super().__init__(parent)self.virusnum=0self.setWindowTi...

weixin_42528780的博客 1217

python简单小游戏代码50行,简单的python小游戏代码

想必大家已经窝在家里快发霉了吧,趁着时间充裕,我又重新捡起了之前学习的PyQt5。以前不是有一个打地鼠的游戏,这次用简单100多行代码写一个《消灭地鼠病毒》的小游戏,效果如下,废话少说先看视频!眼看宅在家,吃了睡睡了吃,肚子上的救生圈都出来了一层又一层。买了理发工具已经可以兼职当“Tony”老师理发了。虽然很多地方都已经开始慢慢的开放了,但是我怀念的胡辣汤,海底捞,还有烧鸡都没有开门。大家好,给大家分享一下python简单小游戏代码教程,很多人还不知道这一点。设为 “星标”,重磅干货,第一时间送达!

阿发狗伪原创 89

python打地鼠脚本_制作一个打地鼠的小游戏!100行Python代码轻松搞定

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。以下文章来源于萝卜大杂烩 ,作者周萝卜游戏画面首先先进行游戏画面排版,classTopWindow(QWidget):def __init__(self, parent=None):super().__init__(parent)self.virusnum=0self.setWindowTitle(...

weixin_33364098的博客 1148

python简单的病毒编程代码,如何用python做恶搞病毒

Python的gui中有三大框架,分别是PyQt、wxpython和tkinter,我个人偏爱于PyQt,因为PyQt是比较流行的一个 Tkinter 的替代品,功能非常强大,可以用Qt开发多美漂亮的界面,也就可以用PyQt开发多么漂亮的界面。我们设置的每个virus的flag的初始值为0,当病毒出现在该virus类时,之前已将其设置成1,只需要看看当前小锤砸到的virus类的flag是否为1就可以判断小锤是否砸到病毒了,如果砸到则计1分。为什么要添加时间控件呢?最后构造1个kill函数,主要用于计分。

Night368的博客 950

Python Pygame实战:从零开发“消灭病毒”2D射击游戏

游戏开发是理解实时交互程序设计的绝佳途径,其核心在于游戏循环(Game Loop)——一个持续运行的进程,负责处理用户输入、更新游戏状态和渲染画面。这一原理构成了几乎所有游戏引擎的基础。在技术实现上,面向对象编程(OOP)将游戏中的实体(如玩家、敌人、子弹)抽象为独立的类,通过封装属性和方法实现高内聚、低耦合的设计,这极大地提升了代码的可维护性和可扩展性。Pygame库作为Python生态中轻量级的2D游戏开发模块,完美地封装了底层图形、事件和声音处理,让开发者能聚焦于游戏逻辑本身,快速构建原型。本文以“消

weixin_30239339的博客 611

python 小游戏 字符界面 50行代码_制作一个打地鼠的小游戏!100行Python代码轻松搞定...

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。以下文章来源于萝卜大杂烩 ,作者周萝卜游戏画面首先先进行游戏画面排版,classTopWindow(QWidget):def __init__(self, parent=None):super().__init__(parent)self.virusnum=0self.setWindowTitle(...

weixin_39543773的博客 906

python打地鼠游戏代码100行_制作一个打地鼠的小游戏!100行Python代码轻松搞定

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。以下文章来源于萝卜大杂烩 ,作者周萝卜游戏画面首先先进行游戏画面排版,classTopWindow(QWidget):def __init__(self, parent=None):super().__init__(parent)self.virusnum=0self.setWindowTitle(...

weixin_39548787的博客 954
上一篇: 程序员要怎么样才能脱单
下一篇: 帮优质粉丝脱单|【福建女45】No.45|22岁,168CM,本科,可爱小美女
菜鸟学Python
博客等级 码龄9年 8086粉丝 571原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值