Software libero a scuola/Minetest/Mod Lwscratch: differenze tra le versioni
Riga 129: | Riga 129: | ||
*Se il comando è seguito da un testo o da una variabile il test restituisce vero se trova il testo o il valore della variabile nella direzione indicata |
*Se il comando è seguito da un testo o da una variabile il test restituisce vero se trova il testo o il valore della variabile nella direzione indicata |
||
*Se dopo il comando non c'è nessuna indicazione il test restituirà vero se troverà un blocco di qualsiasi cosa nella direzione indicata |
*Se dopo il comando non c'è nessuna indicazione il test restituirà vero se troverà un blocco di qualsiasi cosa nella direzione indicata |
||
[[File:LwscratchContainsItem.png|sinistra|100px|LwscratchContainsItem |
|||
]] |
|||
Testo |
|||
[[File:LwscratchItemFits.png|sinistra|100px|LwscratchItemFits |
|||
]] |
|||
Testo |
|||
<gallery> |
|||
File:LwscratchAnd.png|LwscratchAnd:<br/> controlla il blocco sopra |
|||
File:LwscratchOr.png|LwscratchOr:<br/> controlla il blocco davanti sopra |
|||
File:LwscratchNot.png|LwscratchNot:<br/> controlla il blocco davanti |
|||
</gallery> |
|||
===Operatori=== |
===Operatori=== |
Versione delle 11:12, 13 nov 2021
Lwscratch è una mod che aggiunge a Minetest dei robot programmabili con un linguaggio a blocchi simile a Scratch.
Installare la mod
Lwscratch si installa decomprimento il file zip nella cartella delle mod del mondo e rinominando la cartella ottenuta in lwscratch, come per tutte le mod.[1]
Sul server didasharing.it è stata installata posizionando la cartella lwscratch in ~/.minetest/worlds/world/worldmods.
Inserire un robot
La prima volta che un robot viene posizionato nel mondo si apre un modulo che chiede al giocatore che lo ha posizionato se la macchina è pubblica o privata. Se è selezionato privato, il giocatore diventa il proprietario e gli altri giocatori (tranne quelli con privilegio protection_bypass) non possono accedervi.
Il pulsante di persistenza si può attivare e disattivare. Se la persistenza è attiva, il blocco in cui si trova il robot rimane funzionante anche quando è fuori portata. Questa persistenza viene mantenuta anche se il mondo viene riavviato. I robot mantengono il loro stato di persistenza quando vengono spostati.
Se avviato per fare un lavoro ripetitivo all'infinito un robot è difficile da fermare, lo si deve selezionare e velocissimamente spegnere dal suo pannello di programmazione clikkando sul tasto interruttore.
Programmare un robot
I robot vengono programmati graficamente, trascinando un comando dalla griglia dei comandi (in alto a destra) al foglio del programma (a sinistra).
I materiali possono essere trascinati dagli inventari. Questi sono solo marcatori, l'oggetto non viene utilizzato.
Per rimuovere un elemento dal foglio del programma, trascinalo in uno spazio vuoto nella tavolozza dei comandi.
Per cancellare l'intero programma fare clic sul pulsante Clear, in alto sopra il foglio di programmazione.
I comandi vengono eseguiti in ordine, da sinistra a destra per riga, quindi lungo le righe.
Nome del robot
Ad ogni robot può essere assegnato un nome, inserendo il nome nel campo Robot e facendo clic sul pulsante Set, in alto a sinistra, nell'immagine al robot è stato assegnato il nome Itch. Il nome verrà visualizzato quando il robot è puntato o come suggerimento se si trova in un inventario.
Comandi
Colore | Tipo di comando |
---|---|
Arancione | Situazioni |
Verde' | Valori |
Giallo | Condizioni |
Blu | Azioni |
Bianco | Azioni programmate |
Situazioni
Loop - Questo comando deve essere seguito da una condizione che restituisce vero o falso. Le righe di comandi successive con rientro maggiore dell'istruzione loop verranno eseguite ripetutamente finché la condizione non è falsa.
Ogni ciclo ha un contatore interno, che inizia da zero e aumenta di uno ogni iterazione.
testo
Movimento
-
LwscratchTurnRight: Robot gira a destra
-
LwscratchTurnLeft: Robot gira a sinistra
Condizioni
Contatori
Un contatore deve essere inserito in un ciclo, al di fuori di un cilo il valore del contatore è zero.
-
LwscratchCounterOdd:
restituisce vero se il contatore è dispari -
LwscratchCounterEven:
restituisce vero se il contatore è pari -
LwscratchCounterEqual:
restituisce vero se il contatore raggiunge un dato valore -
LwscratchCounterLess:
restituisce vero se il contatore è minore di un dato valore -
LwscratchCounterGreater:
restituisce vero se il contatore è maggiore di una dato valore
Variabili
Ad una variabile va sempre assegnato un nome utilizzando la tab di inserimento in alto nelle scheda di programmazione
-
LwscratchVariableOdd:
restituisce vero se la variabile è dispari -
LwscratchVariableEven:
restituisce vero se la variabile è pari -
LwscratchVariableEqual:
restituisce vero se la variabile è uguale ad un valore dato -
LwscratchVariableLess:
restituisce vero se la variabile è minore di un valore dato -
LwscratchVariableGreater:
restituisce vero se la variabile è maggiore di un valore dato
Test
Con questo comando di test il robot controlla gli otto blocchi che lo circondano. Che partendo da sopra sono:
-
LwscratchDetectUp.png:
controlla il blocco sopra -
LwscratchDetectForwardUp.png:
controlla il blocco davanti sopra -
LwscratchDetectForward.png:
controlla il blocco davanti -
LwscratchDetectForwardDown.png:
controlla il blocco davanti sotto -
LwscratchDetectdown.png:
controlla il blocco sotto -
LwscratchDetectBackDown.png:
controlla il blocco dietro sotto -
LwscratchDetectBack.png:
controlla il blocco dietro -
LwscratchDetectBackUp.png:
controlla il blocco dietro sopra
Il comando test può restituire vero o falso:
- Se un comando di test è seguito da un materiale il test restituisce vero se lo trova nella direzione indicata
- Se il comando è seguito da un testo o da una variabile il test restituisce vero se trova il testo o il valore della variabile nella direzione indicata
- Se dopo il comando non c'è nessuna indicazione il test restituirà vero se troverà un blocco di qualsiasi cosa nella direzione indicata
Testo
Testo
-
LwscratchAnd:
controlla il blocco sopra -
LwscratchOr:
controlla il blocco davanti sopra -
LwscratchNot:
controlla il blocco davanti
Operatori
condizioni
La delimitazione dei blocchi (for loop e if) avviene tramite indentazione. Quando una riga successiva è rientrata allo stesso livello o meno, questo segna la fine del blocco.