def run_game():
    # init game and create screen object
    pygame.init()
    ai_settings = Settings()
    screen = pygame.display.set_mode(
        (ai_settings.screen_width, ai_settings.screen_height))
    pygame.display.set_caption("Alien Invasion")

    # create a new ship
    ship = Ship(ai_settings, screen)

    aliens = Group()

    # create alien's group
    gf.create_fleet(ai_settings, screen, ship, aliens)

    # create a group to store the bullet
    bullets = Group()

    # start game's main circulation
    while True:
        # listen mouse and keyboard
        gf.check_events(ai_settings, screen, ship, bullets)

        ship.update()

        gf.update_bullets(aliens, bullets)

        gf.update_aliens(ai_settings, aliens)

        # redraw screen every circulation
        # let last screen be visible
        gf.update_screen(ai_settings, screen, ship, aliens, bullets)
Beispiel #2
0
def run_game():
    # 初始化游戏并创建一个屏幕对象
    pygame.init()
    ai_settings = Settings()
    screen = pygame.display.set_mode(
        (ai_settings.screen_width, ai_settings.screen_height))
    # screen = pygame.display.set_mode((1200, 800))
    pygame.display.set_caption("Alian Invasion")

    # 创建Play按钮
    play_button = Button(ai_settings, screen, "Play")

    # 设置背景颜色
    bg_color = (85, 204, 220)

    # 创建一艘飞船
    ship = Ship(ai_settings, screen)

    # 创建一个用于存储子弹的编组
    bullets = Group()

    # 创建一艘飞船、一个子弹编组和一个外星人编组
    aliens = Group()

    # 创建一个外星人
    alien = Alien(ai_settings, screen)

    # 开始游戏的主循环
    while True:
        gf.check_events(ai_settings, screen, play_button, ship, bullets)
        ship.update()
        # bullets.update()

        # 删除已消失的子弹
        # for bullet in bullets.copy():
        #     if bullet.rect.bottom <= 0:
        #         bullet.remove(bullet)
        print(len(bullets))
        gf.update_bullets(bullets)
        gf.update_screen(ai_settings, screen, ship, alien, bullets,
                         play_button)
        gf.update_screen(ai_settings, screen, ship, aliens, bullets)
        # 创建外星人群
        gf.create_fleet(ai_settings, screen, ship, aliens)

        # 监视键盘和鼠标事件
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                sys.exeit()

        # 每次循环时都重绘屏幕
        screen.fill(ai_settings.bg_color)
        # screen.fill(bg_color)
        ship.blitme()
        # 让最终绘制的屏幕可见
        pygame.display.flip()
def run_game():
    # Inicializa o jogo e cria um objeto para a tela
    pygame.init()
    ai_settings = Settings()
    screen = pygame.display.set_mode((
        ai_settings.screen_width,
        ai_settings.screen_height,
    ))
    pygame.display.set_caption('Alien Invasion')

    # Cria o botão Play
    play_button = Button(ai_settings, screen, 'Play')

    # Cria uma instância para armazenar dados estatísticos do jogo
    stats = GameStats(ai_settings)
    sb = Scoreboard(ai_settings, screen, stats)

    # Cria uma espaçonave, um grupo de projéteis e um grupo de alienígenas
    ship = Ship(ai_settings, screen)
    bullets = Group()
    aliens = Group()

    # Cria a frota de alienígenas
    gf.create_fleet(ai_settings, screen, ship, aliens)

    # Inicia o laço principal do jogo
    while True:
        gf.check_events(
            ai_settings,
            screen,
            stats,
            sb,
            play_button,
            ship,
            aliens,
            bullets,
        )

        if stats.game_active:
            ship.update()
            gf.update_bullets(ai_settings, screen, stats, sb, ship, aliens,
                              bullets)
            gf.update_aliens(ai_settings, screen, stats, sb, ship, aliens,
                             bullets)

        gf.update_screen(
            ai_settings,
            screen,
            stats,
            sb,
            ship,
            aliens,
            bullets,
            play_button,
        )
