为了实现碰撞消失的功能,使用继承精灵进行对玩家的优化- # 引入飞机的类
- 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 = [179,500]
- 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[K_w] or key_pressed[K_UP]:
- self.rect.top -= self.speed
- if key_pressed[K_d] or key_pressed[K_RIGHT]:
- self.rect.right+= self.speed
- if key_pressed[K_a] or key_pressed[K_LEFT]:
- self.rect.left -= self.speed
- if key_pressed[K_s] or key_pressed[K_DOWN]:
- self.rect.bottom += self.speed
- if key_pressed[K_SPACE]:
- # 按下空格键发射子弹
- 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[K_w] or key_pressed[K_UP]:
- self.y -= self.speed
- if key_pressed[K_d] or key_pressed[K_RIGHT]:
- self.x += self.speed
- if key_pressed[K_a] or key_pressed[K_LEFT]:
- self.x -= self.speed
- if key_pressed[K_s] or key_pressed[K_DOWN]:
- self.y += self.speed
- if key_pressed[K_SPACE]:
- # 按下空格键发射子弹
- 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()
复制代码 来源:豆瓜网用户自行投稿发布,如果侵权,请联系站长删除 |