Lezione 3

Benvenuti alla vostra lezione 3 di AOZ Studio™ – scritta da Neil John Ives.

Questa lezione sarà estesa più tardi con la lezione 6.

Nell’editor, clicca sul simbolo della carta in alto a sinistra per creare un nuovo progetto. Selezionare Others nel menu di sinistra e scegliere Progetto personalizzabile., cancellate la voce “La mia applicazione” e date al nuovo progetto il nome Lezione 3.

				
					#splashScreen:false
				
			

Questo comando serve a nascondere il logo AOZ quando si avvia il programma. Cambia “false” in “true” se vuoi mostrare il logo.

Non funziona nella versione gratuita di AOZ Studio.

Questa lezione spiegherà nuove funzioni e concetti:

Print, Locate, Paper, Pen, Centre,
Global, Input, Do Loop,
Procedure, Variabili intere e stringhe,
If Then, If End if,
Upper$, Cls, Ink, Bar,
Wait n, Wait Key,

Conosceremo tutto costruendo un gioco.
Lo scopo del gioco è quello di attraversare un fiume in una barca molto piccola con un pollo, una volpe e del mais senza che nessuno venga mangiato!

Nota: nelle prossime lezioni vedremo come migliorare questo gioco di puzzle. Includeremo testi grafici, immagini ed esempi sonori.

Allora cominciamo!

Print, Locate e Pen ————————–

Conoscete già questi comandi se avete fatto la Lezione 1.
Locate è usato per posizionare il comando “Print”.
E.G.: Locate 1,12 Questo significa 1 blocco di testo a destra e 12 linee in basso, visto dall’angolo in alto a sinistra dello schermo. Pen imposta il colore del testo.

Carta imposta il colore di sfondo per il testo
Ad esempio, individuare 1,12: Carta 11: Penna 1: Stampa “Ciao”.
Mostrerebbe un testo bianco Hello su uno sfondo verde nella posizione selezionata 1, 12

Il centro indica al programma di stampare al centro dello schermo nella posizione impostata.
Ad esempio, posizione 0,10: centro “Hello World”.

Variabili, (interi und stringhe)———————–

Conoscete già un po’ questi comandi se avete fatto la Lezione 1.
Le variabili sono utilizzate per memorizzare un valore che può variare, da cui il nome variabile. In questo programma alcune variabili sono utilizzate per memorizzare numeri che dicono al programma dove posizionare il testo sullo schermo.

Queste variabili immagazzinano numeri interi conosciuti come interi, quindi sono anche chiamate variabili intere.
Le seguenti variabili intere sono utilizzate in questo programma:
mx, salva la posizione orizzontale per il testo “Uomo(U)”.
fx, fa lo stesso per “Volpe(V)”.
hx, fa lo stesso per “Pollo (P)”.
sx, fa lo stesso per “Sacco di mais (S)”.

C’è una differenza tra una variabile che memorizza un testo e una che memorizza un numero.
Se una variabile deve memorizzare un testo, un simbolo di dollaro deve essere aggiunto alla fine del suo nome.
ad esempio, MioNome$ = “Francois”.

Nota: i numeri possono essere usati come testo o numeri reali, per esempio, un numero civico è di solito un testo. Non farai nessuna operazione matematica con un numero civico, come moltiplicare o aggiungere un numero civico.

Per essere più precisi, le lettere e le parole nei programmi per computer sono chiamate “stringhe”.

In questo programma, SceltaGiusta$ e SceltaSinistra$ sono variabili stringa, contengono la lettera inserita dall’utente per selezionare il pollo (P), la volpe (V), e così via.
Per esempio, SceltaGiusta$ = “H”

Impostazione del programma——————————–

Le posizioni iniziali delle parole da visualizzare sono impostate qui

				
					ux=3 // Posizione orizzontale dell'uomo
vx=3 // per la volpe
px=3 // per il pollo
sx=3 // per il sacco di mais
				
			

Procedure———————————–

Le procedure possono essere pensate come moduli o sezioni del programma, con ogni procedura che ha uno scopo specifico. Pensate alle procedure come a blocchi di costruzione.

