获取飞机矩阵、位置、飞机动作

This commit is contained in:
206530333 2021-06-15 07:33:37 +08:00
parent 9d0f674c33
commit 344e7e3e7f
1 changed files with 44 additions and 0 deletions

View File

@ -111,3 +111,47 @@ class EnemyPlane(object):
self.endtime = pygame.time.get_ticks()
self.set_pos(random.randint(
0, self.main_scene.size[1] - self.rect[2] - 20), 0)
# 获得飞机矩形
def rect(self):
return self.rect
# 设置飞机位置
def set_pos(self, x, y):
self.rect[0] = x
self.rect[1] = y
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位置开始 向右排列三颗子弹
posx = self.rect[0] - 9
# # 依次设置选择子弹的初始位置,并将其设置为发射状态、移动速度
for bullet in wait_for_shot:
bullet.visible = True
bullet.set_speed(5)
bullet.set_pos(posx, self.rect[1] + self.rect[3] / 2)
posx = posx + self.rect[2]/2
# 飞机动作
def action(self):
# 飞机每次移动向上移动self.speed速度
self.rect.move_ip(0, self.speed)
# 如果飞机移动出屏幕则将飞机设置为不可见状态
if self.rect[1] > self.main_scene.size[1]:
self.visible = False