目标,显示英雄飞机的得分,生命值,BOSS机的动态生命条

战斗界面中,信息数据是必不可少的,一般都包括得分值,当遇到BOSS时,还会显示BOSS的动态生命条,还有其他的飞机数量,炸弹数量等。不管生命信息,原理都是一样的。

假设你有一个BOSS类,继承于pygame.sprite.Sprite,BOSS有HP值属性。

还有英雄飞机,继承于pygame.sprite.Sprite,属性里有得分和生命。

显示信息一般在主类里,用 pygame.Surface.blit()来绘制,在主类里面取得所需的HP值,得分,生命。用类似

# 绘制玩家信息

hero_info = self.my_font.render('score:' + str(self.hero_score), True,

(255, 0, 0))

hero_life = self.my_font.render("生命:" + str(self.hero.HP), True,

(0, 255, 0))

self.scene.blit(hero_info, (0, 0))

self.scene.blit(hero_life, (self.size[0] - 100, 0))

这样的方法在屏幕显示。

但是当显示的信息是多样化,列如要显示BOSS的生命条,要显示小BOSS的生命条,生命条要随飞机移动,要显示伤害值等等数据或者图像的时候,在主函数里就显得不大方便了,管理起来很麻烦。

其实可以在每个sprite里设置各自的显示方式,对自己的显示方式进行自己管理。

pygame.sprite.Group()里的draw函数,只能显示sprite,不能对在sprite里的其他图像进行显示。所以还得在主类里添加显示的代码。

例如在boss类里添加自己的绘制函数例如draw_life_indicate(self),在函数里,对BOSS的生命进行计算,绘制生命条,设置显示位置等操作。

在主函数里只需添加一行代码就行了。

列如在BOSS里中添加draw_life_indicate(self)函数 初设HP为100,所以剩下的比例为 self.HP/100

当半血以上时,用绿色条显示生命值,当小于半血时,用红色,当小于等于零时,自毁。

    def draw_life_indicate(self):hp_remain = self.HP/100if self.HP <= 0:self.kill()if hp_remain > 0.50:# print(hp_remain)pygame.draw.line(self.main_scene, (0, 255, 0),(200, 0), (200+300*hp_remain, 0), 30)else:self.motion_type = 1pygame.draw.line(self.main_scene, (255, 0, 0),(200, 0), (200+300*hp_remain, 0), 30)

在主函数里添加:

        if self.boss_sprite:for boss in self.boss_sprite:#显示BOSS的生命条。boss.draw_life_indicate()

其中self.boss_sprite= pygame.sprite.Group()或者

self.boss_sprite = pygame.sprite.RenderUpdates()

RenderUpdates(Group)继承至Group,强化了一下他的draw()函数,对变化的图像进行重新绘制,不变化的不绘制,提高运行速度,静态画面多的游戏里使用,可以提高游戏性能。飞机大战这种几乎都在动的游戏,没提升。

