Diseño Del Puzzle Biquest

Diseño del Cliente

  • JuegoPuzzleBiquest: Hereda de la clase (Cliente.Base.)JuegoAbstracto y redefine los metodos necesarios para implementa la logica del juego del Puzzle Biquest. Se encarga de procesar los eventos que se producen en el PanelBasePuzzleBiquest 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
  • ConfiguracionPuzzleBiquest: 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 DatosPartidaPuzzleBiquest 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.
  • PanelBasePuzzleBiquest: 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 Puzzle Biquest. Se encarga de mostrar la interfaz del juego y todos los graficos que contiene. En este caso una rejilla en la parte central que llevará las fichas durante el juego, y a los laterales paneles con la informacion de los jugadores: el nombre, la barra de vida los barras de mana y los graficos de hechizos
  • ThreadMovimiento: Clase para iniciar un thread que va intercambiando la posicion de dos fichas y la va actualizando en el PanelBasePuzzleBiquest

Diagrama UML Cliente

UMLPuzzleBiquestCliente.jpg

Diagrama de secuencia de iniciar Partida:

inicioPB.jpg

Diagrama de secuencia de un movimiento:

movimientoPB.png

Diseño del Servidor

  • PartidaPuzzleBiquest: 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 Puzzle Biquest en el lado del servidor. Se encarga de procesar los mensajes que llegan desde el JuegoPuzzleBiquest y realiza las acciones correspondientes a ellos
  • InicioPuzzleBiquest: Implementa (Modulos.Juegos.Servidor.)IInicioPartida, define el metodo iniciarPartida que permite obtener instancias de objetos de la clase PartidaPuzzleBiquest

Diagrama UML Servidor

UMLPuzzleBiquestServidor.jpg

Diseño de la parte Común

Recursos que comparten el cliente y el servidor:

  • MensajePuzzleBiquest: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 movimiento: En el caso de ser un mensajes de movimiento se usa la constructora que aporta las filas y columnas de las fichas a intercambiar, en el caso de ser un mensaje de actualizacion del estado del turno se usa la constructora que lleva como parametros la nueva rejilla y el array de Lanzadores
  • DatosPartidaPuzzleBiquest: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.
  • Ficha: Clase que representa la ficha con su color y su estado
  • Rejilla: Clase que representa la matriz de fichas de juego y los metodos para interactuar con ella, como son el de intercambiar dos fichas, el metodo de comprobar si hay linea, insertar una ficha en una determinada posicion o completar las casillas vacias de la rejilla
  • Lanzador: Contiene los datos basicos de un jugador. Nombre, mana, partidas ganadas, estados especiales, libro de hechizos y los metodos para acceder y modificar sus valores
  • Libro: Contiene los datos basicos de los hechizos: Mana requerido, estados de los mismos y los metodos para modificar sus estados

Diagrama UML Comun

UMLPuzzleBiquestComun.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
tiempo Servidor Cliente Integer Manda a los jugadores el tiempo de turno
iniciar Servidor Cliente MensajePuzzleBiquest Notifica a los jugadores que se inicia la ronda
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 MensajePuzzleBiquest Notifica al servidor que ya se puede realizar el cambio de turno
lanzarOut Cliente Servidor MensajePuzzleBiquest Notifica al servidor que se ha realizado un movimiento
lanzarIn Servidor Cliente MensajePuzzleBiquest Notifica a los jugadores que se ha realizado un movimiento
nuevoDatos Servidor Cliente MensajePuzzleBiquest Manda a los jugadores los datos actualizados
otra Cliente Servidor - Notifica al servidor que un jugador quiere la revancha
otra Servidor Cliente - Notifica al rival que un jugador quiere la revancha
lanzarHechizo Cliente Servidor Integer Manda al servidor el hechizo lanzado por algun jugador
forzarRelleno Cliente Servidor MensajePuzzleBiquest Notifica al servidor que se ha eliminado alguna fila durante un doble turno, obligandole a rellenar la rejilla con nuevas fichas y mandarlas a todos los jugadores
tiempoAcabado Cliente Servidor - Notifica al servidor que a algun jugador se le ha acabado el tiempo de turno
reiniciar Cliente Servidor - Notifica al servidor que se ha aceptado la revancha
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