飞机移动及发射导弹

This commit is contained in:
206530331 2021-06-14 22:29:05 +08:00
parent 4db86ace2e
commit a4b13c30aa
1 changed files with 51 additions and 1 deletions

52
boss.py
View File

@ -45,4 +45,54 @@ class BossPlane(EnemyPlane):
if self.rect[0] < leftX or self.rect[0] > rightX: if self.rect[0] < leftX or self.rect[0] > rightX:
self.speed = -self.speed self.speed = -self.speed
self.rect[0] += self.speed self.rect[0] += self.speed
# 如果飞机移动出屏幕则将飞机设置为初始
if self.rect[1] > self.main_scene.size[1]:
self.set_pos(240, 0)
self.interval_index += 1
if self.interval_index < self.interval:
return
self.interval_index = 0
self.index = self.index + 1
if self.index >= len(self.images):
self.index = 0
self.visible = False
self.image = self.images[self.index]
self.mask = pygame.mask.from_surface(self.image)
def shot(self):
starttime = pygame.time.get_ticks()
passtime = starttime - self.endtime
if passtime < self.interval:
return
self.endtime = starttime
# 每次发射三颗子弹
wait_for_shot = []
# 从子弹列表取出3颗目前尚未发射的子弹
# 如果子弹的visible为false说明子弹尚未发射
for bullet in self.bullets:
# 如果子弹不可见,说明子弹闲置状态
if not bullet.visible:
wait_for_shot.append(bullet)
if len(wait_for_shot) >= 3:
break
# 子弹发射位置从posx位置开始 向右排列三颗子弹
posx = self.rect[0] - 15
# 依次设置选择子弹的初始位置,并将其设置为发射状态、移动速度
for bullet in wait_for_shot:
bullet.visible = True
posx = posx + 30
bullet.set_speed(4)
bullet.set_pos(posx + 3, self.rect[1] + self.rect[3] / 2)
def draw(self):
for bullet in self.bullets:
if bullet.visible:
bullet.draw()
# if not self.visible:
# return
self.main_scene.scene.blit(
self.images[self.index], (self.rect[0], self.rect[1]))
# print('BOSS HP' + str(self.HP))