Coding for KidsCoding for Kids
Livelli CreativiSfideGuida per Insegnanti
Vota per le funzionalità
Corso Avanzato di Sviluppo Python
Capitolo
>
Livello

Classi avanzate
Sovraccarico degli operatori

Obiettivo

Calcola quanta vino viene chiarificato usando vettori e Operator Overloading.

Dopo che il vino è stato pressato, deve essere filtrato e chiarificato; diverse botti vengono filtrate e l'intero lotto deve essere risciacquato. È importante registrare quanta vino viene prodotto affinché le botti possano essere sigillate e invecchiate.

Per fare ciò, è necessario creare vettori e sommarli; questi sono simili alle liste ma non sono altrettanto flessibili, pur essendo più efficienti in termini di memoria. Vengono di solito utilizzati per gestire coordinate; in questo caso, li utilizzeremo come variabili che contengono più di un valore. La somma dei vettori si effettua tramite l'Operator Overloading, che estende le funzionalità degli oggetti di classe per permettere l'uso degli operatori su di essi come faresti con valori normali.

Per cominciare, cammina e raccogli i contenitori d'acqua metallici situati nella parte alta della stanza; questi verranno usati per aiutare a risciacquare il vino filtrato nelle botti. Una volta raccolti, dirigiti verso il segno X scuro sul tappeto rosso, affronta la botte e inizia a vettorizzare il contenuto di ciascuna botte.

I segni X sono disposti in gruppi di tre (3) per ogni tappeto colorato: un segno X dorato, un segno X chiaro e un segno X scuro. Su tutti i segni X scuri e chiari usa la funzione water() per aiutare a risciacquare le botti. Inoltre, su tutti i segni X scuri e chiari, utilizza la funzione read() per identificare quanta vino viene processato in quella colonna di botti. Sul segno X dorato usa la funzione write() per annotare il totale delle quantità insieme.

Nell'editor di codice è presente una classe chiamata vector, che ti permette non solo di creare un vettore, ma anche di sommarlo. Crea oggetti vector per memorizzare i dati acquisiti dai segni X chiari e scuri; per esempio, sui tappeti red viene filtrato il vino rosso:

# Create object using data from dark X mark red_wine_dark = vector(345, 272) # Create object using data from light X mark red_wine_light = vector(248, 432) # Add together vectors for totals red_wine_total = red_wine_dark + red_wine_light

In un vettore, la prima posizione è chiamata x e la seconda posizione y; la formula è la seguente: object_name = vector(x,y). Questo è fondamentale per popolare i vettori con le informazioni acquisite dalla funzione read().

Sul segno X dorato, utilizza la funzione write() per annotare il totale per ogni gruppo di vettori; per esempio, nel caso dei segni X sul tappeto rosso, si scrive così:

await player.write( "There is a total of %s pounds on the left barrels and %s pounds on the right barrels" % (red_wine_total.x, red_wine_total.y)

Ricorda di aggiungere .x e .y alla fine del totale per identificare i valori di ciascun vettore.

Per ogni serie di tappeti colorati viene filtrato un tipo differente di vino. Sul tappeto red di cui sopra viene filtrato il red_wine; sui tappeti yellow, viene filtrato il sparkling_wine; sui tappeti green, viene filtrato il white_wine; e sui tappeti orange, viene filtrato il orange_wine.

Una volta che tutti i segni X chiari e scuri sono stati risciacquati tramite la funzione water() e tutti i segni X dorati hanno annotato i totali, avrai completato il livello.

Libro del Codice