pygame 飞机大战飞机、BOSS信息的显示相关推荐

  1. cocos2d-x 3.2 |飞机大战:飞机与子弹

    cocos2d-x 3.2 |飞机大战:飞机与子弹 前情提要:飞机大战第二篇 实现飞机与子弹 如下:新建类----->Plane + Bullet 第一步:飞机类 Plane.h #includ ...

  2. c语言小程序飞机大战,飞机大战微信小游戏:经典像素飞机大战小程序,点开即玩...

    50000+游戏爱好者已加入我们! 每天推荐好玩游戏! 关注我们,沐沐带你发现好游戏! <经典像素飞机大战>游戏小程序好玩吗? <经典像素飞机大战>小游戏怎么玩? 怎么进入&l ...

  3. java飞机大战飞机背景滚动_飞机大战背景/音效动起来

    前面的准备工作已经做完,马上开始我们的第一站吧,游戏背景和游戏音乐的实现. bg.gif 1.为了项目结构清晰和代码规范,我们把游戏拆解为层次结构来实现,在src文件夹下新建一个目录backgroun ...

  4. cocos2d-x飞机大战——飞机移动的动画效果

    具体需求:飞机向左移动播放向左移动动画,向右移动播放向右移动的动画 实现思路:cocos2d-x里面提供了Animation类,该类继承Ref和Clonable,并不继承Action基类,所以无法直接 ...

  5. java飞机大战飞机背景滚动_微信经典飞机大战之二:飞机起飞(背景滚动)

    飞机起飞,其实质上是背景在滚动,相对运行引起的错觉. 我们利用2张一样的背景来循环滚动,然后通过每次滚动的时间间隔和像素间隔来控制背景滚动的速度,也就是飞机飞行的速度.注意:图片的高度一定要比屏幕高度 ...

  6. 小甲鱼python游戏代码_【小甲鱼】零基础学习python pygame 飞机大战可执行源代码...

    [实例简介] [小甲鱼]零基础学习python pygame 飞机大战可执行源代码,觉得挺有意思,故此分享. [实例截图] [核心代码] 飞机大战 └── 飞机大战 ├── bullet.py ├── ...

  7. java小游戏之飞机大战

    飞机大战脚本组成 1.有一个所有物体的父物体GameObject,然后就是一堆物体继承于他,等到他的属性于函数. 2.窗口组件 3.工具脚本(负责做一些杂事和存放图片) 代码 GameObject p ...

  8. 【Java代码实现飞机大战小游戏】简单理解

    飞机大战 飞机大战小游戏历经10天完成,主要用到的就是我们面向对象部分的知识:类,封装,继承,多态,静态代码块等等内容+swing部分内容.所以即使你是java小白,也不用担心欧! 游戏说明:游戏有3 ...

  9. pygame飞机大战用精灵组(sprite)的层(layer)编写(二)BOSS登场了

    BOSS的编写方式是最复杂的,编写完这个,其他的飞机都是小菜. 先从BOSS的动态图形开始吧. 大部分的飞机一张从头到尾一张图片解决,也不觉得怎么样,但是BOSS就是得有BOSS的样子,自拍也比别人多 ...

最新文章

  1. 在Ubuntu 14.04 64bit上进行md5加密编程
  2. Android 占位符 %1$s %1$d
  3. lvs调整hash表大小
  4. JAVA线程池的简单实现及优先级设置
  5. DS18B20 理解与操作源码
  6. SQL优化基础 使用索引(一个小例子)
  7. 一个按钮,如果5分钟内点击再次点击给予提示操作频繁,在JS里可以这样写
  8. 21 个非常有用的 .htaccess 提示和技巧
  9. tomcat运行问题解决方法
  10. CAP 2.3版本发布,支持 MongoDB
  11. r语言怎么把txt数据变成一个Rdata格式_甲基化芯片数据下载如何读入到R里面
  12. python自定义排序规则_python自定义排序
  13. 【ES】ES 7.6 fuzzy 搜索 (模糊搜索)
  14. Python基础之完数输出
  15. python版本回退_版本回退
  16. python webqq机器人_使用Python的Tornado框架实现一个简单的WebQQ机器人
  17. 计算机模拟计算 电脑配置,Material Studio材料模拟计算的工作站配置方案
  18. python做地图热力图保存为png_Python如何实现热力图?可视化入库图实战演示
  19. iOS 获取当前app的名称和版本号
  20. Hutool - 日期时间工具 - DateUtil

热门文章

  1. 关于HttpWebRequest AddRange 方法的参数
  2. 自由Windows软件
  3. Word控件Spire.Doc 转换教程(九):在 Doc 转PDF 转换期间设置图像质量
  4. 【读书笔记】—— 学习之道、刻意练习
  5. 48. SSRF篇——SSRF原理+利用+防御
  6. 使用第三方框架Xstream轻松解析xml数据
  7. 手写简单版vue,深入理解vue的响应式原理
  8. 如何更好的设计原理图符号(转)
  9. QTableWidget滚动条设置
  10. 宁波专业SEO,如何让网站快速排名?