Permettono il riutilizzo di sezioni di codice. Una procedura può essere creata e testata separatamente dal programma principale.

Questo è particolarmente utile nei programmi più grandi.

Le procedure possono essere eseguite chiamandole per nome da qualsiasi parte del programma.

I parametri possono essere inviati alle procedure per consentire calcoli interni o decisioni logiche.

In questo programma abbiamo creato cinque procedure: SCHERMO, SPOSTARSIADESTRA, SPOSTARSIASINISTRA, CONTROLLAREE, INFO.

Global————————–

Parliamo ora di un altro concetto complesso, le variabili globali. Se non lo capite, non preoccupatevi.
“Global” permette alle variabili collegate di essere viste in tutte le parti del programma, altrimenti sono locali alla procedura.
Imposteremo le nostre variabili di posizione globalmente in modo che possano essere utilizzate ovunque al di fuori delle procedure:

				
					Global ux,vx,px,sx
				
			

If then Else Comando———————————–

Una dichiarazione utile di “If” e “Then” e “Else” per prendere semplici decisioni logiche.
If (qualcosa è vero) Then (esegue un’azione) Else (esegue un’altra azione) es. If Highscore = 1000 then Print “Il giocatore ha vinto” else Print “Purtroppo perso”.
Nota: “Else” non è obbligatorio, come vedrete di seguito.

If End If Comando———————————–

Un If…Then esegue azioni multiple basate su una decisione logica:

Esempio:
If Punti = 1000
Cancellare lo schermo
Mostra lo schermo vincente
Riprodurre un suono
End (Finisci il gioco)
End if

Upper$ Comando———————————–

Converte una stringa nella stessa in tutte le lettere maiuscole.
Upper$(“francois”) sarebbe convertito in “FRANCOIS”. Per esempio, A$=Upper$(“francois”). Troviamo quindi “FRANCOIS” nella stringa A$.

Cls Comando———————————–

Cancellare lo schermo. Per impostazione predefinita, lo schermo viene cancellato nel colore corrente della carta. Quando si aggiunge un numero, lo schermo viene cancellato con uno dei colori della tavolozza corrente.

CLS 0: Cancella lo schermo con il colore nero
CLS 1: Cancella lo schermo con il colore bianco

Bar Comando———————————–

Una barra è un rettangolo pieno che AOZ disegna per voi.
Ad esempio, barra da 1,1 a 100,100,
Questo disegnerà un rettangolo con l’angolo superiore sinistro a 1 pixel da //il bordo sinistro dello schermo e uno in basso dall’alto
e l’angolo inferiore destro a 100 in orizzontale e 100 in verticale. Il colore di riempimento del rettangolo viene impostato dal comando “Ink”.

Wait n Comando———————————–

Come nella lezione 2, la funzione Aspetta seguita da un numero mette in pausa il programma per un certo tempo. Il tempo è espresso in secondi e può essere un numero a virgola mobile.

Wait 10, mette in pausa il programma per 10 secondi
Wait 0.5, mette in pausa il programma per mezzo secondo
Wait 0.02, mette in pausa il programma per 1/50 di secondo
Questo può essere utile per creare un effetto drammatico, ad esempio se la gallina prende il mais, allora la volpe prende il pollo!

Wait Key Comando———————————–

Arresta il programma finché l’utente non preme un tasto qualsiasi.
In questo programma è utilizzato in modo che l’utente possa leggere il messaggio e riavviare il gioco

Do Loop Comando———————————–

Il comando Do e Loop crea un ciclo, una sequenza ripetuta come il ciclo del programma principale qui sotto.

Ecco alcune spiegazioni di ciò che troverete nel ciclo:

L’input ferma il programma per fare una domanda, la risposta è memorizzata in una variabile, lo sapete già.
Per esempio:
Input “Cosa dovrebbe portare dall’altra parte del fiume U,V,P,S ?”;SelezioneDestra$
Se l’uomo è a sinistra del fiume, (mx=3) la variabile stringa SelezioneDestra$ viene usata per passare la stringa alla procedura SPOSTARSIADESTRA.
Se l’uomo è in piedi a destra del fiume, (mx=60) la variabile stringa SelezioneSinistra$ viene usata per passare la stringa alla procedura SPOSTARSIASINISTRA.
Quando tutti nel gruppo sono sopra il fiume (posizione 60), il puzzle è risolto e il giocatore vede un messaggio di “congratulazioni”.

