def game(level, screen): score = 0 boolean = False time_initial = pygame.time.get_ticks() clock = pygame.time.Clock() music_selection(level) #Level selection if level.id == 0: point1 = Checkpoint(842, 50) point2 = Checkpoint(130, 480) screen.blit(intro1.image, intro1.rect) pygame.display.update() while True: # wait for user to acknowledge and return for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() if event.type == pygame.KEYDOWN and event.key in [pygame.K_RETURN, pygame.K_KP_ENTER, pygame.K_BACKSPACE]: boolean = True break if boolean: break pygame.time.wait(20) elif level.id == 1: point1 = Checkpoint(730, 30) point2 = Checkpoint(858, 500) screen.blit(intro2.image, intro2.rect) pygame.display.update() while True: # wait for user to acknowledge and return for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() if event.type == pygame.KEYDOWN and event.key in [pygame.K_RETURN, pygame.K_KP_ENTER, pygame.K_BACKSPACE]: boolean = True break if boolean: break pygame.time.wait(20) else: point1 = Checkpoint(20, 70) point2 = Checkpoint(900, 400) screen.blit(intro3.image, intro3.rect) pygame.display.update() while True: # wait for user to acknowledge and return for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() if event.type == pygame.KEYDOWN and event.key in [pygame.K_RETURN, pygame.K_KP_ENTER, pygame.K_BACKSPACE]: boolean = True break if boolean: break pygame.time.wait(20) level.mapa(screen) screen.blit(point1.image, point1.rect) screen.blit(point2.image, point2.rect) #Initialization variables player_x0, player_y0, player_angle = player_constants(level) heli_x0, heli_y0, heli_angle, patrol_radius = heli_constants(level) #Terrain parameters angle_step = 7.5 terrain_factor = 1 cont = 0 Font = pygame.font.SysFont("arial", 20, True) txt_surf = Font.render("", True, WHITE) #Class initialization object_group = pygame.sprite.Group() player = Player(player_x0, player_y0, player_angle) heli = Heli(1, SCREENHEIGHT-1, heli_angle) second_heli = Heli(heli_x0, heli_y0, heli_angle) capivara = Capivara() soldier = Soldier() object_group.add(heli) object_group.add(second_heli) object_group.add(capivara) object_group.draw(screen) screen.blit(player.image, player.rect) if soldier.state: screen.blit(soldier.image, soldier.rect) #Game Over criteria game_over = GameOver() while not game_over.state: # GET EVENT for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() elif event.type == KEYDOWN and event.key == K_p: pause(screen) player.handle_event(event) #Handle terrain level.mapa(screen) terrain_factor = measure_terrain(player, level, screen) if cont == 0: Font = pygame.font.SysFont("arial", 20, True) txt_surf = Font.render("", True, WHITE) else: cont -= 1 # Atualização de Score e Verificação de Flags das etapas dos Jogos if level.verificarmissao(player, point1, point2): time_flag = pygame.time.get_ticks() Font = pygame.font.SysFont("arial", 24, True) txt_surf = Font.render("CHECKPOINT ACEITO", True, WHITE) cont = 45 score += int(1000 - 5 * (time_flag / 1000 - time_initial / 1000)) # modelo de Score if level.vencedor(): pygame.mixer.music.stop() arq = level.file() get_score(screen, arq, score) break #Player movement player.move(terrain_factor, angle_step) #Bot reaction '''bot_1.follow(player.x, player.y) bot_2.follow(player.x, player.y)''' capivara.time_counter(level, screen, SCREENHEIGHT) soldier.time_counter(level, screen, SCREENHEIGHT) player.update_pos(angle_step) heli.follow(player.x, player.y) second_heli.patrol(heli_x0, heli_y0, patrol_radius) heli.update_pos(player.x) second_heli.update_pos(player.x) level.mapa(screen) screen.blit(player.image, player.rect) screen.blit(point1.image, point1.rect) screen.blit(point2.image, point2.rect) screen.blit(txt_surf, (600, 450)) object_group.draw(screen) if soldier.state: screen.blit(soldier.image, soldier.rect) #Game over verification object_group.add(soldier) game_over.measure_state(player, object_group) object_group.remove(soldier) #Screen update pygame.display.update() clock.tick(20) # Time do relógio if game_over.state: pygame.mixer.music.stop() screen.blit(gameover.image, gameover.rect) pygame.display.update() game_over_sound() while True: # wait for user to acknowledge and return for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() if event.type == pygame.KEYDOWN and event.key in [pygame.K_RETURN, pygame.K_KP_ENTER, pygame.K_BACKSPACE]: return pygame.time.wait(20)