找回密码
 立即注册
首页 业界区 业界 pygame小游戏飞机大战_8继承精灵玩家优化 ...

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

司空娅玲 4 天前
为了实现碰撞消失的功能,使用继承精灵进行对玩家的优化
  1. # 引入飞机的类
  2. class Plane(pygame.sprite.Sprite):
  3.     # 创建玩家的方法,引入screen模块
  4.     def __init__(self, screen):
  5.         # 引入图片创建玩家
  6.         self.player = pygame.image.load("./images/me1.png")
  7.         self.image=self.player
  8.         # 设置速度变量
  9.         self.speed = 10
  10.         # 调用继承精灵初始化方法
  11.         pygame.sprite.Sprite.__init__(self)
  12.         # 根据图片进行获取矩形对象
  13.         self.rect =  self.image.get_rect()
  14.         self.rect.topleft = [179,500]
  15.         self.x = 179
  16.         self.y = 500
  17.         # 使screen变为飞机类的一个属性
  18.         self.screen = screen
  19.         # 定义装子弹的列表
  20.         self.bullets = pygame.sprite.Group()
  21.     # 定义update方法包含检测指令和绘制
  22.     def update(self):
  23.         self.key_control()
  24.         self.display()
  25.     # 创建玩家移动的方法
  26.     def key_control(self):
  27.         # 判断按下键盘事件,对玩家x,y坐标进行调整使玩家移动
  28.         key_pressed = pygame.key.get_pressed()
  29.         if key_pressed[K_w] or key_pressed[K_UP]:
  30.             self.rect.top -= self.speed
  31.         if key_pressed[K_d] or key_pressed[K_RIGHT]:
  32.             self.rect.right+= self.speed
  33.         if key_pressed[K_a] or key_pressed[K_LEFT]:
  34.             self.rect.left -= self.speed
  35.         if key_pressed[K_s] or key_pressed[K_DOWN]:
  36.             self.rect.bottom += self.speed
  37.         if key_pressed[K_SPACE]:
  38.             # 按下空格键发射子弹
  39.             bullet = Bullet(self.screen, self.rect.left, self.rect.top)
  40.             # 将子弹存入列表
  41.             self.bullets.add(bullet)
  42.     def display(self):
  43.         # 绘制玩家
  44.         self.screen.blit(self.player, self.rect)
  45.         # 更新子弹坐标
  46.         self.bullets.update()
  47.         # 绘制所有子弹到屏幕
  48.         self.bullets.draw(self.screen)
复制代码
与原本代码的对比 
  1. # 引入飞机的类
  2. class Plane(object):
  3.     # 创建玩家的方法,引入screen模块
  4.     def __init__(self, screen):
  5.         # 引入图片创建玩家
  6.         self.player = pygame.image.load("./images/me1.png")
  7.         # 设置速度变量
  8.         self.speed = 10
  9.         self.x = 179
  10.         self.y = 500
  11.         # 使screen变为飞机类的一个属性
  12.         self.screen = screen
  13.         # 定义装子弹的列表
  14.         self.bullets = []
  15.     # 创建玩家移动的方法
  16.     def key_control(self):
  17.         # 判断按下键盘事件,对玩家x,y坐标进行调整使玩家移动
  18.         key_pressed = pygame.key.get_pressed()
  19.         if key_pressed[K_w] or key_pressed[K_UP]:
  20.             self.y -= self.speed
  21.         if key_pressed[K_d] or key_pressed[K_RIGHT]:
  22.             self.x += self.speed
  23.         if key_pressed[K_a] or key_pressed[K_LEFT]:
  24.             self.x -= self.speed
  25.         if key_pressed[K_s] or key_pressed[K_DOWN]:
  26.             self.y += self.speed
  27.         if key_pressed[K_SPACE]:
  28.             # 按下空格键发射子弹
  29.             bullet = Bullet(self.screen, self.x, self.y)
  30.             # 将子弹存入列表
  31.             self.bullets.append(bullet)
  32.     def display(self):
  33.         # 绘制玩家
  34.         self.screen.blit(self.player, (self.x, self.y))
  35.         # 遍历所有子弹
  36.         for bullet in self.bullets:
  37.             # 引入让子弹飞起来的方法
  38.             bullet.auto_move()
  39.             # 显示子弹
  40.             bullet.display()
复制代码
来源:豆瓜网用户自行投稿发布,如果侵权,请联系站长删除

相关推荐

您需要登录后才可以回帖 登录 | 立即注册