diff --git a/README.md b/README.md index acab188..7dabbb7 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,29 @@ -# laberint +# Generador e Interactivo de Laberintos en C++ (SDL3) -Genera i resol laberints \ No newline at end of file +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 \ No newline at end of file