29 lines
1.8 KiB
Markdown
29 lines
1.8 KiB
Markdown
# 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:
|
|
|
|
```bash
|
|
g++ -O3 main.cpp -o laberinto_sdl3 -lSDL3 |