Files
laberint/README.md
T
2026-08-06 17:19:23 +02:00

1.8 KiB

Generador e Interactivo de Laberintos en C++ (SDL3)

Este proyecto implementa un generador de laberintos aleatorios utilizando el algoritmo de Recursive Backtracking (DFS) en C++ y una interfaz gráfica interactiva mediante la librería SDL3.

Resumen del Código

El código está estructurado en una clase principal Maze y una función main interactiva:

  1. Clase Maze:

    • Generación: Inicializa una cuadrícula llena de muros (WALL = 1) de tamaño (2 * filas + 1) x (2 * columnas + 1). Aplica una búsqueda en profundidad (DFS) con una pila (std::stack) para "cavar" los pasillos de forma aleatoria, asegurando un laberinto perfecto (sin ciclos y con todas las celdas conectadas).
    • Resolución: Implementa un método recursivo basado en la exploración de grafos e ideas de la práctica (control de visitados y backtracking) para encontrar de manera óptima el camino único entre dos puntos cualesquiera.
  2. Interactividad (Función main):

    • Inicializa la ventana de SDL3 adaptando automáticamente el tamaño en píxeles según las dimensiones reales de la matriz (CELL_SIZE = 16).
    • Escucha los clics del ratón en tiempo real sobre los pasillos vacíos:
      • Clic Izquierdo: Reubica el punto de Inicio (representado en verde).
      • Clic Derecho: Reubica el punto de Fin (representado en rojo).
    • Recalcula y redibuja instantáneamente la ruta más corta entre ambos puntos (marcada en azul celeste).

Requisitos Previos

Es necesario tener instalada la librería de desarrollo de SDL3 en tu sistema.

Comando para Compilar y Ejecutar

Puedes compilar el archivo fuente (por ejemplo, main.cpp) desde la terminal utilizando tu compilador de C++ con soporte para C++11 o superior y enlazando la librería de SDL3:

g++ -O3 main.cpp -o laberinto_sdl3 -lSDL3