Bene, molto è stato spiegato finora. Programmiamo il gioco e cominciamo con la nostra procedura SCREEN. Per crearlo scriviamo semplicemente: “Procedura SCRERMO” e aggiungiamo dei comandi e lo terminiamo aggiungendo “End Proc” alla fine.
Per utilizzare la procedura SCHERMO dobbiamo solo inserire il nome nel programma e i comandi della procedura saranno elaborati dal programma. È più facile con un esempio…

Iniziare dal programma principale:


				
					SCHERMO // Questo attiverà la procedura SCHERMO che sarà programmata in seguito. 
Do
If ux=3 // Quando l'uomo è sul lato sinistro del fiume
locate 1,11 // Imposta la posizione del testo sul lato sinistro
Input "Cosa dovrebbe portare con sè dall'altra parte U,V,P,S?";SelezioneDestra$
// Usiamo l'input per porre la domanda e memorizziamo la risposta in SelezioneDestra$.
SPOSTARSIADESTRA[SelezioneDestra$] // Invia la risposta alla procedura SPOSTARSIADESTRA
End if
If ux = 60 and vx = 60 and px = 60 and sx = 60  //  Tutti riguardano il flusso Nota: >e< significa che aggiungiamo una condizione alla selezione If
INFO[4] // Info 4 è il messaggio "Congratulazioni 
Wait 1  // Aspetta un secondo 
End  // Ferma il programma
End If
If ux=60 // L'uomo è sul lato destro del fiume
Locate 55,11 // Imposta la posizione del testo sul lato destro  
Input "Cosa dovrebbe portare con sé?";SelezioneSinistra$ 
SPOSTARSIASINISTRA[SelezioneSinistra$]
End If
loop
				
			

Ora arrivano le procedure. Come potete vedere, possono essere messi in qualsiasi punto del programma, non necessariamente all’inizio.

				
					Procedure SCHERMO
				
			

Questa procedura ridisegna l’intero schermo. Questo è necessario per cancellare il vecchio testo ed emettere il nuovo testo in una posizione diversa.

				
					CLS 11 // Schermo chiaro con verde, (erba)
Ink 20 // Imposta il colore per il flusso
Bar 1050,0 To 1100,1180   // Disegnare il flusso con la barra x,y a x2,y2
				
			

Impostare i colori

				
					Paper 11   //Sfondo verde per le parole
Pen 1      //Colore del testo bianco
Locate 1,0:Print "Un uomo deve imparare tre cose"
Locate 1,1:Print "portare un flusso."  
Locate 1,3: Print "Ha una piccola barca e può solo" 
Locate 1,4:Print "Porta te stesso e una cosa con te."
				
			

Emette le stringhe nelle posizioni orizzontali (ux, vx ecc.) definite all’inizio e nelle procedure SPOSTARSIADESTRA e SPOSTARSIASINISTRA.

				
					Locate ux,6:Print "Uomo (U)"  
Locate vx,7:Print "Volpe (V)" 
Locate px,8: Print "Pollo (P)"
Locate sx,9:Print "Sacco di mais (S)" 
CONTROLLARE // Vai alla procedura che controlla una selezione errata
End Proc
Procedure SPOSTARSIADESTRA[Ch$] // La procedura SPOSTARSIADESTRA usa la variable Ch$ come parametro
Ch$ = Upper$(Ch$) // Poiché non sappiamo se sono state inserite lettere minuscole o maiuscole, le cambieremo tutte in maiuscole. 
				
			

Quindi, una delle seguenti lettere: “U”, “V”, “P”, “S” o “u”, “v”, “p”, “s” viene passata alla procedura e memorizzata in Ch$.

Definire tutte le posizioni del testo sul lato destro del flusso

				
					If Ch$="U" then ux=60 // Solo uomo
