davidepietrangeli / Battaglianavale

Programma per l'esame di 'Programmazione' dell'Università Campus Bio-Medico
0 stars 0 forks source link

Uso delle classi #9

Closed iannellog closed 1 year ago

iannellog commented 1 year ago

Come commento generale segnalo che le classi sono usate poco, il che ha avuto probabilmente delle ripercussioni sulla leggibilità complessiva del codice. Di fatto sono state usate abbastanza bene solo nel file tipo_nave.py (vedi comunque l'altra issue aperta su questo file).

davidepietrangeli commented 1 year ago

Ho impostato la logica del programma sull'utilizzo della classe 'Nave' e del suo costruttore come lei mi aveva indicato. Le ricordo che prima era impostato tutto sulla classe 'Campo'. Progettualmente l'utilizzo della classe 'Nave' è stato efficiente al fine di implementare i progetto con la logica del gioco della battaglia navale.

davidepietrangeli commented 1 year ago

Non concordo sul fatto che le classi siano usate poco. La classe Nave sfrutta a pieno i suoi costruttori all'interno del programma. Nel caso non fosse abbastanza secondo il suo parere, gradirei ricevere degli input da cui partire per poter aggiungere efficienza, come da lei richiesta.

iannellog commented 1 year ago

Sarebbe stato naturale introdurre una classe campo e una classe giocatore oltre alla classe Nave (che come ho scritto va abbastanza bene). Per esempio, ma è solo un modo di impostrare le cose, la classe giocatore poteva contenere come attributi la lista delle proprie navi, la rappresentazione matriciale del campo dell'avversario (non il proprio che serve solo in fase di input dei dati per controllare che le navi siano posizionate correttamente), e un riferimento al giocatore avversario. Il programma principale poteva allora essere (ma è solo una descrizione di massima in pseudo-codice):

giocatori = (giocatore(),giocatore())
giocatore_attivo = estrai a sorte in (0, 1)
partita_finita = False
while not partita_finita:
    risultato_colpo, partita_finita = giocatori[giocatore_attivo].spara_un_colpo()
    if risultato_colpo == colpo_in_acqua:
        giocatore_attivo = cambia(giocatore_attivo)
vittoria(giocatori[giocatore_attivo])

Comunque il programma attuale ha una sua struttura e non penso a questo punto valga la pena fare modifiche radicali.