
<aside>
đź§©
Prerequisiti
- Parte 1 e Parte 2 completate (
Weapon, Player, simulazione duello)
- Aver studiato l’incapsulamento e l’uso di
@property e duck typing
</aside>
Cosa imparerai con questo esercizio
- Come e quando creare dei metodi privati;
- Usare
@property e setter specifici di Python al posto di getter e setter generici;
- Duck typing: verificare se l’interfaccia pubblica di un oggetto ha dei metodi specifici senza preoccuparsi del tipo dell’oggetto;
- Implementare in autonomia una logica di gioco.
Obiettivo
Rendere il sistema più robusto, autonomo e conforme alle pratiche comuni di Python:
- rifinire
Player e Weapon con @property e metodi privati;
- introdurre la classe
Potion;
- far sì che ogni
Player decida autonomamente se usare una pozione con should_use_potion(). Viene valutato nelle interrogazioni soprattutto il processo decisionale (criteri, chiarezza, test), non la “strategia vincente”.
NovitĂ rispetto alle parti precedenti
Potion: una nuova classe che rappresenta una pozione magica, con quattro attributi: nome, tipo, ammontare e durata nei turni;
- Schema UML: creare con strumenti online come l’editor di diagrammi di **draw.io o Mermaid** uno schema UML delle classi;
- Oltre al codice sorgente, consegna una relazione (minimale ma completa) in cui viene riportato e spiegato lo schema UML e vengono documentate e spiegate le scelte effettuate per l’implementazione di
should_use_potion() (vedi dopo).