Diseño Del Gorilla Reloaded

Diseño del Cliente

  • JuegoGorilla: Hereda de la clase (Cliente.Base.)JuegoAbstracto y redefine los metodos necesarios para implementa la logica del juego del Gorilla Reloaded. Se encarga de procesar los eventos que se producen en el PanelBaseGorilla y realizar las acciones asociadas a ese evento, y tambien de procesar los mensajes enviados por el servidor para la sincronizacion de la partida, como por ejemplo el abandono de un jugador o la realizacion de un nuevo movimiento
  • ConfiguracionGorilla: Hereda de la clase (Cliente.Base.)DialogoConfiguracion y redefine sus metodos como necesita. Muestra las opciones configurables de una partida del juego, en este caso el tiempo de turno. Devuelve una instancia de DatosPartidaGorilla con esas opciones configurables. Al crear una partida se abre este Dialogo solicitando el tiempo de turno mediante el desplazamiento de un JSlider con los tiempos recomendados y el numero de golpes para matar al rival mediante un JRadioGroup
  • PanelBaseGorilla: Hereda de la clase (Cliente.Base.)PanelBase y la complementa ofreciendo los metodos necesarios para la creacion y configuracion del panel que se va a utilizar para la partida del Gorilla Reloaded. Se encarga de mostrar la interfaz del juego y todos los graficos que contiene. En este caso una panel en la parte central sobre el que se pintará el escenario con sus edificios, los gorillas sobre los edificios y la banana y la barra de fuerza durante el lanzamiento. En la parte superior se dibujara un panel con la informacion de la partida: numero de partidas ganadas, sentido y fuerza del viento y el tiempo restante de turno
  • ThreadLanzamiento: Clase para iniciar un thread que va calculando la posicion del proyectil y la va actualizando en el PanelBaseGorilla

Diagrama UML Cliente

UMLGorillaCliente.jpg

Diagrama de secuencia de iniciar Partida:

Diag1Gorilla.jpg

Diagrama de secuencia del lanzamiento:

Diag2Gorilla.jpg

Diseño del Servidor

  • PartidaGorilla: Hereda de la clase (Modulos.Juegos.Servidor.)Partida redefiniendo los metodos para controlar el juego y llevar a cabo las acciones propias de la lógica del Gorilla Reloaded en el lado del servidor. Se encarga de procesar los mensajes que llegan desde el JuegoGorilla y realiza las acciones correspondientes a ellos
  • InicioGorilla: Implementa (Modulos.Juegos.Servidor.)IInicioPartida, define el metodo iniciarPartida que permite obtener instancias de objetos de la clase PartidaGorilla

Diagrama UML Servidor

UMLGorillaServidor.jpg

Diseño de la parte Común

Recursos que comparten el cliente y el servidor:

  • MensajeGorilla: Hereda de (Modulos.Juegos.Compartido.)MensajePartida, clase que se envia en los mensajes entre servidor y cliente y que contiene los datos necesarios de un lanzamiento: El escenario, el viento, y el array de lanzadores del que se extraerá el Lanzador que está lanzando la banana y nos indicará punto de origen, fuerza y ángulo del lanzamiento, el tipo de herida elegido al crear la partida y el tiempo de turno.
  • DatosPartidaGorilla: # Hereda de (Modulos.Juegos.Compartido.)DatosPartida que contiene los datos que ajustan los parametros de una partida, en este caso incorpora un parametro nuevo para poder indicar el tiempo de turno y un segundo parametro que indica el numero de golpes necesarios para acabar con el rival.
  • Escenario: Clase que representa el escenario de juego y el poligono que lo delimita para el calculo de colisiones o salida del mapa. Incorpora metodos para generar escenarios aleatoriamente y utilidades para posicionar los Lanzadores sobre los edificios
  • Lanzador: Contiene los datos basicos de un gorilla. Nombre, posicion, vida, fuerza con la que tira, angulo…y los metodos para acceder y modificar sus valores
  • Viento: Contiene el valor del viento y metodos para generar viento aleatoriamente
  • Banana: Contiene los datos de la banana que se lanza

Diagrama UML parte Comun

UMLGorillaComun.jpg

Protocolo de mensajes

Aparte de los mensajes de control (transparentes al desarrolador del juego) se envían los siguientes mensajes:

Evento Origen Destino Datos Descripción
inicializar Servidor Cliente - Cuando comienza la partida se notifica a los jugadores
inicioEscena Servidor Cliente - Cuando se inicia la ronda se manda a los jugadores el escenario, los datos de los jugadores, viento y datos de la partida
nuevoTurno Servidor Cliente String Cuando se cambia de turno se manda a los jugadores el nombre del jugador que tiene el turno
pasa Cliente Servidor Rejilla Notifica al servidor que ya se puede realizar el cambio de turno
lanzarOut Cliente Servidor MensajeGorilla Notifica al servidor que se ha realizado un lanzamiento
lanzarIn Servidor Cliente MensajeGorilla Notifica a los jugadores que se ha realizado un lanzamiento
nuevoViento Servidor Cliente Viento Manda a los jugadores un nuevo valor para el viento
otra Cliente Servidor - Notifica al servidor que un jugador quiere la revancha
otra Servidor Cliente - Notifica al rival que un jugador quiere la revancha
reiniciar Cliente Servidor - Notifica al servidor que se ha aceptado la revancha
nuevoLanzadores Servidor Cliente Lanzador[] Manda al cliente los datos de los jugadores actualizados
ganador Servidor Cliente String Manda a los jugadores el nombre del ganador
numJugador Servidor Cliente Integer Cuando un jugador se incorpora se notifica al creador si puede iniciar la partida