狙兕 发表于 4 天前

pygame小游戏飞机大战_17重新开始游戏

清空子弹:
在飞机和敌机中加入清空子弹的方法:
@classmethod
def clear_bullets(cls):
    # 清空子弹
    cls.bullets.empty()加入倒计时时间:
# 倒计时时间
over_time = 3def show_over_text(self):
    # 游戏结束,倒计时后重新开始
    self.drawText("gameover %d" %Manager.over_time,100,Manager.bg_size/2,textHeight=50,fontColor=)加入重新开始的函数:
    def game_over_timer(self):      # 倒计时-1      Manager.over_time -= 1      if Manager.over_time = Manager.bg_size - self.rect.width:            self.direction = "left"      if self.rect.left0:            self.rect.top -= self.speed      if (key_pressed or key_pressed) and self.rect.right < Manager.bg_size:            self.rect.right += self.speed      if (key_pressed or key_pressed) and self.rect.left > 0:            self.rect.left -= self.speed      if (key_pressed or key_pressed) and self.rect.bottom < Manager.bg_size:            self.rect.bottom += self.speed      if key_pressed:            # 按下空格键发射子弹            bullet = Bullet(self.screen, self.rect.left, self.rect.top)            # 存放所有飞机子弹的组            Plane.bullets.add(bullet)    def display(self):      # 绘制玩家      self.screen.blit(self.player, self.rect)      # 更新子弹坐标      Plane.bullets.update()      # 绘制所有子弹到屏幕      Plane.bullets.draw(self.screen)    @classmethod    def clear_bullets(cls):      # 清空子弹      cls.bullets.empty()# 引入敌人子弹的类class EnemyBullet(pygame.sprite.Sprite):    def __init__(self, screen, x, y):      # 调用继承精灵初始化方法      pygame.sprite.Sprite.__init__(self)      # 引入子弹图片      self.image = pygame.image.load("images/bullet2.png")      # 根据图片进行获取矩形对象      self.rect = self.image.get_rect()      self.rect.centerx = x + 29      self.rect.top = y + 43      # 显示窗口      self.screen = screen      # 定义速度      self.speed = 5    def update(self):      # 修改子弹坐标      self.rect.top += self.speed      # 如果子弹出界,销毁子弹      if self.rect.top > Manager.bg_size:            self.kill()# 引入子弹的类class Bullet(pygame.sprite.Sprite):    def __init__(self, screen, x, y):      # 调用继承精灵初始化方法      pygame.sprite.Sprite.__init__(self)      # 引入子弹图片      self.image = pygame.image.load("images/bullet1.png")      # 根据图片进行获取矩形对象      self.rect = self.image.get_rect()      self.rect.centerx = x + 51      self.rect.bottom = y      # 显示窗口      self.screen = screen      # 定义速度      self.speed = 10    def update(self):      # 修改子弹坐标      self.rect.top -= self.speed      # 如果子弹出界,销毁子弹      if self.rect.bottom < 0:            self.kill()# 定义音乐的类class GameSound(object):    def __init__(self):      # 初始化主程序      pygame.mixer.init()      # 引入背景音乐      pygame.mixer.music.load("sound/game_music.ogg")      # 调整声音大小      pygame.mixer.music.set_volume(0.5)      self.__bomb = pygame.mixer.Sound('sound/get_bomb.wav')    def playBombSound(self):      pygame.mixer.Sound.play(self.__bomb)    def PlayMusic(self):      # 开始播放音乐      pygame.mixer.music.play(-1)#定义碰撞的类class Bomb(object):    # 初始化碰撞    def __init__(self, screen, type):      self.screen = screen      if type == "enemy":            # 加载爆炸资源            self.mImage =       else:            # 加载爆炸资源            self.mImage =       # 设置当前爆炸播放索引      self.mIndex = 0      # 爆炸位置      self.mPos =       # 是否可见      self.mVisible = False    def action(self, rect):      # 触发爆炸方法draw      # 爆炸的坐标      self.mPos = rect.left      self.mPos = rect.top      # 打开爆炸的开关      self.mVisible = True      # 重置索引      self.mIndex = 0    def draw(self):      if not self.mVisible:            return      # 绘制当前爆炸帧      self.screen.blit(self.mImage, (self.mPos, self.mPos))      # 更新索引      self.mIndex += 1      if self.mIndex >= len(self.mImage):            self.mVisible = False            self.mIndex = 0class BackGround:    # 初始化地图    def __init__(self, screen):      self.mImage1 = pygame.image.load("images/background.png")      self.mImage2 = pygame.image.load("images/background.png")      # 窗口      self.screen = screen      # 辅助移动      self.y1 = 0      # 衔接地图y轴      self.y2 = -Manager.bg_size    def draw(self):      self.screen.blit(self.mImage1, (0, self.y1))      self.screen.blit(self.mImage2, (0, self.y2))    def move(self):      self.y1 += 2      self.y2 += 2      if self.y1 >= Manager.bg_size:            self.y1 = 0      if self.y2 >= 0:            self.y2 = -Manager.bg_sizeclass Manager(object):    bg_size = (480, 700)    # 创建敌机定时器的id    create_enemy_id = 10    # 游戏结束倒计时的id    game_over_id = 11    # 游戏是否结束    is_game_over = False    # 倒计时时间    over_time = 3    def __init__(self):      pygame.init()      # 创建窗口      self.screen = pygame.display.set_mode(Manager.bg_size, 0, 32)      # 创建背景图片      self.map = BackGround(self.screen)      # 初始化一个装玩家精灵的group      self.players = pygame.sprite.Group()      # 初始化一个装敌机精灵的group      self.enemys = pygame.sprite.Group()      # 初始化一个玩家爆炸的对象      self.player_bomb = Bomb(self.screen, 'player')      # 初始化一个敌机爆炸的对象      self.enemy_bomb = Bomb(self.screen, 'enemy')      # 初始化一个声音播放的对象      self.sound = GameSound()    def exit(self):      print('退出')      pygame.quit()      exit()    def show_over_text(self):      # 游戏结束,倒计时后重新开始      self.drawText("gameover %d" % Manager.over_time, 100, Manager.bg_size / 2, textHeight=50,                      fontColor=)    def game_over_timer(self):      # 倒计时-1      Manager.over_time -= 1      if Manager.over_time
页: [1]
查看完整版本: pygame小游戏飞机大战_17重新开始游戏