Ejemplo minimalista del juego del Oso con cliente y servidor
oso.game.Jugada encapsula una posición (x,y) en el tablero así como la letra que se coloca.
oso.game.Tablero contiene el array de casillas con los caracteres ' ' si la casilla está vacía, 'o' y 's' si tiene esas letras que están sin usar. Se usan las mayúsculas 'O' y 'S' si ya han sido usadas para hacer osos y por lo tanto no se pueden volver a usar. Tablero puede comprobar si una jugada esValida, así como aplicarla devolviendo el número de oso que realiza.
oso.clients.ClienteOso un hilo que contiene la lógica para conectarse al servidor, crear el GUI y leer mensajes del servidor.
oso.clients.OsoGUI la interfaz gráfica. Con radioButtons para seleccionar si se pone una O o S, crea el array de botones, activa y desactiva los botones, y manda jugadas al servidor al pulsar un botón. También muestra los puntos y pone las letras del Tablero en los botones.
oso.network.ConexionJugador encapsula el socket así como los ObjectInputStream y ObjectOutputStream para intercambiar objetos entre cliente <--> servidor, esta clase se utiliza tanto por el cliente como por el servidor.
oso.server.ServidorOso es el hilo del servidor que continuamente acepta 2 clientes y crea una partida con ellos.
oso.server.Partida es un hilo que gestiona la Partida entre 2 jugadores.
oso.ServerY2Clientes es para lanzar 1 servidor y 2 clientes de golpe y poder probar rápido las partidas multi-jugador. No es recomendable utilizarlo para desarrollar/depurar ya que al cerrar cualquiera de los clientes o servidores, se cerrará todo y el output de consola se muestra mezclado.
El servidor espera la conexión de 2 jugadores y crea una partida con ellos.
El servidor mandará el tablero a cada cliente, el Puntos (con los puntos de los 2 jugadores) y TuTurno para indicar a un cliente que es su turno. El cliente cuando es su turno, manda una jugada al servidor, éste la valida y la aplica al tablero. El proceso se repite hasta que el tablero está lleno.