1) Crei dei tavoli ovvero degli insiemi di utenti aggiunti per una specifica partita o torneo
2) Gestisci i turni e i punteggi e le carte di ogni partita, aggiorni la mossa del giocatore di turno per ogni altro giocatore.
Esempio:
Il client aggiunto al tavolo 25, durante la fine del suo turno invia al server il dato della mossa:
Tavolo = 25, TurnoGiocatore = 3, CartaGiocata = 39, mossa 1, ora 11:11':11'.
Di ritorno si aggiornano tutti i client del tavolo con l'effetto causato da quella mossa:
(carta 39 cavallo di denari) (carta 29 cavallo di fiori)
G1.Punti = 0; G2.Punti =0; G3.Punti=2,G4.punti=0; CombinazioneVincente = true, CartaDiDenariAccumulate=1, CartaAccoppiata = 29;
G1.carte in mano() = {12,24}; G2()...={2,7}; G3()..={10,9}; ecc..
Il server dovrebbe quindi:
- ricevere dai client le iscrizioni o le prenotazioni ai tavoli, iniziare l'evento partita alla pressione del tasto [Io Gioco] di almeno 2 iscritti entro un limite di tempo.
- gestire le partite e aggiornare le carte e i punteggi ad ogni mossa, e visualizzare gli esiti del gioco.
- gestire le presenze/assenze prolungate e gli abbandoni dal gioco
Per gestire al meglio ti occorre un timer per liberare l'utente assente dalla partita in corso o al momento di conferma per l'inizio della partita, e una lista di utenti in attesa che lo rimpiazzino e inizino a giocare. Un timer anche per il tempo massimo per effettuare la mossa.
In caso di abbandono di un giocatore e se il numero dei giocatori rimasti è superiore al minimo consentito, potresti far continuare la partita in modo tale che sia il programma a giocare con un IA di vario livello contro i giocatori rimasti presenti e attivi.
Usi web service api o altro?