If Ch$="V" then vx=60:ux=60 // L'uomo deve attraversare il fiume con la volpe, il pollo o il sacco di mais
If Ch$="P" then px=60:ux=60 // Dito
If Ch$="S" then sx=60:ux=60 // Dito 
SCHERMO  // Una procedura può anche essere chiamata da una procedura, qui per ridisegnare lo schermo.
End Proc
Procedure SPOSTARSIASINISTRA[Ch$]
 
				
			

Vedere le note in SPOSTARSIADESTRA

				
					Ch$ = Upper$(Ch$)
If Ch$="U" then ux=3
If Ch$="V" then vx=3:ux=3
If Ch$="P" then px=3:ux=3
If Ch$="S" then sx=3:ux=3
SCHERMO  
End Proc

Procedure CONTROLLAREE
				
			

Controllare una scelta sbagliata usando le posizioni del testo, (mx, fx ecc.) per decidere quale messaggio mostrare
La volpe, il pollo e il sacco di mais sono insieme ma l’uomo no
I segni ‘<>’ non significano uguale a (o diverso da)

				
					If vx = px and px = sx and vx <> ux Then INFO[1] // Notate i parametri che vengono passati tra parentesi quadre alla procedura INFO[1].volpe e pollo sono insieme, l'uomo non è con loro

				
			

La volpe e la gallina sono insieme, l’uomo non è con loro

				
					If vx=px and ux<>px Then INFO[2] //<> non significa uguale, quindi se vx=px e mx non è hx allora il pollo e il sacco di mais sono insieme, l'uomo non è con loro
If px=sx and ux<>px Then INFO[3]
End Proc

Procedure INFO[M]
				
			

Mostra il messaggio appropriato
Preparare il formato per l’output delle stringhe dei messaggi

				
					Cls 0 // Cancella lo schermo con il colore nero
Paper 0 // Testo di sfondo nero
Pen 4 // Testo rosso
Locate 0,9 // Messaggio del posto
Curs Off // Disattiva il cursore lampeggiante dello schermo
				
			

Notate come un parametro viene passato alla procedura, memorizzato nella variabile ‘U’. Si usa per selezionare e poi emettere uno dei tre messaggi

				
					If M = 1       
Centre "Il pollo ha mangiato il mais..." //Centrato sulla posizione come indicato sopra
Wait 1   // Metti in pausa per un secondo per un effetto drammatico!  
Locate 1,11 //  Scendi un po'.
Centre "...poi la volpe ha mangiato il pollo!"
End ifIf M = 2 Then Centre "La volpe ha mangiato il pollo!"
If M = 3 Then  Centre "Il pollo ha mangiato il mais!"
If M = 4 then  Centre "Congratulazioni, ce l'hai fatta! Premere F5 per riprodurre di nuovo"
Paper 0: Pen 1 // Tornare ai normali colori della carta e del testo
Locate 1,22: Centre "Premere un tasto"
Curs On // Il cursore lampeggiante è acceso
Wait key // Attendere un input
ux=3:vx=3:px=3:sx=3 // Azzerare le posizioni di partenza di SCREEN
SCHERMO
End proc
				
			

**Clicca sul pulsante “Run in Browser” o F1 per avviare il programma nel browser o su “Run in AOZ Viewer” (F2) per avviarlo nell’editor.

Ok, ora fai un respiro profondo. Avrete bisogno di un po’ di tempo per capire la logica del programma. Ma imparerete molto.
Non solo molti comandi e le basi della programmazione, ma anche la logica deve essere compresa. Certo, questo può richiedere un po’ di tempo, ma lasciate che vi dica che una volta che avrete capito e avrete abbastanza esperienza, sarete in grado di scrivere il programma dei vostri sogni.

Aggiornato il 23.07.2023
Testato con AOZ Studio™ Versione 1.0 Aggiornamento 44 il 23.07.2023

RayShell Computer Department
Panoramica sulla protezione dei dati

Questo sito web utilizza i cookie per potervi offrire la migliore esperienza d'uso possibile. Le informazioni contenute nei cookie vengono memorizzate nel browser dell'utente e svolgono funzioni quali il riconoscimento dell'utente quando torna sul nostro sito web e l'aiuto al nostro team per capire quali sezioni del sito web sono più interessanti e utili per l'utente.