Esempio di Python Turtle: disegnare i fiocchi di neve

Cosa farai

Ti presenteremo il modulo Python Turtle, con il quale creerai un bel paesaggio pieno di fiocchi di neve. È un modo molto divertente di imparare a programmare con Python. Lungo il percorso imparerai a pensare in termini di sequenze, a usare i loop per ripetere una sequenza, a usare il modulo random e a usare le funzioni.

Cosa imparerai

Scrivendo il codice per creare fiocchi di neve con il tuo Microninja imparerai:

  • a tracciare linee con Python Turtle
  • a disegnare curve
  • a usare i loop per ripetere istruzioni e creare forme
  • a usare contemporaneamente più loop per creare pattern a forma di spirale
  • a modificare il colore della penna in maniera casuale
  • a creare una funzione per disegnare un fiocco di neve

Usare IDE su Microninja

Un fantastico modo di scrivere e testare codice è quello di usare Thonny Python IDE, un’applicazione di sviluppo per Python.
Lancia Thonny Python IDE da Menu/Coding/Thonny Python IDE.
Si accede al menù facendo clic sull’icona di Microninja in basso a sinistra dello schermo.
Una volta aperta la finestra di Python, avrai a disposizione un editor di testo, dove puoi scrivere, salvare e testare il tuo codice.

Salva subito il tuo file con il nome snowflake.py: fai clic su File e quindi su Save As. Seleziona la cartella .thonny, e scrivi snowflake.py nel campo di testo Nome del file. Fai quindi clic su Salva.

Come tracciare una linea con Python Turtle

Per usare Turtle in Python devi prima di tutto importare la libreria di Turtle. Nell’editor di testo digita import turtle.

Dai un nome alla tua tartaruga/cursore usando una variabile. Io la chiamerò Elsa, ma puoi scegliere il nome che preferisci.

elsa = turtle.Turtle()

Ora puoi dire cosa fare alla tua tartaruga; per esempio, puoi dirle di andare avanti di 100. Prova.

elsa.forward(100)

Fai clic su File e quindi su Save.

Fai ora clic su Run per lanciare il programma. Cosa succede?

Come far fare una curva alla tua tartaruga di Python Turtle

La tua tartaruga sta puntando in una direzione; va bene se vuoi tracciare una linea, ma dobbiamo farla girare se vogliamo disegnare una forma diversa, come ad esempio un quadrato.

Sotto la riga elsa.forward(100), aggiungi:

elsa.right(90)

Nota: in Turtle gli angoli sono espressi in gradi. Ci sono 360° in un cerchio. Quanti ce ne sono nell’angolo di un quadrato? Esatto: 90. Il valore 90 fra parentesi in elsa.right(90) è espresso in gradi. Quindi questa riga di comando sta dicendo alla tartaruga di ruotare verso destra di 90 gradi.

Aggiungi un’altra istruzione per far avanzare la tua tartaruga di 100:

elsa.forward(100)

Salva e lancia il programma per vedere cosa succede.

Sei a metà strada. Di cosa hai bisogno per completare il quadrato?

Come usare i loop per creare una forma

Per disegnare un quadrato, hai ripetuto alcune volte le stesse linee di codice.
Non è il modo più efficiente di procedere. Al posto di ripetere le righe di codice, è molto meglio usare un loop.

Al posto di:

elsa.forward(100)
elsa.right(90)
elsa.forward(100)
elsa.right(90)
elsa.forward(100)
elsa.right(90)
elsa.forward(100)

Puoi scrivere:

for i in range(4):
  elsa.forward(100)
  elsa.right(90)

Salva e vedi cosa succede lanciando il programma.

Come creare una spirale

Adesso creiamo forme differenti e ripetiamole per ottenere una spirale che assomigli a un fiocco di neve.

Al posto del codice scritto per creare il quadrato, scrivi:

for i in range(2):
  elsa.forward(100)
  elsa.right(60)
  elsa.forward(100)
  elsa.right(120)

Verrà disegnato un parallelogramma.
Salva e lancia il tuo programma per visualizzarlo:
Per disegnare un fiocco di neve dovrai ripetere più volte una stessa forma… dovrai cioè inserire un loop all’interno di altri loop.
Al di sopra di for i in range(2): digita:

for i in range(10):

Per quante volte verrà ripetuto questo loop?

Vai in fondo alla sequenza delle righe di codice e premi spazio 4 volte.
Ricorda che il rientro in Python è molto importante; deve essere corretto perché il programma funzioni come ci si aspetta.
Ora digita:

