Example #1
0
def run_game():
    #获取游戏参数
    game_settings = Settings()

    #初始化游戏
    pygame.init()
    screen = pygame.display.set_mode(
        (game_settings.screen_width, game_settings.screen_height))
    pygame.display.set_caption("飞机大战")

    #初始化游戏控制
    gs = GameStats(game_settings, screen)

    #定义玩家
    player = Fighter(game_settings, screen, gs.img_role)

    #存储敌机
    enemies1 = pygame.sprite.Group()
    enemies_down = pygame.sprite.Group()

    #存储补给
    supplies = pygame.sprite.Group()

    #定义时钟
    clock = pygame.time.Clock()

    while True:
        # 控制游戏帧数,表示每秒循环60次
        clock.tick(60)

        if gs.bStarted and not gs.bPaused and not gs.bOver and not gs.bWin:
            #发射子弹
            player.shoot(gs)

            #生成敌机
            Enemy.discover(game_settings, gs, enemies1)

            #生成补给
            Supply.discover(game_settings, gs, supplies)

            #更新敌机并检测碰撞
            cf.update_enemies(screen, enemies1, enemies_down, player,
                              gs.sound_gameover)

            #更新子弹并检测碰撞
            cf.update_bullets(game_settings, player, enemies1, enemies_down,
                              supplies)

            #更新补给并检测碰撞
            cf.update_supplies(game_settings, gs, player, enemies1,
                               enemies_down, supplies)

        #更新画面
        cf.update_screen(game_settings, gs, screen, player, enemies1,
                         enemies_down, supplies)

        #鼠标和键盘事件处理
        cf.check_events(gs, player)
Example #2
0
    def on_exec(self):
        fight1 = Fighter(self.win, window_size=self.window_size, villian=True)
        fight2 = Fighter(self.win, window_size=self.window_size, villian=False)
        ani = Player('aniket', self.win)
        f_dir = 'w'
        run = True
        x_cod, y_cod = 0, 0

        while run:
            pygame.time.delay(100)
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    run = False
            keys = pygame.key.get_pressed()
            if keys[pygame.QUIT]:
                run = False

            if keys[pygame.K_RIGHT]:
                x, y = fight1.get_xy()
                f_dir = 'w'
                x_cod, y_cod = ani.move_right(x, y)

            elif keys[pygame.K_UP]:
                x, y = fight1.get_xy()
                f_dir = 'n'
                x_cod, y_cod = ani.move_up(x, y)
            elif keys[pygame.K_DOWN]:
                x, y = fight1.get_xy()
                f_dir = 's'
                x_cod, y_cod = ani.move_down(x, y)
            elif keys[pygame.K_LEFT]:
                x, y = fight1.get_xy()
                f_dir = 'e'
                x_cod, y_cod = ani.move_left(x, y)
            elif keys[pygame.K_SPACE]:
                head, direction, is_v = fight1.shoot()
                print(head)
                ani.shoot(head, direction)

            self.win.fill((0, 0, 0))
            fight1.draw_fighter(x_cod, y_cod, f_dir)
            fight2.draw_fighter(40, 50, 'e')
            pygame.display.update()
        pygame.quit()