司空娅玲 发表于 2025-8-28 07:45:11

pygame小游戏飞机大战_8继承精灵玩家优化

为了实现碰撞消失的功能,使用继承精灵进行对玩家的优化
# 引入飞机的类
class Plane(pygame.sprite.Sprite):
    # 创建玩家的方法,引入screen模块
    def __init__(self, screen):
      # 引入图片创建玩家
      self.player = pygame.image.load("./images/me1.png")
      self.image=self.player
      # 设置速度变量
      self.speed = 10
      # 调用继承精灵初始化方法
      pygame.sprite.Sprite.__init__(self)
      # 根据图片进行获取矩形对象
      self.rect =self.image.get_rect()
      self.rect.topleft =
      self.x = 179
      self.y = 500
      # 使screen变为飞机类的一个属性
      self.screen = screen
      # 定义装子弹的列表
      self.bullets = pygame.sprite.Group()

    # 定义update方法包含检测指令和绘制
    def update(self):
      self.key_control()
      self.display()
    # 创建玩家移动的方法
    def key_control(self):
      # 判断按下键盘事件,对玩家x,y坐标进行调整使玩家移动
      key_pressed = pygame.key.get_pressed()
      if key_pressed or key_pressed:
            self.rect.top -= self.speed
      if key_pressed or key_pressed:
            self.rect.right+= self.speed
      if key_pressed or key_pressed:
            self.rect.left -= self.speed
      if key_pressed or key_pressed:
            self.rect.bottom += self.speed
      if key_pressed:
            # 按下空格键发射子弹
            bullet = Bullet(self.screen, self.rect.left, self.rect.top)
            # 将子弹存入列表
            self.bullets.add(bullet)

    def display(self):
      # 绘制玩家
      self.screen.blit(self.player, self.rect)
      # 更新子弹坐标
      self.bullets.update()
      # 绘制所有子弹到屏幕
      self.bullets.draw(self.screen)与原本代码的对比 
# 引入飞机的类
class Plane(object):
    # 创建玩家的方法,引入screen模块
    def __init__(self, screen):
      # 引入图片创建玩家
      self.player = pygame.image.load("./images/me1.png")
      # 设置速度变量
      self.speed = 10

      self.x = 179
      self.y = 500
      # 使screen变为飞机类的一个属性
      self.screen = screen
      # 定义装子弹的列表
      self.bullets = []

    # 创建玩家移动的方法
    def key_control(self):
      # 判断按下键盘事件,对玩家x,y坐标进行调整使玩家移动
      key_pressed = pygame.key.get_pressed()
      if key_pressed or key_pressed:
            self.y -= self.speed
      if key_pressed or key_pressed:
            self.x += self.speed
      if key_pressed or key_pressed:
            self.x -= self.speed
      if key_pressed or key_pressed:
            self.y += self.speed
      if key_pressed:
            # 按下空格键发射子弹
            bullet = Bullet(self.screen, self.x, self.y)
            # 将子弹存入列表
            self.bullets.append(bullet)

    def display(self):
      # 绘制玩家
      self.screen.blit(self.player, (self.x, self.y))
      # 遍历所有子弹
      for bullet in self.bullets:
            # 引入让子弹飞起来的方法
            bullet.auto_move()
            # 显示子弹
            bullet.display()
来源:豆瓜网用户自行投稿发布,如果侵权,请联系站长删除
页: [1]
查看完整版本: pygame小游戏飞机大战_8继承精灵玩家优化