Prespectiva y Consejos

Bueno Espero que estén bien antes que nada.

Mi Duda es la siguiente me han dejado desarrollar un juego Cliente-Servidor sobre el juego Tic tac toe, tres en raya, gato como le conozcan el problema radica en las conexiones en seguida explico por que:

1.-Mostrar una lista de jugadores que estan jugando ejemplo:
jugador1 vs jugador2
jaime ------- jose Manuel
erick ------- luis

2.- Tener una Lista de Jugadores en espera ejemplo:
Lista de jugadores:
Oscar
Javier
Hector
Josue

3.- Retar a jugador que este en lista de espera.

4.- Al terminar el juego los envie directamente a la los dos jugadores a la lista de jugadores en espera.

Solo quiero consejos,opiniones y recomendaciones no pido que me lo pasen o que me lo hagan, igual ya cheque el juego que Nopalin hizo.

Saludos.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

lista de espera

Lo que no entiendo es por qué hay jugadores en lista de espera. Cuando mucho debería haber uno; en cuanto entra otro jugador, se puede iniciar otro juego; a menos que haya un límite de juegos concurrentes, entonces sí aplica dicha lista.

Revisa en mi blog hay una entrada muy vieja de java.nio y java.io para escribir aplicaciones cliente-servidor, actualmente creo que ya conviene usar más java.io que nio por las nuevas arquitecturas multicore pero la cosa es que con eso te darás una idea del manejo de las conexiones, el patrón hilo-por-conexión y cosas así. Tanto el cliente como servidor tienen su chiste porque la conexión es tipo cliente-servidor solamente en el sentido de que un usuario se conecta al servidor para poder jugar y es quien inició la conexión, pero la conexión una vez abierta se debe manejar de manera asíncrona, es decir estar esperando constantemente datos entrantes. Por qué? Pues porque cuando un jugador hace su jugada, ese cliente le notifica de inmediato al servidor de la jugada hecha, y el servidor debe notificar de inmediato a la contraparte. Por lo tanto el servidor siempre está leyendo datos de las conexiones que recibe, esperando a que llegue una jugada, y los clientes siempre deben estar leyendo datos de la conexión que hicieron al servidor, esperando a que llegue una jugada.

Lo primero que deberías hacer es enfocarte en tener bien implementada la funcionalidad de un juego, luego poder manejar varios juegos concurrentes y finalmente manejar la lista de espera.

Observable

hay un patron que se llama Observable que pueden ser al menos 2 clases, la observadora y la observada. La clase observadora reacciona ante un evento ocurrido en la clase observada. Es algo similar, porque este patron lo que en realidad hace sobre la clase observada es chillar que hubo alguna modificacion en su estado, esa modificacion la escucha la clase observadora y reacciona con alguna otra fucnion