At My Fingertips

Documentation

Tessere per il labirinto di Pac-Man

In questa attività implementerai diverse funzioni per creare diverse tessere che potrai successivamente utilizzare, unendole, per generare un labirinto di Pac-Man come quello che vedi nell'immagine sottostante:

pacman maze

Questa attività si concentra esclusivamente sulla creazione delle tessere e sulla composizione di un piccolo laborinto. Al termine potrai salvare nella tua toolbox tutte le funzioni che avrai creato: ti serviranno per l'attività PyTamaro iconLabirinto di Pac-Man, nella quale imparerai a creare un labirinto di maggiori dimensioni.

Le tessere

Anche se tessere diverse hanno disegni diversi, tutte sono formate a partire dalla stessa base: un quadrato con lo sfondo nero.

Per evitare di dover scrivere

rettangolo(lato, lato, nero)

per ciascuna tessera, implementiamo innanzitutto una funzione quadrato_nero che ritorna semplicemente un quadrato nero con un lato di una determinata lunghezza. In questo modo potrai semplicemente scrivere

quadrato_nero(lato)

per ottenere lo sfondo.

Puoi usare la funzione rettangolo, ma se hai una funzione quadrato nella tua toolbox è ancora meglio! Ricordati, in tal caso, di importarla.

Loading...

Le tessere diritte

Implementa la funzione tessera_diritta che genera una tessera diritta da usare per il bordo del labirinto.

La tessera dovrebbe essere orizzontale se il valore del parametro booleano orizzontale è True, altrimenti dovrebbe essere verticale.

La linea blu che passa sopra la tessere diritta dovrebbe essere centrale e il suo spessore dovrebbe corrispondere a 1/5 del lato della tessera.

Usa la funzione quadrato_nero che hai implementato in precedenza per creare lo sfondo.

horizontal straight tile

vertical straight tile

Loading...
Loading...

Le tessere ad angolo

Implementa la funzione tessera_angolo per generare una tessera ad angolo ruotata in base al parametro rotazione. Dato che il parametro rappresenta un angolo, i valori consentiti sono 0, 90, 180 or 270:

  • tessera_angolo(100, 0) dovrebbe ritornare un angolo in alto a destra
  • tessera_angolo(100, 90) dovrebbe ritornare un angolo in alto a sinistra
  • tessera_angolo(100, 180) dovrebbe ritornare un angolo in basso a sinistra
  • tessera_angolo(100, 270) dovrebbe ritornare un angolo in basso a destra

Dato che non è consentito alcun altro valore, dovresti completare l'asserzione nella funzione in modo da controllare che i parametri in entrata siano validi.

Lo spessore della linea blu dovrebbe corrispondere a 1/5 del lato della tessera e dovrebbe potersi combinare alle tessere diritte. Questo significa che la linea blu dovrebbe passare attraverso il centro dei lati della tessera ad angolo, come una continuazione della tessera diritta.

corner tile rotation 0

corner tile rotation 90

corner tile rotation 180

corner tile rotation 270

Loading...

Le tessere del pavimento

Implementa la funzione tessera_pavimento per generare una tessera del pavimento che può essere vuota o essere contrassegnata da un punto o una pastiglia, a seconda del valore dei parametri booleani punto e pastiglia.

  • Se punto e pastiglia sono entrambi False, la tessera dovrebbe essere vuota.

    empty floot tile

  • Se punto è True, la tessera dovrebbe contenere un cerchio bianco avente il diametro pari a 1/5 del lato della tessera.

    dot floor tile

  • Se pastiglia è True, la tessera dovrebbe contenere un cerchio bianco avente il diametro uguale al lato della tessera.

    pill floor tile

  • punto e pastiglia non dovrebbero mai essere entrambi impostati su True. Puoi assicurarti che ciò non accada mediante un'asserzione (come nell'attività PyTamaro iconPac-Man).

Loading...

La tessera Pac-Man

Infine, implementa la funzione tessera_pacman che genera una tessera quadrata di un dato lato, sulla quale figura un Pac-Man con la bocca aperta in base al parametro angolo_bocca.

La funzione pacman

La funzione pacman dovrebbe generare un Pac-Man in base a un determinato raggio, la cui bocca sia aperta a un determinato angolo_bocca.

Se non lo hai ancora fatto, dovresti risolvere l'attività PyTamaro iconPac-Man e salvare la funzione pacman nella tua toolbox cliccando sull'icona

SaveToToolboxButtonSurrounded.png

sulla cella che contiene la definizione della funzione.

Dopo aver fatto questo lavoro, importa la funzione pacman dalla tua toolbox eseguando la prossima casella di codice.

Loading...

Ora implementa la funzione tessera_pacman usando la funzione pacman che hai appena importato. Questo è il risultato che dovresti ottenere:

Pac-Man tile

La posizione di Pac-Man dovrebbe essere fissa al centro dello sfondo. Usa le funzioni fissa, componi e centro_sinistra per ottenere il risultato desiderato.

Loading...

Un semplice labirinto

Genera alcune tessere utilizzando le funzioni che hai implementato e combinale usando le funzioni accanto e sopra per ottenere un labirinto semplice come il seguente:

simple maze

Implementa una funzione labirinto_semplice che prenda come parametro il lato di ciascuna tessera.

Non stipare tutto il codice in quest'unica funzione: quando necessario, introduci funzioni ausiliarie supplementari.

Il codice dovrebbe risultare leggibile e senza ripetizioni inutili.

Loading...

Avrai notato che combinare le tessere in questo modo risulta piuttosto complicato, anche per un labirinto piccolo come questo. Immagina se dovessi costruire un labirinto grande come quello che abbiamo mostrato all'inizio!

Dev'esserci un modo per semplificare questo lavoro... lo discutiamo nell'attività PyTamaro iconLabirinto di Pac-Man!

Cos'hai imparato

Hai costruito semplici tessere che possono essere usate per generare un labirinto di Pac-Man.

Ti sei esercitato nella definizione di funzioni e hai implementato diverse funzioni che ricevono valori booleani come parametri.

Hai usato istruzioni condizionali per gestire tutti i casi possibili e ritornare le grafiche che rappresentano semplici tessere.

Per le tessere ad angolo, ti sei esercitato nell'utilizzo delle funzioni fissa e componi; per la tessera Pac-Man hai dovuto importare la funzione pacman dalla tua toolbox.

Ti sei esercitato nell'uso delle asserzioni per accertare la validità dei valori dei parametri della funzione tessera_angolo.

L'introduzione della funzione ausiliaria quadrato_nero è una forma di scomposizione del problema, dato che in questo caso tutte le tessere avevano lo stesso sfondo.

Hai dovuto costruire un semplice labirinto e sei arrivato alla conclusione che costruire labirinti più grandi tessera per tessera è troppo laborioso.


This activity has been created by Lardelli and is licensed under CC BY-SA 4.0.

It is derived from this activity.

Tessere per il labirinto di Pac-Man

Logo of PyTamaro

PyTamaro is a project created by the Lugano Computing Education Research Lab at the Software Institute of USI

Privacy PolicyPlatform Version c08406b (Wed, 20 Nov 2024 12:30:00 GMT)