Este repositorio contiene un programa que permite resolver el juego Sokoban con diversos metodos de busqueda y heuristicas.
Tanto el nivel seleccionado como los metodos de busqueda son configurables mediante el archivo config.json
.
El archivo config.json
sigue el siguiente formato:
{
"searching_algorithm": "human" | "bfs" | "dfs" | "greedy" | "a_star",
"heuristic": "walkable_distance" | "admissible_manhattan_distance" | "inadmissible_manhattan_distance",
"level": 4,
"levels_file": "levels.txt"
}
Donde cada opcion representa lo siguiente:
- searching_algorithm: el algoritmo de busqueda de la solucion que se dividen en 3 categorias
- no_informados: bfs y dfs
- informados: greedy (global) y A*
- human: permite al usuario jugar al Sokoban
- heuristic: la heuristica utilizada por el algoritmo informado
- admissible_manhattan_distance: Calcula la distancia manhattan del jugador a la caja mas cercana y le agrega la suma total de la distancia manhattan de cada caja al goal mas cercano
- inadmissible_manhattan_distance: Calcula suma total de las distancias manhattan del jugador a cada caja y le agrega la suma total de la distancia manhattan de cada caja al goal mas cercano
- walkable_distance: Calcula la longitud del camino mas corto a la caja mas cercana que no esta en un goal y le agrega la suma total de la longitud del camino mas corto de cada caja al goal mas cercano
- level: El nivel a seleccionar del archivo de niveles
- levels_file: El path del archivo donde se encuentran los niveles
Para ejecutar el programa basta con correr python main.py
desde la raiz del proyecto