Closed iannellog closed 1 year ago
Se un giocatore affonda tutte le navi il parametro 'fine_gioco' viene inizializzato a True e dato alla funzione 'cambio_giocatore' permette la fine dell'alternarsi dei turni in quanto la partita è finita con la vittoria di quel giocatore. Ho spostato il commento di cosa restituisce una funzione all'inizio di ogni funzione. Ho commentato con 'funzione' tutto ciò che non era un 'metodo' ma una funzione. Ho migliorato i commenti sperando siano diventati chiari.
La prima affermazione della risposta è sbagliata.
La chiamata a cambio_giocatore
è all'interno di un ciclo che ha come condizione di uscita:
not fine_gioco
quindi quando viene chiamata la funzione il parametro in ingresso deve per forza essere sempre False.
Per evitare di controllare le altre navi nel caso ne sia già stata colpita una puoi inserire un break
dopo la riga 35.
La logica implementata è molto difficile da ricostruire. Segnalo alcune cose che possono aiutare a migliorare, ma probabilmente non bastano. In generale occorre fare uno sforzo per chiarire meglio nei commenti quale è il ruolo delle varie funzioni:
fine_gioco
nella funzionecambio_giocatore
: di fatto viene sempre passato il valore Falsesparo
e quindi anche per questa funzione non si capisce a che serve in ingresso (infatti il parametro non viene mai usato, ma solo definito)un esempio di commento che non è chiaro è quello alla riga 65:
in realtà non indica se è stato effettuato un colpo, ma se l'ultimo colpo effettuato è andato a segno o no che è cosa diversa rispetto alla logica del codice
vittoria
dopo il ciclo in ìnizio_giocopiuttosto che nella funzione
sparo`?