Axis&Allies Calculator
17 abril 2023
Hace bastantes años, convencí a mi padre para que me comprara un juego de mesa de estrategia de la Segunda Guerra Mundial. Desde pequeño, me gustaban los videojuegos de estrategia y ver películas y series como "Salvando al soldado Ryan", "The Pacific" y "Band of Brothers" con mis padres, lo cual hizo que me interesara mucho por la historia relacionada con la Segunda Guerra Mundial.
En resumen, este juego se parece mucho al conocido "Risk", pero con una complejidad mucho mayor. Además de incluir economía, hay muchos tipos de unidades, una infinidad de estrategias y la posibilidad de inventar nuevas reglas para ampliar el juego.
Debido a su complejidad y larga duración de las partidas, no he encontrado a mucha gente con la que pueda jugar a este juego de mesa.
Hace poco vi la caja del juego en la estantería de mi casa, cogiendo polvo. Decidí sacarlo y tratar de hacerlo más ameno y corto. Uno de los aspectos más interesantes y complejos del juego son las batallas entre unidades, ya que dependiendo de la combinación de unidades del atacante y el defensor, existen una serie de ventajas e inconvenientes. El gran número de batallas que ocurren en una partida y el hecho de que estas se desarrollen lanzando dados y comparando resultados, hacen que el juego se vuelva pesado y no den ganas de jugarlo.
Para evitar este problema, decidí buscar alguna aplicación que permitiera introducir las unidades de cada bando, calcular las probabilidades de victoria y las unidades restantes. Desafortunadamente, no encontré ninguna. Sin embargo, mi lamento no duró mucho, ya que recordé que soy ingeniero y que tengo las capacidades, y sobre todo las ganas, de programar una calculadora que haga esto.
La solución óptima es que la calculadora sea una aplicación móvil, para que todos los jugadores puedan tenerla en su teléfono y realizar las batallas, e incluso predecir los resultados sin tener que estar lanzando dados continuamente. La solución más rápida sería hacer una aplicación web con HTML, CSS y JavaScript para realizar toda la lógica y el cálculo de probabilidades. Luego, se puede utilizar Apache Cordova para compilar la aplicación web en un archivo APK para dispositivos Android o un archivo IPA para dispositivos iOS.
Además, de esta forma puedo adquirir un poco de soltura con JavaScript y CSS que nunca viene mal..
La aplicación consiste en una vista principal con un formulario en el que se introducen el número de unidades ofensivas y defensivas que participarán en la batalla. En segundo plano, la aplicación aplica las ventajas a cada unidad, realiza todos los cálculos y devuelve las bajas de cada bando. Para que tengas una idea de la cantidad de relaciones que existen, a continuación, te proporciono algunos ejemplos:
- La infantería recibe una mejora de ataque si es acompañada por artillería.
- Los cruceros y acorazados pueden atacar a unidades terrestres que se encuentren en la costa. Submarinos, destructores y portaaviones no pueden.
- A diferencia del resto de unidades marítimas, los acorazados necesitan dos impactos para hundirse.
- Las unidades aéreas pueden atacar a todas las unidades, excepto a los submarinos. Sin embargo, si la fuerza aérea está acompañada por una unidad de destructor, entonces sí podrá atacar a los submarinos.
Además, he incluido una variable para reducir la aleatoriedad. Esta variable permite indicar cuántas veces se desea simular la batalla antes de realizarla para reducir la variable probabilística.
He subido el código de la aplicación y una APK a mi github, para todo el que quiera descargarla y utilizarla.
Finalmente, la vista de la aplicación queda:
Después de establecer un número de unidades y pulsar en "Calculate" se restarán las bajas y se indicarán los impactos realizados por cada unidad.
Quedan algunos detalles por pulir, pero con esta calculadora, una tarea que solía llevar minutos ahora se reduce a segundos. ¡Y sin tener que buscar dados por el suelo!