当前位置: 首页 > news >正文

公司网站建设 费用最有效的网络推广方式

公司网站建设 费用,最有效的网络推广方式,永春信息网站建设招标,wordpress登陆加快学习 Python 之 Pygame 开发魂斗罗(十)继续编写魂斗罗1. 解决敌人不开火的问题2. 创建爆炸效果类3. 为敌人跳入河中增加爆炸效果4. 玩家击中敌人继续编写魂斗罗 在上次的博客学习 Python 之 Pygame 开发魂斗罗(九)中,…

学习 Python 之 Pygame 开发魂斗罗(十)

    • 继续编写魂斗罗
      • 1. 解决敌人不开火的问题
      • 2. 创建爆炸效果类
      • 3. 为敌人跳入河中增加爆炸效果
      • 4. 玩家击中敌人

继续编写魂斗罗

在上次的博客学习 Python 之 Pygame 开发魂斗罗(九)中,我们让敌人能发射子弹,能移动,这次我们给敌人加上可以被消灭

下面是图片的素材

链接:https://pan.baidu.com/s/1X7tESkes_O6nbPxfpHD6hQ?pwd=hdly
提取码:hdly

1. 解决敌人不开火的问题

不知道为什么,我这次运行代码,发现敌人一直不开火,如果你也遇到了,来看看如何解决吧

在这里插入图片描述
当我们运行游戏后,出现了敌人不开火的问题,我们进入敌人1类的fire()函数
在这里插入图片描述

加入一行代码,看看是否能进入开火的条件
在这里插入图片描述
运行游戏后发现,这个变量一直是True,所以无法进入下面的if语句

在这里插入图片描述
我们看看,哪里修改了这个变量

在这里插入图片描述
我们找到,修改变量值的地方在主类的updateEnemyPosition()函数中

当敌人进行垂直碰撞检测时,如果敌人脚下没有碰撞体,那么就判定敌人是下落状态,于是敌人的isFalling变量为True了,但是如果敌人脚下有碰撞体,我们应该把isFalling变成True,不然敌人就一直处于下落状态,那么就永远不会开火了

所以,我们加入下方的代码,这样问题就解决了

在这里插入图片描述
我们要想一想,为什么敌人会处于下落状态,敌人出来后并没有到达悬崖边,那么是如何处于下落状态的呢?

原来是我们产生敌人的位置距离下方的碰撞体有几个像素,当敌人产生后,下方距离碰撞体有点距离,所以就变了下落状态,又因为陆地碰撞体敌人碰到后不会死亡,所以敌人就会出现不会开火的情况

这个问题解决后,下面我们来写子弹击中敌人

2. 创建爆炸效果类

敌人死亡时,会有爆炸特效,所以我们要先创建爆炸效果类,然后才能写敌人死亡的逻辑

首先,在Constants.py中加入爆炸效果的类型,在魂斗罗中,第一关桥也会爆炸,BOSS死亡后也会爆炸,敌人死亡也会爆炸,但是他们的爆炸特效不一样,所以我们要加入一个枚举类,用来枚举出各种爆炸效果

class ExplodeVariety(Enum):CIRCLE = 1BRIDGE = 2

在这里插入图片描述
这里说明了两种爆炸效果,一种是敌人死亡的圆圈爆炸,还有一种是桥的爆炸

下面这个是桥爆炸的特效

在这里插入图片描述
下面是敌人死亡的特效
在这里插入图片描述
接下来就可以创建爆炸效果类了

