Corso Avanzato di Sviluppo Python
Capitolo
>
Livello
Liste Avanzate
Modifica di una matrice
Obiettivo
Raccogli e posiziona le bottiglie di vino sullo scaffale modificando una Matrix.
Ci sono diverse bottiglie di vino che devono essere sistemate in uno scaffale per vino. Tuttavia, essendoci già alcune bottiglie presenti nello scaffale, gli oggetti devono essere collocati in posizioni specifiche per poter essere riposti correttamente.
Le bottiglie sullo scaffale sono memorizzate in una Matrix, un tipo di Nested List. Le Matrix sono Nested List in cui ogni elemento è una lista della stessa lunghezza, creando così una sorta di griglia in cui gli elementi sono suddivisi in righe e colonne. Per esempio:
matrix = [ [1, 2, 3], [4, 5, 6], [7, 8, 9], [0, 0, 0] ]
Nel codice sopra abbiamo una Matrix con tre (3) colonne e quattro (4) righe. Per accedere a un elemento all'interno della Matrix, tutto ciò che devi fare è indicare la riga e la colonna in cui si trova l'elemento, similmente a come accederesti ad un elemento di una lista standard, ma con due indici invece di uno. Per esempio, basandoti sul codice sopra: matrix[0][0] = 1, matrix[0][1] = 2, matrix[1][0] = 4, etc.
Ci sono quattro (4) diversi tipi di bottiglie di vino nella cantina, ossia: "purple bottle", "green bottle", "blue bottle", "yellow bottle". Raccogli tutte le bottiglie presenti sul campo in modo che possano essere riposte sullo scaffale.
Ci sono anche bottiglie conservate all'interno di casse; raggiungi i segni a forma di X luminosi e utilizza la funzione collect() mentre sei di fronte alle casse per raccogliere le bottiglie. Esistono due costanti che contengono il contenuto delle casse: lower_crate e upper_crate. I loro nomi corrispondono alla loro posizione sulla mappa e vengono usati come segue: player.collect(lower_crate).
Una volta raccolte tutte le bottiglie, assegna il numero di bottiglie raccolte per ogni tipo a delle variabili, ovvero: purple_bottle, green_bottle, blue_bottle, yellow_bottle. Successivamente, dirigiti verso il segno a forma di X dorato e posizionati di fronte allo scaffale per vino.
Nell'editor di codice verrà mostrata una Matrix denominata wine_rack; cerca gli elementi nella Matrix che contengono il valore 0 e sostituiscili con le bottiglie che hai raccolto. La Matrix avrà il colore della bottiglia da aggiungere evidenziato in ogni riga. Per aggiungere un nuovo elemento alla Matrix, digita la riga e la colonna in cui desideri posizionare il valore, per esempio: wine_rack[0][1] = purple_bottle.
Ricorda che tutte le posizioni nelle liste partono da 0. Una volta che tutti gli elementi sono stati aggiunti alla Matrix e questa è completa, utilizza la funzione place() seguita dalla funzione speak() sul segno a forma di X dorato con il nome della Matrix per verificarne il valore e completare il livello, come segue: player.place(wine_rack), player.speak(wine_rack).