Skip to content

Software to simulate war battles between armies. Project that links knowledge of Artificial Intelligence, Simulation and Compilation.

License

Notifications You must be signed in to change notification settings

atp-ariel/battle-sim

Repository files navigation

Contributors Issues Pull Request MIT License


Logo

Battle Sim

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
  1. Acerca del proyecto
  2. Primeros pasos
  3. Uso
  4. Contribuciones
  5. Licencia
  6. Desarrolladores

Acerca del proyecto

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.

(volver arriba)

Construido con

(volver arriba)

Primeros pasos

Siga la guía de instalación para ejecutar el proyecto de forma local.

Prerequisitos

Es necesario tener Docker instalado en su ordenador, si usted no tiene Docker obedezca las siguientes instrucciones

Instalación

Ejecute los siguientes comandos en la consola:

  1. docker build -t battle_sim --rm .
  2. docker run -it --name compiler --rm battle_sim

(volver arriba)

Uso

Para ejecutar el compilador del lenguaje siga las instrucciones:

Compilar en un archivo .py

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.

Para compilar y ejecutar el archivo

Ejecute la siguiente linea python -m src <bs-path>

(volver arriba)

Contribuciones

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:

Estructura del repositorio

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
|_

Política de Ramas

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 hacia main.

Respuesta a nuevas funcionalidades

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.

Arreglo de errores

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.

Casos de prueba

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.

(volver arriba)

Licencia

El siguiente proyecto está distribuido bajo MIT License. Ver LICENSE.txt para más información.

(volver arriba)

Desarrolladores


Rocio Ortiz Gancedo
🤔📝💻

Carlos Toledo Silva
💻🤔📝

Ariel Alfonso Triana Pérez
💻🤔📝

(volver arriba)

About

Software to simulate war battles between armies. Project that links knowledge of Artificial Intelligence, Simulation and Compilation.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Contributors 4

  •  
  •  
  •  
  •