This commit is contained in:
206530333 2021-06-14 20:39:51 +08:00
parent 0b29079798
commit bbd388fc96
1 changed files with 54 additions and 1 deletions

55
play.py
View File

@ -54,4 +54,57 @@ class MainScene(object):
pygame.time.set_timer(self.ADDENEMY6, 8000) # 每隔 8000ms 触发
pygame.time.set_timer(self.ADDENEMY1, 5000)
# 绘制
def draw_elements(self):
if self.gameover:
return
# 绘制地图
self.map.draw()
# 绘制英雄飞机
self.hero.draw()
# 依次绘制英雄飞机每一颗发射出去的子弹
# 英雄子弹的绘制在他自己的函数里了。
# 绘制敌人飞机和飞机子弹
for enemy in self.enemy_list:
# 如果敌人已经死亡或者逃掉清理出列表。不然会卡卡的要死的。但enemy删除后他的子项
# 也跟着删除了bullet瞬间消失 子弹在飞就难了,难道子弹也要子弹精灵?。
# 找到解决办法了把子弹也存到当前class里面self.enemy_bullet_list][],
# 在子弹的bullet.py里添加一个属性, 列如 self.outscene 子弹跑到屏幕外就设置成True,
# 在这里判断if bullet.outscent == True: enemy_bullet_liset.remove(bullet)
# 这样跑出屏幕的子弹也自动删除,而敌机被击落后,打出的子弹在屏幕内不会删除,还能继续运动。
# 需要在draw() 和 action ()里面都添加子弹绘制和动作函数。
if not enemy.visible:
self.enemy_list.remove(enemy)
else:
enemy.draw()
# 绘制BOSS机
for boss in self.boss_list:
# boss_life = self.my_font.render('BOSS life:' + str(boss.HP),True,(0,0,255))
# self.scene.blit(boss_life,(self.size[0]/2-200,0))
hp_remain = boss.HP/1000
if hp_remain < 0:
hp_remain = 0
# red = (255,0,0)
# greed = (0,255,0)
if hp_remain > 0.25:
pygame.draw.line(self.scene, (0, 255, 0),
(200, 0), (200+300*hp_remain, 0), 30)
else:
pygame.draw.line(self.scene, (255, 0, 0),
(200, 0), (200+300*hp_remain, 0), 30)
if boss.visible:
boss.draw()
# 绘制爆炸图片
for bomb in self.bombs:
if bomb.visible:
bomb.draw()
# 绘制玩家信息
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))