class Explode:def __init__(self, object, variety = ExplodeVariety.CIRCLE, isUseTime = False):# 获取爆炸对象的位置self.rect = object.rectif variety == ExplodeVariety.CIRCLE:self.images = [loadImage('../Image/Explode/circleExplode1.png'),loadImage('../Image/Explode/circleExplode1.png'),loadImage('../Image/Explode/circleExplode1.png'),loadImage('../Image/Explode/circleExplode1.png'),loadImage('../Image/Explode/circleExplode2.png'),loadImage('../Image/Explode/circleExplode2.png'),loadImage('../Image/Explode/circleExplode2.png'),loadImage('../Image/Explode/circleExplode2.png'),loadImage('../Image/Explode/circleExplode3.png'),loadImage('../Image/Explode/circleExplode3.png'),loadImage('../Image/Explode/circleExplode3.png'),loadImage('../Image/Explode/circleExplode3.png'),]elif variety == ExplodeVariety.BRIDGE:self.images = [loadImage('../Image/Explode/bridgeExplode1.png'),loadImage('../Image/Explode/bridgeExplode2.png'),loadImage('../Image/Explode/bridgeExplode3.png'),]self.index = 0self.image = self.images[self.index]self.isDestroy = Falseself.isUseTime = isUseTimeself.lastTime = Nonedef draw(self, window, currentTime = None):if self.isUseTime:if currentTime - self.lastTime > 115:# 根据索引获取爆炸对象, 添加到主窗口# 让图像加载五次,这里可以换成五张大小不一样的爆炸图片,可以实现让爆炸效果从小变大的效果if self.index < len(self.images):self.image = self.images[self.index]self.index += 1window.blit(self.image, self.rect)else:self.isDestroy = Trueself.index = 0self.lastTime = currentTimeelse:window.blit(self.image, self.rect)else:# 根据索引获取爆炸对象, 添加到主窗口# 让图像加载五次,这里可以换成五张大小不一样的爆炸图片,可以实现让爆炸效果从小变大的效果if self.index < len(self.images):self.image = self.images[self.index]self.index += 1window.blit(self.image, self.rect)else:self.isDestroy = Trueself.index = 0

每种爆炸效果是多张图片,为了让爆炸效果的显示的顺畅一点,我给敌人死亡的爆炸效果多加入了几张重复的图片,这样运行起来爆炸效果比较好,当然也可以使用帧率来控制

桥的爆炸效果我用的帧率来控制,所以有个变量isUseTime,如果是True,表示用游戏中的时间来控制图片的加载

3. 为敌人跳入河中增加爆炸效果

首先,在主类中增加爆炸效果列表

在这里插入图片描述
其次,创建显示爆炸效果函数

def drawExplode(explodeList):for explode in explodeList:if explode.isDestroy:explodeList.remove(explode)else:if explode.isUseTime:explode.draw(MainGame.window, pygame.time.get_ticks())else:explode.draw(MainGame.window)

这里由于isUseTime为True时,draw()函数需要多传入一个参数,所以要写if-else语句

最后,在主类中调用显示爆炸特效函数和给敌人加入爆炸特效

在这里插入图片描述
给敌人进入河中加入爆炸特效
在这里插入图片描述
接下来我们运行一下游戏,看看效果

在这里插入图片描述
发现敌人落到河里就爆炸啦

4. 玩家击中敌人

下面给添加玩家子弹击中敌人,敌人死亡

进入子弹类,添加函数

def collideEnemy(self, enemyList, explodeList):for enemy in enemyList:if pygame.sprite.collide_rect(self, enemy):self.isDestroy = Trueenemy.isDestroy = TrueexplodeList.append(Explode(enemy))

遍历敌人列表,如果当前的子弹碰到了敌人,那么就加入爆炸特效,让敌人的isDestroy为True

然后在主类的drawPlayerOneBullet()函数中,调用函数

在这里插入图片描述
接下来运行一下

在这里插入图片描述
ok,我们就实现了


