Diseño del Mentiroso

Índice

El diseño del juego se puede dividir principalmente en 2 partes bien diferenciadas:

  • El diseño del juego con respecto al lado del cliente.
  • El diseño del juego por parte del servidor.

Ambas partes interactúan entre sí mediante un módulo de comunicaciones (en nuestro caso, paso de mensajes a través de dicho módulo).

Cliente:

Por parte del cliente podemos analizar el siguiente diagrama de clases:

DiseñoCliente.JPG

En el podemos observar que el cliente es quien posee y dibuja los distintos interfaces del juego. Tanto el panel de configuración de la partida como el propio interfaz de juego.
El proceso de los mensajes procedentes del servidor se realiza en Mentiroso el cual implementa (hereda) de JuegoAbstracto. Su mayor cometido es el de dibujar y dar al usuario la información acerca del estado de la partida, además de dejarle o no interactuar con ciertas partes del interfaz.

La secuencia de operaciones cuando interactúa el cliente con el juego los podemos ver detalladamente en los siguientes diagramas de secuencia:

El cliente inicia una partida:

SecuenciaInicio.BMP

El cliente realiza una apuesta durante el transcurso de una partida:

SecuenciaApuesta.BMP

En éstos diagramas podemos ver el proceso que sigue el programa desde que el cliente interactúa con su interfaz hasta que se actualiza su interfaz con el evento procesado. Las demás acciones que se pueden realizar durante la partida son muy análogas a estos diagramas de secuencia.

Servidor:

En cuanto al servidor, podemos analizar el siguiente diagrama de clases:

DiseñoServidor.JPG

La clase PartidaMentiroso es la encargada de gestionar y comunicar los eventos producidos en la partida por parte de un jugador a otros jugadores.
Alberga todo aquello que debe ser transparente para el cliente (como por ejemplo la baraja de cartas).
También es donde se define el esqueleto del juego, es decir, las reglas y normas que rigen el juego.

Parte Común:

La parte común corresponde a aquellas funcionalidades que necesita tanto la parte del cliente como la del servidor. En el siguiente diagrama de clases se puede observar que se implementa tanto el formato de mensaje de servidor al cliente como el tipo de baraja de cartas utilizada en éste caso.

DiseñoComun1.JPG

Protocolo de mensajes utilizado:

Para la comunicación Cliente-Servidor hemos implementado el siguiente protocolo de mensajes:

  • Mensajes Servidor -> Cliente:
Mensaje Significado
"ACTUALIZALISTAJUG" Actualiza la lista de jugadores de la partida
"JUGADORENTRA" Refresca en los clientes el nuevo jugador
"NO_SE_PUEDE_CONTINUAR" Avisa a los clientes que no se puede continuar la partida
"CARTASJUGADOR" Pinta las cartas del jugador
"APUESTA" Actualiza el panel a los clientes cuando apuesta el dueño del turno
"DESCARTE" Avisa del descarte a los demás usuarios
"DESTAPA" Actualiza el panel a los clientes cuando el poseedor del turno destapa una apuesta
"GANADOR" Se aborta la partida anunciando el ganador de la misma
"CENTRO" Dibuja las cartas del centro boca abajo
"CENTRODESTAPA" Da la vuelta a las cartas del centro
"DESTAPAROBLIGADO" Actualiza el panel del cliente obligandole a destapar la jugada en caso de que el anterior jugador a éste pueda ganar
"TURNO" Actualiza el panel del cliente según sea su turno o no
"ACTUALIZARCARTAS" Actualiza las cartas del jugador
  • Mensajes de Cliente -> Servidor:
Mensaje Significado
"APOSTAR" Procesa la apuesta realizada por el cliente que poseía el turno
"DESTAPAR" En caso de que posea el turno el cliente, se procesa el destape
"DESCARTE" Petición de descarte de cartas. El sevidor decide si se descarta o no