View
515
Download
4
Category
Preview:
Citation preview
JUEGO DE LA OCA V.2
Máster Desarrollo Aplicaciones Web (especialidad JAVA)UNED 2014
ORGANIZACIÓN
ORGANIZACIÓN GRUPO DE TRABAJO
La organización del trabajo en grupo se ha realizado a través de un Scrum Master y mediante la distribución de tareas semanales y diarias en base al avance y disponibilidad de cada uno de los miembros.
Para la gestión del trabajo, se ha utilizado un wiki, con url: http://62.204.199.127/JAVA_UNED/alef/wiki/JUEGOGRUPO
Dentro del wiki se ha distribuido la información de la siguiente manera: Juego de la Oca¶
Instrucciones Organización del Grupo¶
Diario de Tareas Diario de Reuniones de Grupo Equipo y Planificación
Manual y Análisis¶ Manual del usuario Análisis del Juego
Diseño¶ Diseño general del Juego
Calidad¶ Pruebas de Software Análisis de Errores Detectados
ORGANIZACIÓN GRUPO DE TRABAJO
El grupo ha participado en reuniones diarias con el Scrum, aportando ideas y soluciones para el desarrollo del juego.
Además, se ha realizado un cálculo de tiempo invertido por cada miembro del equipo para la planificación de cada una de las tareas.
Toda la planificación, resúmenes de las reuniones y la gestión de tareas se puede ver en wiki en el apartado: «Organización del Grupo»
También se ha habilitado la herramienta DotProject y se han creado los usuarios para poder acceder a ella. (http://www.plantareasuned2014.com)
DOCUMENTACIÓN
MANUAL DE USUARIO
Se ha realizado un manual de usuario del Juego de la Oca con el objetivo de realizar un análisis breve de cómo se debe enfocar el juego y qué normas va a tener.
El Manual del Usuario está accesible a través de wiki en la siguiente dirección: http://62.204.199.127/JAVA_UNED/alef/wiki/MANUAL
MANUAL DE USUARIO
En el Manual de usuario se detallan entre muchos otros, aspectos como:
Cuántos jugadores pueden participar (de 2 a 6).
Cuántos dados va a tener el juego (1).
Cómo se reparte el orden de los jugadores (aleatorio).
Cómo se tira el dado (pulsando Enter).
Cuántas y qué tipo de casillas tiene el Juego (Oca, Puente, Dados, Calavera, etc.).
Qué pasa en cada tipo de Casilla si cae el jugador (se pierden turnos, se salta a otra casilla, se vuelve al inicio, etc.).
Qué ocurre cuando se intenta llegar a la casilla Final sin el número exacto en el dado (se llega solo con número exacto).
Cómo reacciona el Juego al llegar al final (mensaje de llegada y pregunta si se quiere volver a jugar).
ANÁLISIS DEL JUEGO
En el Análisis del Juego de la Oca se detallan los requerimientos que, desde un punto de vista técnico y de código, va a desarrollar la aplicación para su correcto funcionamiento.
El Análisis del juego está accesible a través de wiki en la siguiente dirección: http://62.204.199.127/JAVA_UNED/alef/wiki/ANALISIS
ANÁLISIS DEL JUEGO
Además, del análisis de requerimientos se detalla un diagrama de estados, en el que se representa el proceso que realiza la aplicación a lo largo de todo el juego.
ANÁLISIS DEL JUEGO
También se ha realizado un diagrama de caso-uso, que presenta la interacción del usuario (actor) con la aplicación (sistema).
ANÁLISIS DEL JUEGO En cuanto a los requerimientos, se detallan 20 requerimientos que debe cumplir la
aplicación para que funcione conforme se ha estipulado en el Manual del Usuario del Juego.
R.1.1. Se solicita y guarda el número de jugadores que van a participar en la partida. (Inicio partida) R.1.2. Se solicita y guarda el alias de cada jugador. (Inicio partida) R.1.3. Se asigna un color a cada jugador. (Inicio partida) R.1.4. Se inicializa el tablero con los jugadores indicados. (Inicio partida) R.1.5. El jugador activo puede realizar una jugada. R.1.6. Cuando un jugador activo está castigado (pierde turno), no realiza jugada y el turno pasa al siguiente jugador. R.1.7. Se controla la cantidad de turnos que debe permanecer castigado un jugador. Se informa al jugador en cada turno que no realiza
jugada. R.1.8. Cuando un jugador llega a una casilla de tipo “oca” (5, 9, 14, 18, 23, 27, 32, 36, 41, 45, 50, 54, 59) , se traslada a la siguiente
casilla de tipo “oca” y vuelve a realizar jugada. Se informa al jugador. R.1.9. Cuando un jugador llega a una casilla de tipo “puente” (6, 12), se traslada a la otra casilla de tipo “puente” y vuelve a realizar
jugada. Se informa al jugador. R.1.10. Cuando un jugador llega a una casilla de tipo “dado” (26, 53), se traslada a la otra casilla de tipo “dado” y vuelve a realizar
jugada. Se informa al jugador. R.1.11. Cuando un jugador llega a la casilla “laberinto” (42), se traslada a la casilla número 30 y pasa el turno al siguiente jugador. Se
informa al jugador. R.1.12. Cuando un jugador llega a la casilla “calavera” (58), se traslada a la casilla número 1 y pasa el turno al siguiente jugador. Se
informa al jugador. R.1.13. Cuando un jugador llega a la casilla “posada” (19) o a la casilla “pozo” (31), se le aplica un castigo de dos turnos y pasa el turno
al siguiente jugador. Se informa al jugador. R.1.14. Cuando un jugador llega a la casilla “cárcel” (52), se le aplica un castigo de tres turnos y pasa el turno al siguiente jugador. Se
informa al jugador. R.1.15. Cuando un jugador llega a la casilla “jardín de la oca” (63), ha ganado la partida. Se informa al jugador. Termina la partida. R.1.16. Cuando un jugador llega a una casilla no definida en los requerimientos del R.1.8 al R.1.15, pasa el turno al siguiente jugador. R.1.17. Cuando un jugador obtiene una puntuación en la tirada del dado que, sumada a su posición actual, resulte mayor que 63, el
jugador retrocede tantas casillas como sea dicho exceso. R.1.18. Cuando un jugador llega a la casilla “jardín de la oca” (63) como destino de la casilla "oca" situada en la posición 59, debe volver
a tirar, retrocediendo en el tablero. R.1.19. Se permite que varios jugadores se encuentren en la misma casilla. R.1.20. No se permite que 2 jugadores tiene el mismo color.
DISEÑO DEL JUEGO DE LA OCA V.2
DISEÑO DEL JUEGO DE LA OCA V.2
El Diseño del Juego trata de reflejar mediante un diagrama de clases el esquema de lo que va a ser el desarrollo del código.
El Diseño del Juego de la Oca V.2 se encuentra en wiki en la siguiente dirección: http://62.204.199.127/JAVA_UNED/alef/wiki/DISE%C3%91O2
DISEÑO DEL JUEGO DE LA OCA V.2 – DIAGRAMA DE CLASES
DISEÑO DEL JUEGO DE LA OCA V.2 – DIAGRAMA DE CLASES
DESARROLLO DEL CÓDIGO
DESARROLLO DEL CÓDIGO
El código elaborado para el juego contiene las siguientes clases, distribuidas en paquetes:
Paquete default Clase Driver
Paquete excepciones Clase Error
Paquete jugador Clase Color Clase Jugador
Paquete partida Clase Dado Clase Oca
Paquete tablero Clase Casilla Clase Tablero Clase TipoCasilla
Paquete test Clase Test
DESARROLLO DEL CÓDIGO - DRIVER
La clase Driver está incluida por defecto dentro del Paquete default y ejecuta el Juego de la Oca, creando un nuevo objeto Oca y usando los métodos creados para ello.
Se ha intentado que la clase Driver fuera lo más sencilla posible:
// importa todo el package es.uned2014.oca.partidaimport es.uned2014.oca.partida.*;
public class Driver {// Incio método mainpublic static void main( String[] args) {
// Crea objeto OcaOca oca = new Oca();
// Muestra el mensaje de bienvenidaoca.bienvenidoOca();
// Configura la partida para el juego de la ocaoca.configurarOca();
// Inicia la partidaoca.jugarOca();
// Fin de la partida, con opción a jugar de nuevo oca.finOca();
} // fin main
} // fin clase Driver
DESARROLLO DEL CÓDIGO - ERROR
La clase ClaseError hereda de la clase RuntimeExcepcion para tratar de manera controlada los errores que se produzcan en la aplicación.
El método constructor de la clase utiliza el método constructor de RuntimeException.
La clase ClaseError lanza un mensaje de error: «Se ha producido un error:»
DESARROLLO DEL CÓDIGO - COLOR
La clase Color está incluida en el paquete jugador y está basada en un enum con los colores de las fichas tradicionales que se asignan los jugadores durante la partida.
Los colores de los jugadores podrán ser: rojo, azul, amarillo, verde, naranja o violeta.
DESARROLLO DEL CÓDIGO - JUGADOR
La clase Jugador está en el paquete jugador y representa a cada participante del juego.
La clase tiene cuatro variables:
La variable «colorJugador», que asigna el color a los jugadores por la clase enum Color.
El String «aliasJugador», que representa el alias o nombre que el Jugador quiera insertar durante la partida.
Un valor entero «castigo», que indica si el jugador tiene penalización de turnos.
El valor booleano «tiraOtraVez» que indica si el jugador repite turno.
DESARROLLO DEL CÓDIGO - DADO
La clase Dado está en el paquete partida y su objetivo es generar un número entero aleatorio entre 1 y 6.
Contiene un método «tirarDado» que es el que genera el efecto del dado.
DESARROLLO DEL CÓDIGO - OCA
La clase Oca está dentro del paquete partida y contiene los métodos necesarios para jugar al Juego de la Oca desde el inicio hasta el fin del juego. Importa los paquetes jugador, tablero y excepciones.
La Clase Oca define las siguientes variables: La variable “númeroJugadores”, que establece el número de
jugadores que participan. La variable “tiradaJugador”, que establece la tirada del Jugador. La variable arrayList”Jugador”, que obtiene los jugadores . La variable booleana “juegoTerminado”, para declarar el fin del
juego. Un HashMap de Jugador y Casilla , que asocia el jugador a la casilla.
DESARROLLO DEL CÓDIGO - OCA
Además, en la clase Oca se definen los siguientes métodos:
Método bienvenidoOca, que muestra el mensaje de bienvenida y pregunta al usuario si quiere jugar o no.
Método configurarOca, que configura la partida en función del número de jugadores elegidos por el usuario. Crea un TreeSet de jugadores que engloba el color asignado , el alias y el castigo que pueda tener. Define también un orden aleatorio e inicializa el tablero.
Método definirOrden, que asigna el orden de los jugadores a partir del TreeSet de jugadores. Crea un ArrayLIst”Jugador” en función del número de jugadores, y define un orden aleatorio.
Método jugarOca, da comienzo a la partida y lo repite mientras no se finalice el juego, pasando el turno entre los jugadores, en el orden establecido en el ArrayList. También comprueba si el jugador no tiene castigo de turno y muestra el mensaje al usuario para que tire el dado. Comprueba en qué casilla está el jugador y analiza la tirada. Muestra a los jugadores los mensajes según la casilla en la que han caído.
Método finOca, finaliza la partida mostrando el mensaje de despedida y da la opción al usuario de volver a jugar otra vez.
Método mensajeDespedida, muestra el mensaje de despedida.
DESARROLLO DEL CÓDIGO - CASILLA
La clase Casilla está en el paquete tablero y representa cada una de las casillas que forman el tablero de la oca.
La clase Casilla tiene dos variables:
La variable posición, que es un valor entero que representa la posición de la Casilla en el tablero
La variable TipoCasilla, que es un enum que está definido en una clase.
La clase Casilla asigna un valor entero como posición y recoge el tipo de casilla en función de ese valor, comprobando si está entre 1 y 63. Si no es así, se lanza un error.
DESARROLLO DEL CÓDIGO -TABLERO
La clase Tablero está en el paquete tablero y representa el conjunto de casillas necesarias para jugar a la Oca.
Su única variable es un conjunto ArrayList de Casillas que define 63 casillas.
Contiene el método “analizarTirada” donde se calcula la casilla destino, y se comprueba si se trata de la casilla final, en cuyo caso se ganaría la partida y se finalizaría. En caso de no ser la casilla final, se analiza la casilla y se ejecuta su método correspondiente.
DESARROLLO DEL CÓDIGO -TABLERO
Además, contiene los métodos necesarios para describir las acciones que después se llevarán a cabo en la partida del juego:
Método accionesOca, para la casilla Oca. Método accionesPuente, para la casilla Puente. Método accionesDados, para la casilla Dados. Método accionesTurnos, para la casilla Posada, Pozo y Cárcel. Método accionesLaberinto, para la casilla Laberinto. Método accionesCalavera, para la casilla Calavera. Método accionesNormal, para el resto de casillas.
DESARROLLO DEL CÓDIGO - TIPOCASILLA
La clase TipoCasilla está en el paquete tablero y es una enumeración de los posibles tipos de casillas que hay en el Juego.
Utiliza «enum» y crea las casillas: normal, oca, puente, dados, posada, pozo, cárcel, laberinto y calavera.
DESARROLLO DEL CÓDIGO - TEST
La clase Test está situada en el paquete Test y se configura para realizar las pruebas unitarias a través de Junit en diversos métodos del juego.
Se realizan pruebas en los siguientes métodos: Método constructor JugadorCastigo Método JugadorAlias Método GetColor Método SetColor Método GetAliasJugador Método SetAliasJugador Método GetCastigo Método SetCastigo Método GetTiraOtraVez Método SettiraOtraVez Método tesHashCode Método Equals Método CompareTo
PRUEBAS UNITARIAS Y DE INTEGRACIÓN
PRUEBAS JUNIT
Se han realizado pruebas unitarias sobre las clases Jugador, Casilla y Tablero, con los siguientes criterios:
Sobre constructores: Se han realizado pruebas unitarias que comprueben los tipos de
parámetros que recibe, así como las precondiciones que tengan estos parámetros. Por ejemplo:
@Test(expected=ClaseError.class)public void testCasilla() {
// Se crea una Casilla de prueba con valor no válido para la variable posición:
Casilla c = new Casilla (0);}
PRUEBAS JUNIT
Sobre getters y setters: Sólo se han realizado pruebas unitarias en aquellos casos en los que se
realice alguna comprobación lógica.
Sobre equals, compareTo, hashCode: Sobre los métodos que ordenan colecciones de java, se ha hecho una
prueba con dos instancias que se consideran iguales y dos instancias que se consideran diferentes.
Se ha comprobado que estos métodos devuelven los valores esperados. Sobre resto de métodos:
Se han realizado pruebas en las que se compara el resultado esperado (expected) y el resultado obtenido por los métodos.
Se ha simulado que un jugador llegue a casillas de todos los tipos, para comprobar que el resultado es el esperado.
Asimismo, se ha comprobado que la casilla final funciona según los requerimientos.
PRUEBAS JUNIT
Se puede consultar más información sobre las pruebas realizadas y el listado de errores en el siguiente enlace:
http://62.204.199.127/JAVA_UNED/alef/wiki/JUEGOGRUPO
MIEMBROS DEL GRUPO DE TRABAJO
Luis Oliva Cristina Morales Symon Oevering Miguel García Marta Estalayo
Tutor: Carlos Sánchez
FIN
Recommended