thunderfighter/玩家飞机.txt

62 lines
2.3 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Sprite 精灵
class HeroPlane(pygame.sprite.Sprite):
# 存放所有飞机的子弹的组
bullets = pygame.sprite.Group()
def __init__(self, screen):
# 这个精灵的初始化方法 必须调用
pygame.sprite.Sprite.__init__(self)
# 图片
self.image = pygame.image.load('./feiji/hero1.png')
# 根据图片image获取矩形的对象
self.rect = self.image.get_rect() # rect属性矩形
self.rect.topleft = [Manager.bg_size[0] / 2 - 100 / 2, 600] # 矩形左上角坐
# 窗口
self.screen = screen
# 速度
self.speed = 15
# pygame.sprite.Group()生成一个放精灵的对象 类似一个列表
self.bullets = pygame.sprite.Group()
def key_control(self):
"""
按键的监听 用来改变飞机坐标
"""
# 监听键盘事件 键盘一直按下
key_pressed = pygame.key.get_pressed() # 注意这种方式是能够检测到连续按下的,比之前的版本要新
# 改变飞机坐标
if key_pressed[K_w] or key_pressed[K_UP]:
self.rect.top -= self.speed
if key_pressed[K_s] or key_pressed[K_DOWN]:
self.rect.bottom += self.speed
if key_pressed[K_a] or key_pressed[K_LEFT]:
self.rect.left -= self.speed
if key_pressed[K_d] or key_pressed[K_RIGHT]:
self.rect.right += self.speed
if key_pressed[K_SPACE]:
# 按下空格键 发射一枚子弹 把飞机的坐标传入子弹
bullet = Bullet(self.screen, self.rect.left, self.rect.top)
# 把子弹放到列表里
self.bullets.add(bullet)
# 存放所有飞机的子弹的组
HeroPlane.bullets.add(bullet)
# 调用飞机的更新方法
def update(self):
self.key_control()
self.display()
def display(self):
"""显示飞机到窗口"""
self.screen.blit(self.image, self.rect)
# 更新子弹坐标
self.bullets.update()
# 把所有的子弹全部添加到屏幕
self.bullets.draw(self.screen)
@classmethod
def clear_bullets(cls):
# 清空子弹
cls.bullets.empty()