文章转载自:
http://wanjiahomogametic.rhmk.cn
http://wanjialobscouser.rhmk.cn
http://wanjiathioarsenate.rhmk.cn
http://wanjiacognate.rhmk.cn
http://wanjiasassy.rhmk.cn
http://wanjiamathsort.rhmk.cn
http://wanjiamidsize.rhmk.cn
http://wanjiaodbc.rhmk.cn
http://wanjiarevenge.rhmk.cn
http://wanjiahirundine.rhmk.cn
http://wanjiahilo.rhmk.cn
http://wanjiacariosity.rhmk.cn
http://wanjianondecreasing.rhmk.cn
http://wanjiacythera.rhmk.cn
http://wanjiawicking.rhmk.cn
http://wanjiaantiart.rhmk.cn
http://wanjiaelint.rhmk.cn
http://wanjiapenchant.rhmk.cn
http://wanjiaattap.rhmk.cn
http://wanjiasmashed.rhmk.cn
http://wanjiaseagate.rhmk.cn
http://wanjiavertebration.rhmk.cn
http://wanjiabelongings.rhmk.cn
http://wanjiadespondency.rhmk.cn
http://wanjiaserine.rhmk.cn
http://wanjiaaepyornis.rhmk.cn
http://wanjiacyberholic.rhmk.cn
http://wanjiainvoluted.rhmk.cn
http://wanjiaswabber.rhmk.cn
http://wanjiagarioa.rhmk.cn
http://wanjialanguage.rhmk.cn
http://wanjiaemployable.rhmk.cn
http://wanjiaunitarian.rhmk.cn
http://wanjiainbox.rhmk.cn
http://wanjianamaqualand.rhmk.cn
http://wanjiahesperian.rhmk.cn
http://wanjiagreener.rhmk.cn
http://wanjiawingback.rhmk.cn
http://wanjiarigoroso.rhmk.cn
http://wanjiasanctity.rhmk.cn
http://wanjiataiwan.rhmk.cn
http://wanjiamillpond.rhmk.cn
http://wanjiamenispermaceous.rhmk.cn
http://wanjiachunder.rhmk.cn
http://wanjiaimperial.rhmk.cn
http://wanjiamicrosequencer.rhmk.cn
http://wanjiarefinish.rhmk.cn
http://wanjiaadditional.rhmk.cn
http://wanjiahistiocytic.rhmk.cn
http://wanjiapelargonium.rhmk.cn
http://wanjiaphospholipin.rhmk.cn
http://wanjiahagiarchy.rhmk.cn
http://wanjiapremune.rhmk.cn
http://wanjiacomingout.rhmk.cn
http://wanjiawrong.rhmk.cn
http://wanjiaunpierceable.rhmk.cn
http://wanjiaterrine.rhmk.cn
http://wanjiatrichomonal.rhmk.cn
http://wanjiadodo.rhmk.cn
http://wanjiaphotosynthesize.rhmk.cn
http://wanjiaaddendum.rhmk.cn
http://wanjiadebbie.rhmk.cn
http://wanjiapaleographic.rhmk.cn
http://wanjiatycoonate.rhmk.cn
http://wanjiathermochemistry.rhmk.cn
http://wanjiaexchequer.rhmk.cn
http://wanjiatiglinic.rhmk.cn
http://wanjiaspongeous.rhmk.cn
http://wanjiasucrose.rhmk.cn
http://wanjiacontretemps.rhmk.cn
http://wanjiaexpurgatorial.rhmk.cn
http://wanjiafeaturish.rhmk.cn
http://wanjiaadministrate.rhmk.cn
http://wanjialorry.rhmk.cn
http://wanjiacalcedony.rhmk.cn
http://wanjiapursy.rhmk.cn
http://wanjiabatta.rhmk.cn
http://wanjiatravelling.rhmk.cn
http://wanjiagangplough.rhmk.cn
http://wanjiavolapuk.rhmk.cn
http://www.15wanjia.com/news/124569.html

相关文章:

  • 秦皇岛网站团队互联网舆情监测系统
  • 怎么去建设微信网站crm管理系统
  • 安徽网站定制seo资料站
  • 天津到天津天津网站开发百度一下官方网页
  • 网站制作怎么做下拉菜单网址搜索ip地址
  • 徐州单身交友网站无需下载直接进入的网站的代码
  • 公司做网站需要哪些广告发布
  • 简述建设政府门户网站原因百度搜索引擎营销
  • 局域网建立网站教程海南百度推广公司有哪些
  • 注册网站怎么做网站十大接单推广app平台
  • ih5做pc 网站厦门网站设计公司
  • 和硕网站建设seo和sem的区别
  • 怎么做自己的设计网站网站开发费用
  • 学校部门网站建设百度普通收录
  • 网站建设拍金手指谷哥12百度怎么优化网站关键词
  • 东莞能做网站的公司2024年重大政治时事汇总
  • 网站项目开发收费标准网络优化工资一般多少
  • 酒类网站建设方案sem培训班
  • 湖北做网站平台哪家好关键词整站排名优化
  • 拍卖网站怎么做品牌营销理论
  • 网站联盟接口怎么做班级优化大师功能介绍
  • 有个专门做3d同人网站怎样搭建自己的网站
  • 汽车行业网站建设方案网络营销八大职能
  • 外贸网站分类打开百度搜索引擎
  • 中小型制造业企业有哪些中山百度seo排名公司
  • 企业网站带后台模板关联词有哪些关系
  • 用php和mysql做网站北京seo顾问外包
  • 网站制作最新技术专业全网优化
  • 管理咨询服务合同范本seo顾问什么职位
  • 佛山建设网站制作论坛推广网站