<aside> 🧩

Prerequisiti

<aside> 🧠

Cosa imparerai con questo esercizio

<aside> 📢

Novità

Da questo esercizio in poi la classe (voi studenti, non quelle di Python) diventa un team di sviluppo che lavora su un unico progetto. Ognuno avrà un compito preciso e sarà un ingranaggio indispensabile.

In particolare, realizzeremo un sistema di generazione e gestione degli oggetti equipaggiabili. Non lavoreremo più su una singola classe Weapon, ma introdurremo una gerarchia di classi per coprire ogni tipo di oggetto: armi da mischia, a distanza, scudi, armature, accessori magici e simili.

La vera sfida non è creare tanti oggetti diversi, ma fare in modo che tutti, pur essendo sviluppati da persone diverse funzionino insieme senza litigare. Spoiler: litigheranno comunque, ma meno.

</aside>


L’ereditarietà come standard aziendale

Nello sviluppo di grandi titoli (pensa a Diablo, Elden Ring o Baldur’s Gate) il codice non è scritto da un eroe solitario davanti alla tastiera. l lavoro è diviso tra specialisti: chi cura il combattimento, chi il bilanciamento, chi gli effetti, ecc.

Senza l’ereditarietà, il caos

Immagina se tra i programmatori del team Alice chiamasse il bonus di una spada danno_extra e Bob chiamasse il bonus di un anello power_up. Il programmatore che gestisce il Player dovrebbe scrivere codice diverso per ogni oggetto.

Risultato: codice fragile, confuso e pronto a rompersi alla prima modifica. Un grande classico.

Ordine

Usando l’ereditarietà, il Project Manager definisce una classe base (es. Item o EquippableItem) che stabilisce le regole per tutti, ad esempio:

  1. Ogni oggetto deve avere un metodo get_stats().
  2. Ogni oggetto deve avere una rarity.
  3. Ogni oggetto deve poter essere visualizzato nella View.

Questa classe base funziona come un contratto. Tutte le sottoclassi devono rispettarlo.

Grazie a ciò, il resto del software può usare spade, elmi o amuleti nello stesso modo, senza sapere cosa c’è sotto il cofano. Questo è il vero potere dell’ereditarietà: standardizzare la complessità.

Se una sottoclasse eredita da Item ma cambia completamente il significato di un metodo, probabilmente stai violando il contratto. E no, non è “creatività”.


Organizzazione di un Game Studio

In una software house moderna lo sviluppo è un lavoro di squadra. Anche se siamo tutti studenti programmatori, all’interno dei vostri team dovrete interpretare diversi ruoli: