diff --git a/highway_vector.py b/highway_vector.py index 171e888..916d44c 100644 --- a/highway_vector.py +++ b/highway_vector.py @@ -500,18 +500,110 @@ class Game: def __init__(self): self.screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT)) - pygame.display.set_caption("Highway Encounter - Isometric Edition") + pygame.display.set_caption("Highway Vector - Edición Isométrica") self.clock = pygame.time.Clock() - self.font = pygame.font.SysFont("monospace", 18, bold=True) - self.big_font = pygame.font.SysFont("monospace", 32, bold=True) + self.font = pygame.font.SysFont("monospace", 14, bold=True) + self.big_font = pygame.font.SysFont("monospace", 28, bold=True) + self.title_font = pygame.font.SysFont("monospace", 34, bold=True) self.sprite_mgr = SpriteManager() self.lives = 4 self.score = 0 self.won = False + self.in_opening = True self.reset_level() + def show_opening_screen(self): + """Muestra la pantalla explicativa inicial al ejecutar el juego.""" + while self.in_opening: + self.clock.tick(FPS) + for event in pygame.event.get(): + if event.type == pygame.QUIT: + pygame.quit() + sys.exit() + if event.type == pygame.KEYDOWN: + if event.key == pygame.K_RETURN: + self.in_opening = False + + self.screen.fill((10, 10, 20)) + + # Título principal + title_surf = self.title_font.render( + "HIGHWAY VECTOR", True, COLOR_YELLOW + ) + self.screen.blit( + title_surf, + (SCREEN_WIDTH // 2 - title_surf.get_width() // 2, 20), + ) + + # Lista de elementos a mostrar + items = [ + ( + "player", + "Jugador: Flechas / WASD para mover, ESPACIO para disparar.", + ), + ("vortex", "Vortex: Objetivo llevar hasta la Zona 0."), + ( + "block_white", + "Bloque Blanco: Se rompe con disparo y se puede empujar.", + ), + ( + "block_purple", + "Bloque Morado: No se rompe, solo se empuja con disparos.", + ), + ( + "enemy_red", + "Enemigo Rojo: Se mueve de lado a lado. Matable y bloqueable.", + ), + ( + "enemy_indestructible", + "Enemigo Blanco: Se mueve de lado a lado. Solo bloqueable.", + ), + ( + "enemy_diagonal", + "Enemigo Azul: Se mueve rebotando en diagonal. Solo bloqueable.", + ), + ] + + start_y = 80 + spacing_y = 65 + + for idx, (sprite_key, desc_text) in enumerate(items): + y_pos = start_y + idx * spacing_y + + # Dibujar imagen del elemento + sprite = self.sprite_mgr.get_sprite(sprite_key) + img_x = 60 - sprite.get_width() // 2 + img_y = y_pos + 12 - sprite.get_height() // 2 + self.screen.blit(sprite, (img_x, img_y)) + + # Dibujar texto descriptivo + text_surf = self.font.render(desc_text, True, (230, 230, 230)) + self.screen.blit(text_surf, (110, y_pos + 4)) + + # Línea divisoria discreta entre filas + if idx < len(items) - 1: + pygame.draw.line( + self.screen, + (30, 30, 50), + (40, y_pos + spacing_y - 8), + (SCREEN_WIDTH - 40, y_pos + spacing_y - 8), + ) + + # Mensaje para comenzar con efecto de parpadeo suave + blink = (pygame.time.get_ticks() // 400) % 2 == 0 + start_color = (0, 255, 200) if blink else (0, 150, 120) + start_surf = self.big_font.render( + "Pulse INTRO para comenzar", True, start_color + ) + self.screen.blit( + start_surf, + (SCREEN_WIDTH // 2 - start_surf.get_width() // 2, 545), + ) + + pygame.display.flip() + def reset_level(self): self.vortex = Vortex(3.5, GRID_SIZE_Y - 5) self.player = Player(3.5, GRID_SIZE_Y - 8) @@ -579,6 +671,9 @@ class Game: self.screen.blit(text_surface, (20, 10)) def run(self): + if self.in_opening: + self.show_opening_screen() + running = True while running: self.clock.tick(FPS) @@ -621,7 +716,7 @@ class Game: if self.lives <= 0: self.screen.fill((0, 0, 0)) msg = self.font.render( - "GAME OVER - Press R to Restart", True, (255, 50, 50) + "GAME OVER - Pulsa R para Reiniciar", True, (255, 50, 50) ) self.screen.blit( msg, (SCREEN_WIDTH // 2 - 150, SCREEN_HEIGHT // 2) diff --git a/img-versiones/version_final_01.png b/img-versiones/version_final_01.png new file mode 100644 index 0000000..21c2974 Binary files /dev/null and b/img-versiones/version_final_01.png differ diff --git a/img-versiones/version_final_02.png b/img-versiones/version_final_02.png new file mode 100644 index 0000000..03cb4a3 Binary files /dev/null and b/img-versiones/version_final_02.png differ diff --git a/img-versiones/version_final_03.png b/img-versiones/version_final_03.png new file mode 100644 index 0000000..9e715c8 Binary files /dev/null and b/img-versiones/version_final_03.png differ