https://github.com/sorgazb/labecoin-game-ai
Inteligent self-learning game in develop
https://github.com/sorgazb/labecoin-game-ai
ai allegro5 artificial-intelligence binary-tree cpp data-structures fstream ia makefile pointers self-learning simple-hill-climbing steepest-ascent stochastic-hill-climb tree-structure
Last synced: 20 days ago
JSON representation
Inteligent self-learning game in develop
- Host: GitHub
- URL: https://github.com/sorgazb/labecoin-game-ai
- Owner: sorgazb
- Created: 2023-11-13T01:19:04.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-04-18T10:20:04.000Z (about 2 years ago)
- Last Synced: 2025-03-01T13:14:16.966Z (over 1 year ago)
- Topics: ai, allegro5, artificial-intelligence, binary-tree, cpp, data-structures, fstream, ia, makefile, pointers, self-learning, simple-hill-climbing, steepest-ascent, stochastic-hill-climb, tree-structure
- Language: C++
- Homepage:
- Size: 2.81 MB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Labecoin Game AI
    
> **Labecoin Game AI** es un juego de laberinto en C++ donde un agente inteligente recorre un tablero recogiendo monedas usando algoritmos de **búsqueda local**: Escalada Simple, Máxima Pendiente y Escalada Estocástica. Desarrollado como proyecto final de la asignatura IASI.
---
## 📋 Descripción del Proyecto
**Labecoin** es un juego de tablero donde un agente automático debe recorrer un laberinto y recoger el máximo número de monedas posible.
El proyecto implementa y compara tres **algoritmos de búsqueda local** clásicos de Inteligencia Artificial, cada uno con una estrategia distinta para explorar el espacio de soluciones:
| Algoritmo | Estrategia | Descripción |
|---|---|---|
| **Escalada Simple** | `EscaladaSimple` | Elige el primer vecino que mejore la solución actual |
| **Máxima Pendiente** | `MaximaPendiente` | Evalúa todos los vecinos y elige el mejor de ellos |
| **Escalada Estocástica** | `ESEstocastico` | Selecciona aleatoriamente entre los vecinos mejores |
Las funciones de evaluación usadas son:
- **`FuncionDistancia`** — minimiza la distancia recorrida.
- **`FuncionRentabilidad`** — maximiza la relación monedas recogidas / distancia recorrida.
---
## 🏗️ Estructura del Proyecto
```txt
Labecoin-Game-AI/
├── src/ # Código fuente principal
│ ├── IASI.cpp # Punto de entrada del programa
│ ├── Tablero.cpp / .h # Lógica del tablero y laberinto
│ ├── Coordenada.cpp / .h # Representación de posiciones en el mapa
│ ├── Moneda.cpp / .h # Clase de monedas del tablero
│ ├── vectorMonedas.cpp / .h # Contenedor de monedas
│ ├── Fichero.cpp / .h # Lectura de mapas desde ficheros .txt
│ ├── EscaladaSimple.cpp / .h # Algoritmo de Escalada Simple
│ ├── MaximaPendiente.cpp / .h # Algoritmo de Máxima Pendiente
│ ├── ESEstocastico.cpp / .h # Algoritmo de Escalada Estocástica
│ ├── FuncionDistancia.cpp / .h # Función heurística de distancia
│ └── FuncionRentabilidad.cpp / .h # Función heurística de rentabilidad
├── Debug/ # Binarios compilados (Eclipse CDT)
├── LABECOIN1.txt # Mapa nivel 1
├── LABECOIN2.txt # Mapa nivel 2
├── ... # (hasta LABECOIN10.txt)
├── Documentacion.pdf # Documentación técnica del proyecto
├── EnunciadoProyecto_IASI2223.pdf # Enunciado oficial del proyecto
└── README.md # Documentación del proyecto
```
---
## ⚙️ Requisitos y Compilación
### Windows (MinGW + Eclipse CDT)
```bash
# Requisitos:
# - Compilador MinGW (paquete básico + toolchain)
# - PATH de MinGW configurado en variables de entorno
# - Eclipse CDT con build y run config en modo MinGW
```
1. Abrir el proyecto en **Eclipse CDT**.
2. Configurar el **Run Configuration** seleccionando el `.exe` en `/Debug`.
3. Compilar con `Build Project` y ejecutar.
### Linux / GNU (g++)
```bash
git clone https://github.com/sorgazb/Labecoin-Game-AI.git
cd Labecoin-Game-AI/src
g++ -o labecoin *.cpp
./labecoin
```
> Los ficheros de mapa `LABECOIN1.txt` – `LABECOIN10.txt` deben estar en el mismo directorio que el ejecutable.
---
## 🗺️ Formato de los Mapas
Cada nivel se define en un fichero `.txt` con la siguiente codificación de celdas:
| Símbolo | Significado |
|---|---|
| `P` | Posición inicial del agente |
| `M` | Moneda recogible |
| `X` | Pared (celda bloqueada) |
| `.` | Celda libre |
---
## 🖥️ Ejemplos de Ejecución
---
## 📚 Documentación
- 📄 [Enunciado oficial del proyecto](./EnunciadoProyecto_IASI2223.pdf)
- 📄 [Documentación técnica](./Documentacion.pdf)
---
## 🤝 Contribución
Haz fork del repositorio.
Crea una rama de trabajo:
```bash
git checkout -b feature/mi-nueva-funcionalidad
```
Realiza tus cambios y haz commit.
Abre un Pull Request describiendo tus mejoras.
---
Inteligencia Artificial y Sistemas Inteligentes (IASI) · Grado en Ingeniería Informática en Computadores · Universidad de Extremadura
Sergio Orgaz Bravo