Diseño Del Conecta 4

Diseño del Cliente

  • JuegoConecta4: Hereda de la clase (Cliente.Base.)JuegoAbstracto y redefine los metodos necesarios para implementa la logica del juego del Conecta 4. Se encarga de procesar los eventos que se producen en el PanelBaseConecta4 y realizar las acciones asociadas a ese evento, y tambien de procesar los mensajes enviados por el servidor para la sincronización de la partida, como por ejemplo el abandono de un jugador o la realizacion de un nuevo movimiento
  • ConfiguracionConecta4: 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 DatosPartidaConecta4 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.
  • PanelBaseConecta4: 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 Conecta 4. Se encarga de mostrar la interfaz del juego y todos los graficos que contiene. En este caso una rejilla en la parte izquierda que llevará las fichas durante el juego, y en el lateral derecho un panel con la informacion de los jugadores: el nombre y las partidas ganadas
  • ThreadLanzamiento: Clase para iniciar un thread que va calculando la posicion de la ficha y la va actualizando en el PanelBaseConecta4

Diagrama UML Cliente

UMLConecta4Cliente.jpg

Diagrama de secuencia de iniciar Partida:

Diag1Conecta4.jpg

Diagrama de secuencia del lanzamiento:

Diag2Conecta4.jpg

Diseño del Servidor

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

Diagrama UML Servidor

UMLConecta4Servidor.jpg

Diseño de la parte Común

Recursos que comparten el cliente y el servidor:

  • MensajeConecta4: 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: Usa una constructora a la que se aporta la columna del lanzamiento y el color
  • DatosPartidaConecta4: 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 numero de fila, columna y color
  • Rejilla: Clase que representa la matriz de fichas de juego y los metodos para interactuar con ella, como son el metodo de comprobar si hay linea, insertar una ficha en una determinada posicion o comprobar si hay una casilla libre en una determinada columna
  • Lanzador: Contiene los datos basicos de un jugador. Nombre, color, partidas ganadas y los metodos para acceder y modificar sus valores

Diagrama UML Comun

UMLConecta4Comun.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 Cuando se inicia la partida se manda a todos los jugadores el tiempo de turno
inicializar Servidor Cliente Lanzador[] Cuando comienza la partida se manda la estructura creada con los datos de los jugadores
iniciar Servidor Cliente - Cuando se inicia la ronda se notifica a todos los jugadores, para la inicializacion del tablero
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 MensajeConecta4 Notifica al servidor que se ha realizado un movimiento
lanzarIn Servidor Cliente MensajeConecta4 Notifica a los jugadores que se ha realizado un movimiento
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
tiempoAcabado Cliente Servidor - Notifica al servidor que a algun usuario se le ha agotado el tiempo de turno
lanzadores 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

Patrones

Dado que este juego no presenta mayores complicaciones y se puede resolver con un diseño sencillo, no hizo falta usar ningún patrón de diseño