Beispiel #4
0
def run_game():
    # Initialize game and create a screen object.
    pygame.init()

    settings = Settings()

    screen = pygame.display.set_mode(
        (settings.screen_width, settings.screen_heigth))
    pygame.display.set_caption("Alien Invasion 3000")
    ship = Ship(screen)
    # Start the main loop for the game.
    while True:
        gf.check_events(ship)
        gf.update_screen(settings, screen, ship)
Beispiel #5
0
def run_game():
    ai_settings = settings.Settings()
    # 初始化游戏,创建一个屏幕对象
    pygame.init()
    screen = pygame.display.set_mode(
        (ai_settings.screen_width, ai_settings.screen_height))
    ship = sp.Ship(screen, ai_settings)

    # 创建存储子弹的编组
    bullets = Group()

    pygame.display.set_caption('Alien Invasion')

    # 开始游戏主循环
    while True:
        gf.check_events(ship, ai_settings, screen, bullets)
        ship.update()
        gf.update_bullets(bullets)
        gf.update_screen(ai_settings, screen, ship, bullets)
Beispiel #6
0
def run_game():
    '''
        开始游戏
    '''
    global Login_username
    tick = 0
    zombieList = [Zombie, Zombie1, Zombie3, Zombie4, Zombie5]
    while 1:
        # 开始监听事件
        gf.check_events(screen, game_settings, squares, plants, bullets, icons)
        # 如果游戏没结束
        if game_settings.game_active:
            tick += 1
            # 如果满足添加僵尸的条件就添加僵尸
            if tick % game_settings.addZombieTime == 0 and game_settings.total_zombie:
                if game_settings.level == 1:
                    # 在0-1号僵尸中随机添加一个
                    zombie = zombieList[randint(0, 1)]
                    zombies.add(zombie(screen, game_settings))
                elif game_settings.level == 2:
                    # 在0-3号僵尸中随机添加一个
                    zombie = zombieList[randint(0, 3)]
                    zombies.add(zombie(screen, game_settings))
                elif game_settings.level == 3:
                    zombie = zombieList[randint(0, 4)]
                    zombies.add(zombie(screen, game_settings))
                game_settings.total_zombie -= 1

            # 僵尸同子弹的碰撞检测
            zombies_hit = groupcollide(zombies, bullets, False, False)
            for zombie in zombies_hit:
                if zombie.yard_row == zombies_hit[zombie][0].yard_row:
                    bullets.remove(zombies_hit[zombie][0])
                    zombie.hit(1)
                    if (zombie.health <= 0):
                        zombies.remove(zombie)
                        game_settings.zombie_in_row[zombie.yard_row] -= 1
                        game_settings.zombies_killed += 1
            zombies_eating = groupcollide(zombies, plants, False, False)
            for zombie in zombies_eating:
                damaged_plant = zombies_eating[zombie][0]
                if zombie.yard_row == damaged_plant.yard_row:
                    zombie.moving = False
                    if time.time(
                    ) - zombie.started_eating > zombie.damage_time:
                        zombie.zombie_chomp(damaged_plant)
                        zombie.started_eating = time.time()
                        if damaged_plant.health <= 0:
                            plants.remove(damaged_plant)
                            zombie.moving = True
        if game_settings.game_active and game_settings.total_zombie == 0:
            global game_level
            game_settings.level += 1
            game_level += 1
            # 更新分数
            db.updateScore(Login_username,
                           game_settings.level * game_settings.zombies_killed)
            print_text(screen, "WIN!",
                       "Next Level " + str(game_settings.level))
            return

        elif game_settings.game_active is False:
            db.updateScore(Login_username,
                           game_settings.level * game_settings.zombies_killed)
            print_text(screen, "Game Over!", '')
            return

        gf.update_screen(screen, game_settings, background, zombies, squares,
                         plants, bullets, tick, icons)
        pygame.display.flip()