Ecco come ho pensato di gestire il gioco:
Codice:
1 - Dopo aver posizionato le navi entrambi i processi si mettono in attesa
(semaforo occupato)
2 - si sorteggia chi inizia
3 - il processo non sorteggiato (P2) resta in attesa che in memoria
condivisa ci sia la coordinata fornita dall'altro processo
(P1) (come faccio a rilasciare il semaforo ed essere sicuro che
lo occuperà proprio P1?)
4 - si comunica a P1 di iniziare (semaforo libero per P1)
5 - P1 chiede al proprio utente di inserire una coordinata
6 - P1 accetta la mossa controllando che sia valida e la scrive
in memoria condivisa (P1 rilascia il semaforo in favore di P2)
7 - si comunica a P2 che il dato che cerca è pronto (semaforo libero per P2)
8 - P2 cerca una corrispondenza tra le coordinate inserite dal suo utente
all'inizio, se tale corrispondenza esiste o no
9 - nel caso esiste, P2, decrementa il numero di navi non colpite e controlla
quante ne restano
10 - se le navi rimanenti sono + di 0 comuinca in memoria condivisa che una nave
è stata colpita rilasciando poi il semaforo in favore di P1
11 - se le navi rimanenti sono 0 comunica in memoria condivisa che ha perso
rilasciando poi il semaforo in favore di P1
12 - P1 occupa il semaforo, elabora il risultato fornito da P2 e fa apparire un
simbolo corrispondente all'esito della mossa sulla griglia del proprio
utente oppure comunica la vittoria, rilascia il semaforo e attende
la mossa di P2
13 - si ripetono i passi da 4 a 12 invertendo P1 con P2 e così via finché
qualcuno ha vinto.
com'è la traccia?