Software para simular batallas bélicas entre ejércitos. Proyecto que vincula conocimientos de Inteligencia Artificial, Simulación y Compilación.
Ver informe »
Descargar informe
Reportar Error
·
Solicitar Función
Tabla de contenidos
A lo largo de la historia, los conflictos bélicos han estado fuertemente ligados al desarrollo de la humanidad. Existen pruebas que desde la prehistoria, los hombres luchaban entre ellos por tierras y recursos naturales. Con el pasar del tiempo, los hombres fueron evolucionando, y así también lo hicieron los objetivos de los conflictos bélicos, los armamentos y estrategias utilizados en estos conflictos.
El objetivo de este proyecto es el desarrollo de un programa que permita la simulación de diferentes batallas que se hayan producido en un pasado distante, en épocas más recientes e incluso simular batallas futuristas o con elementos de fantasía. Además se podrían simular batallas entre diferentes épocas, por ejemplo podríamos enfrentar 300 soldados armados con las más modernas armas contra 1000 soldados armados con espadas y escudos.
Para esto se tienen pensado los siguientes aspectos que van a ser fijos en cada una de las simulaciones:
- La existencia de un mapa o terreno donde ocurre el enfrentamiento.
- Las acciones serán por turnos.
Se tiene la idea de poder implementar una opción para que el usuario pueda definir las reglas de la simulación a través del lenguaje de dominio específico, como por ejemplo: definir si las unidades serán destruidas cuando se acaben sus puntos de vida o serán baja al recibir un único impacto, si algunas en específico solo pueden ser destruidas por otras unidades que cumplen ciertas características, etc. Así mismo el usuario debe definir cuál es el objetivo de cada bando y poder elaborar una estrategia para cada uno. Cuando un bando consiga su objetivo se declara como ganador.
- Python
- Pytest
- Pytest-cov
- Typer
Siga la guía de instalación para ejecutar el proyecto de forma local.
Es necesario tener Docker instalado en su ordenador, si usted no tiene Docker obedezca las siguientes instrucciones
Ejecute los siguientes comandos en la consola:
docker build -t battle_sim --rm .
docker run -it --name compiler --rm battle_sim
Para ejecutar el compilador del lenguaje siga las instrucciones:
Para obtener el compilado a .py, ejecute python -m src <bs-path> --py=<py-path> --no-run
, si py-path
no es provisto, el archivo generado se salvará en el directorio de bs-path
.
Ejecute la siguiente linea python -m src <bs-path>
Si tienes alguna sugerencia de funcionalidades o reporte de errores, puedes ayudarnos revisando los issues del proyecto, si no se está trabajando en ello entonces abre un issue nuevo:
El repositorio tiene la siguiente estructura, sígala para contribuir:
battle-sim
|- doc
| |_ (aquí la documentación)
|- src
| |_ (aquí los códigos fuentes del proyecto)
|- test
| |_ (aquí los casos de prueba)
|- LICENSE
|- README.md
|_
Se tendrán dos ramas principales:
main
donde estará una versión estable del proyecto donde todas las componentes hayan pasado los casos de prueba.dev
donde se irán mezclando las ramas resultantes de nuevas funcionalidades, corrección de errores y ramas personales. Luego de que en esta rama todo funcione bien y pase los casos de prueba entonces se mezcla haciamain
.
Abre una nueva rama a partir de main
con el siguiente nombre features/<funcionalidad>
y ahí implementa la funcionalidad, realiza los casos de prueba y haz un pull request para revisar entre todos los cambios, para posteriormente aprobar los cambios.
Abre una nueva rama con el siguiente nombre bug/<error>
, corrige el error, corre los casos de prueba, y haz el pull request correspondiente. Para posteriormente mezclar.
Usted debe siempre que arregle un error o añada nuevas funcionalidades agregar casos de prueba utilizando la librería pytest
y el plugin pytest-cov
para verificar cuanto de su código está probando con sus casos de prueba. Antes de hacer un pull request todo su código debe pasar los casos de prueba con un coverage mayor a 90%, y no introducir que fallen los casos de prueba de otras funcionalidades.
Sus casos de prueba deben ir en la carpeta test
. Para ejecutar los casos de pruba ejecute los comandos siguientes:
python -m pytest --cov
El primer comando ejecutará todos los comandos en la carpeta test
y calculará el coverage
de los casos de prueba.
El siguiente proyecto está distribuido bajo MIT License. Ver LICENSE.txt para más información.
Rocio Ortiz Gancedo 🤔📝💻 |
Carlos Toledo Silva 💻🤔📝 |
Ariel Alfonso Triana Pérez 💻🤔📝 |