Skip to content

Latest commit

 

History

History

morra-cinese-cond

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

Morra Cinese (variabili condizione)

Creare un programma morra-cinese.c in linguaggio C che accetti invocazioni sulla riga di comando del tipo:

morra-cinese <numero-partite>

Il programma gestisce una serie di partite tra due giocatori virtuali (thread) P1 e P2 che giocano alla Morra Cinese. Il programma creerà: due thread P1 e P2 che rappresenteranno i giocatori, un thread giudice G e un thread tabellone T. I thread condivideranno una struttura dati e useranno un certo numero di semafori mutex e variabili condizione (a scelta dello studente) da usare opportunamente.

La struttura dati dovrà contenere i dati relativi ad una singola partita con i seguenti specifici campi:

  • mossa_p1: C(arta)/F(orbici)/S(asso)
  • mossa_p2: C/arta/F(orbici)/S(asso)
  • vincitore: 1 (giocatore 1)/2 giocatore(2)
  • (eventuali dati ausiliari)

Iniziata una partita, P1 e P2 popolano i relativi campi con una propria mossa casuale; ognuno, fatta la mossa, deve segnalare la cosa al processo G che valuterà chi ha vinto, se c'è un vincitore allora G popolerà il campo apposito e segnalerà la disponibilità di un nuovo esito al processo T; se invece la partita è patta (stessa mossa), allora lancerà direttamente una nuova partita. Il processo T, in caso di vittoria, aggiornerà la propria classifica interna e avvierà, se necessario, una nuova partita. Sempre T, alla fine della serie di partite, decreterà l'eventuale vincitore.

I thread dovranno tutti terminare spontaneamente alla fine del torneo.