readme
This commit is contained in:
@@ -1,3 +1,29 @@
|
||||
# laberint
|
||||
# Generador e Interactivo de Laberintos en C++ (SDL3)
|
||||
|
||||
Genera i resol laberints
|
||||
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
|
||||
Reference in New Issue
Block a user