Numen

Integrantes: Pilar Arancibia

Contenidos
  1. Descripcion del problema
  2. Analisis del problema y casos de uso
  3. Diagramas UML
  4. Pruebas
  5. Descarga

Descripción del problema

Hoy en día los juegos cumplen un rol importante en nuestras vidas, pues al tener todas nuestras necesidades básicas cubiertas (comida, abrigo, agua, etc), surgen otra nuevas necesidades, como por ejemplo la necesidad de diversión, de competencia, de compartir, de olvidarte del mal día que fue hoy, de probar cosas nuevas, etc. Este proyecto fue pensado para cubrir esas necesidades propias de la vida moderna.


Analisis del problema y casos de uso

Numen es un juego de tablero, con mécanicas inspiridaras del tan conocido ajedrez, donde se necesita tener de una buena estrategia para vencer al oponente, la forma de ganar es derrotar al rey enemigo, esta pieza se diferencia de las demás porque el color de fondo de esta es rojo en vez de amarillo, para lograr esto cada jugador deverá elegir un bando ya sea blanco (humanos) o negro (bestias), dentro de su turno el jugador podrá mover sus piezas o atacar alguna pieza enemiga dentro del rango de ataque delimitado por la pieza aliada, cada pieza es única y solo se pueden mover y atacar una vez por pieza dentro de su turno, asi que se debe de pensar bien antes de actuar, para no quedar expuestos a un ataque oponente.

Caso número 1

Casos de uso

Nombre: Mover una pieza

Propósito: El usuario desea mover una pieza a otra casilla

Actor: El usuario

Pre-Condiciones: Se ha iniciado el software y el usuario se encuentra en su turno

Evento: El usuario selecciona una pieza y luego una casilla verde

Post-Condiciones: La pieza se ha movido a la casilla selecionada

Tipo: Manual

Curso normal de eventos:

Curso alternativo de eventos:

Caso número 2

Casos de uso

Nombre: Atacar a una pieza enemiga

Propósito: El usuario desea atacar a una pieza oponente para hacerle daño

Actor: El usuario

Pre-Condiciones: Se ha iniciado el software y el usuario se encuentra en su turno

Evento: El usuario selecciona una pieza y luego una casilla roja en donde se encuentre la pieza que desea atacar

Post-Condiciones: La pieza enemiga sufre un daño equivalente a los puntos de ataque de la pieza seleccionada por el usuario

Tipo: Manual

Curso normal de eventos:

Curso alternativo de eventos:

Caso número 3

Casos de uso

Nombre: Terminar el turno

Propósito: El usuario desea términar su turno, para que el oponente pueda mover sus piezas

Actor: El usuario

Pre-Condiciones: Se ha iniciado el software y el usuario se encuentra en su turno

Evento: El usuario presiona el botón "Pass"

Post-Condiciones: Las piezas del usuarios son bloqueadas y el oponente se encuentra en su turno

Tipo: Manual

Curso normal de eventos:

Curso alternativo de eventos:

En este caso lo que pasa es que el jugador 1 hizo que el jugador 2 perdiera su turno.


Diagramas

Diagrama de clases de alto nivel (UML)

Diagrama de clases para mover una pieza

-No se alcanzó a realizar-

Diagrama de secuencia para mover una pieza

-No se alcanzó a realizar-


Pruebas

Para cada uno de los casos mencionados anteriormente se hicieron las siguientes pruebas.

Caso: Mover una pieza

Se selecciona una pieza, la cual mostrará sus posibles movimientos y ataques

Las casillas en verde muestran las casillas en donde puede moverse nuestra pieza, al colocar el mouse encima de una casilla verde apareecera un icono de "pies" que indica que puedes moverte a ese lugar.

Seleccionamos la casilla verde y la pieza se moverá a esa casilla

Volvemos a seleccionar la pieza sin pasar de turno para ver si sus movimientos han sido cancelados

Caso: Atacar a una pieza enemiga

Primero observamos cuanto ataque tiene la pieza que seleccionaremos y la vida de la pieza que atacaremos

Seleccionamos la pieza y vemos que nos muestra sus posibles casillas donde puede atacar

Podemos atacar a la pieza que se encuentra dentro del nuestro rango de ataque, una vez dirigido el ataque vemos si este afectó a su vida

Luego volvemos a seleccionar la pieza dentro del mismo turno para ver si se han bloqueado sus ataques

Caso: Pasar de turno

Las orillas del botón "Pass" nos indican qué color de piezas podemos mover, por lo tanto se probó estando en el turno de las piezas negras, intentar mover alguna pieza negra y otra blanca

Podemos seleccionar una pieza negra

Pero no podemos seleccionar una pieza blanca

Vemos tambien si al pasar el turno y luego volver, los movimientos y ataques "gastados" son restaurados

Tenemos una pieza con los movimientos y ataques gastados

Seleccionamos el botón "Pass" para pasar de turno y luego volver

Al volver a seleccionar la misma pieza anterior vemos que efectivamente sus ataques y movimientos han sido restaurados

Dificultades

Se tuvieron varias dificultades a lo largo de todo el proceso de programación.

Al comienzo el proyecto no se iba desarrollando de forma iterativa e incremental, como había sido recomendado por el profesor, se había empezado por hacer las reglas del mundo, las habilidades de las piezas (que para esta versión del juego no se alcanzó a implementar), y varias cosas que no se podían ir probando a medida que se avanzaba, porque la parte visual aún no había sido desarrollada. Luego de entender que el proceso elegido no estaba dando resultados, se tuvo que volver a empezar casí de cero.

Con lo que respecta a las reglas generales que rigen el juego, hacer que los movimientos se "gastaran" y luego se restauraran al pasar el turno es algo que tomó mucho tiempo, pero al final la solución era mucho más sencilla de lo pensado.

Algo grande que destacar con respecto a las dificultades, sin duda fue hacer que se reconocieran los movimiento y ataques posibles de cada pieza en el tablero.

El mayor estrés se tuvo al empezar a diseñar el proyecto, pues existen varias formas distintas de hacer una misma cosa, por ejemplo, en un principio se tenia pensado hacer una clase que representara un tablero y no una casilla, y las piezas se movieran según coordenadas.En medio del desarrollo se observó que esa idea era más dificil de implementar, que hacer una clase casilla, armar un tablero posicionando las casillas como se quería y anclar las piezas a una casilla especifica, qué es el método que finalmente se utilizó en este proyecto


Descargas

Para descargar el código del juego, haz click aquí