elsa.right(36)

Salva e lancia il programma per vedere cosa succede.

Dovresti vedere un disegno come il seguente:

Come cambiare il colore della penna in maniera casuale

Fino ad ora la tartaruga ha disegnato delle linee nere su uno sfondo bianco. È arrivato il momento di aggiungere un po’ di colore!

Per impostare il colore della tartaruga, inserisci il comando seguente fra la definizione del nome e il loop:

elsa.color("cyan")

Nota: in inglese la parola colore è scritta in modo diverso in nazioni diverse. Negli U.S.A. è scritta “color” e in Python deve essere scritta così affinché il programma funzioni.

Ho scelto di usare il colore cyan ma puoi usare anche:

  • “blue”
  • “grey”
  • “magenta”
  • “purple”

Puoi anche modificare il colore dello sfondo se prima crei una variabile per definirlo.
Sotto la definizione del nome della tartaruga, scrivi:

wn = turtle.Screen()

Nota: Screen è scritto con la lettera maiuscola. Bisogna fare molta attenzione all’uso delle lettere maiuscole in Python per essere sicuri che il programma funzioni correttamente.

Ora puoi cambiare lo sfondo usando un comando del tipo:

wn.bgcolor(“blue")

Puoi anche fare in modo che la tua tartaruga assuma un colore casuale, e ottenere così un risultato diverso ogni volta che lanci il programma.

Per farlo, devi prima di tutto importare la libreria random.
Sotto import turtle digita import random.

Quindi,cambia il colore dello sfondo da "blue" a "grey".

Sotto, crea una variabile di nome colours per salvare la lista dei colori che vuoi utilizzare:

colours = ["cyan", "purple", "white", "blue"]

Alla fine del loop che crea la spirale, sotto elsa.right(36), digita:

elsa.color(random.choice(colours))

Salva e lancia il programma per visualizzare il tuo fiocco di neve multicolore!

Utilizzare una funzione per disegnare un fiocco di neve

Il tuo fiocco di neve non è male, ma potrebbe essere più realistico. Miglioriamolo!

Per il disegno che ci accingiamo a fare, dobbiamo riuscire a far muovere la tartaruga a partire da un punto a scelta, e non necessariamente dal centro dello schermo. I comandi penup() e pendown() ci permettono di farlo senza aver bisogno di scrivere nessuna riga di codice. È come se prendessi una vera penna da un foglio e la muovessi nel punto in cui voglio iniziare a scrivere.
Digita le istruzioni seguenti sotto la lista dei colori:

elsa.penup()
elsa.forward(90)
elsa.left(45)
elsa.pendown()

Poi, definisci una funzione con:

def branch():

Nota: il codice per disegnare un ramo del fiocco di neve verrà salvato in questa funzione, in modo che tu possa ripeterlo per creare l’intero fiocco.

Cancella il codice che hai usato per disegnare il parallelogramma e scrivi:

    for i in range(3):
        for i in range(3):
              elsa.forward(30)
              elsa.backward(30)
              elsa.right(45)
        elsa.left(90)
        elsa.backward(30)
        elsa.left(45)
    elsa.right(90)
    elsa.forward(90)

Nota: Ricordati che il rientro è importante. Assicurati che sia corretto, altrimenti il tuo programma non funzionerà!

L’ultimo blocco di codice richiamerà questa funzione e la ripeterà 8 Volte. Puoi usare un loop come hai fatto in precedenza:

for i in range(8):
    branch()
    elsa.left(45)

Usa # all’inizio della riga di comando elsa.color(random.choice(colours)) per farla diventare un commento. Il tuo computer salterà questa riga di codice. Ovviamente avresti potuto cancellare questa riga, ma è possibile che la voglia usare in seguito per colorare tuo fiocco di neve.

Salva e lancia il programma. Un fiocco di neve dovrebbe apparire di fronte ai tuoi occhi!

E adesso?

Questo progetto d’esempio creato con Python Turtle è completo. Ma puoi sempre modificarlo e migliorarlo…

  • Riesci a riattivare la riga di comando che hai reso commento e a inserirla nella funzione in modo che ogni ramo del fiocco di neve abbia un colore diverso?
  • Riesci a creare una funzione fiocco di neve e di ripeterla in tutta la finestra?

This learning resource is provided for free by the Raspberry Pi Foundation under a Creative Commons licence.
Find more at raspberrypi.org/resources and github.com/raspberrypilearning.