Vai al contenuto

Software libero a scuola/Minetest/Mod Lwscratch

Wikibooks, manuali e libri di testo liberi.
Indice del libro

Lwscratch è una mod che aggiunge a Minetest dei robot programmabili con un linguaggio a blocchi simile a Scratch.

Installare la mod

[modifica | modifica sorgente]

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

[modifica | modifica sorgente]
lwscratch robot
lwscratch 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 LwscratchPersistenceButton 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

[modifica | modifica sorgente]

I robot vengono programmati graficamente, trascinando un comando dalla griglia dei comandi (in alto a destra) al foglio del programma (a sinistra).

LwscratchBlocks
LwscratchBlocks

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.

Videotutorial ed esempi

[modifica | modifica sorgente]

I videotutorial sono pubblicati in rete e llinkati nel testo e nei collegamenti esterni in fondo alla pagina.

Costruire un gradino

[modifica | modifica sorgente]
Minetest LWScartch
Minetest LWScartch

Nel videotutorial Minetest - LwScratch costruire un gradino si vede come sia possibile programmare un robot per costruire un gradino in metallo. Il codice usato è questo

Minetest LWScartch


Eliminare una torre monoblocco

[modifica | modifica sorgente]
LwScratch scheda programmazione
LwScratch scheda programmazione
Questo robot  esegue un ciclo di azioni ripetute LwscratchLoop
* LwscratchDetectdown.png controlla che sotto di se ci sia
* un blocco di ciotoli del deserto
* lo rompe LwscratchDigDown.png
* scende di un passo LwscratchMoveDown.png
...e di nuovo.
Trovata una torre altissima di blocchi di ciotoli del deserto Jonny la distrugge partendo dalla cima.


Scavare un tunnel 3x3

[modifica | modifica sorgente]
Lwscratch minetest robot coding
Lwscratch minetest robot coding

Questo programma permette al robot di scavare un tunnel largo 3 cubi e altro 3 cubi.
Il robot deve essere messo affacciato al cubo centrale del tunnel che si vuole scavare in modo che con i primi tre comandi LwscratchDigForward LwscratchDigForwardUp LwscratchDigForwarddown scavi una colonna di tre cubi davanti a se.
Il robot ripeterà per 50 volte LwscratchLoopLwscratchCounterLessLwscratchNumber
Il loop conta le volte che le operazioni vengono ripetute, il controllo si fermerà a 50 numero che è stato settato posizionando l'etichetta LwscratchNumber sulla casella in alto e assegnandogli il valore 50.

Lo scavo di 9 cubi, 3 x 3, comincia scavando i tre cubi davanti a se LwscratchDigForwardLwscratchDigForwardUpLwscratchDigForwarddown

poi si sposta a sinistra si gira verso lo scavo e scava (dig) altri tre cubi LwscratchTurnLeftLwscratchMoveForwardLwscratchTurnRightLwscratchDigForwardLwscratchDigForwardUpLwscratchDigForwarddown

si porta sulla destra e scava LwscratchTurnRightLwscratchMoveForwardLwscratchMoveForwardLwscratchTurnLeftLwscratchDigForwardLwscratchDigForwardUpLwscratchDigForwarddown

lo scavo è finito si gira sulla sinistra e si gira guardando lo scavo LwscratchTurnLeftLwscratchMoveForwardLwscratchTurnRight

fa un passo avanti rimettendosi nella posizione iniziale pronto a scavare un'altra parete di 9 cubi.


Scavare un tunnel 6x4 con pavimento

[modifica | modifica sorgente]

Un videotutorial lo trovate qui Minetest - LwScratch - Scavare tunnel 6x4 con pavimento.

LwScartchTunnelCobbelstone6x4
LwScartchTunnelCobbelstone6x4


Nome del robot

[modifica | modifica sorgente]

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.


Colore Tipo di comando
Arancione Situazioni
Verde' Valori
Giallo Condizioni
Blu Azioni
Bianco Azioni programmate
LwscratchLoop
LwscratchLoop

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.

LwscratchIf
LwscratchIf

testo


Un contatore deve essere inserito in un ciclo, al di fuori di un cilo il valore del contatore è zero.

Ad una variabile va sempre assegnato un nome utilizzando la tab di inserimento in alto nelle scheda di programmazione

Con questo comando di test il robot controlla gli otto blocchi che lo circondano. Che partendo da sopra sono:

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


LwscratchContainsItem
LwscratchContainsItem

Testo

LwscratchItemFits
LwscratchItemFits

Testo

LwscratchVariableAssign
LwscratchVariableAssign

Se seguito da un nome, assegna a questa variabile il nome del nodo nella direzione data.
Se seguito da un numero, testo o variabile, assegna a questa variabile il valore nel seguente numero, testo o variabile.
Se seguito da articolo di inventario, assegna il nome dell'articolo di inventario a questa variabile.
Deve essere impostato con un nome nello slot in alto.

LwscratchVariableAdd
LwscratchVariableAdd

Se seguito da un nome, aggiunge il nome del nodo nella direzione data alla fine del valore corrente di questa variabile.
Se seguito da un numero, testo o variabile. Se uno dei valori è testo, aggiunge il seguente valore alla fine del valore corrente di questa variabile. Altrimenti somma, come numeri, i due valori e assegna il risultato a questa variabile.
Deve essere impostato con un nome nello slot in alto.

LwscratchVariableMinus
LwscratchVariableMinus

Seguito da un numero o da una variabile. Sottrae il seguente valore dal valore di questa variabile e assegna il risultato a questa variabile.
Deve essere impostato con un nome nello slot in alto.

LwscratchVariableMultiply:
LwscratchVariableMultiply:

Seguito da un numero o da una variabile. Moltiplica il seguente valore con il valore di questa variabile e assegna il risultato a questa variabile.
Deve essere impostato con un nome nello slot in alto.

LwscratchVariableDivide:
LwscratchVariableDivide:

Seguito da un numero o da una variabile. Divide il valore di questa variabile per il valore seguente e assegna il risultato a questa variabile.
Deve essere impostato con un nome nello slot in alto.

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.

Collegamenti esterni

[modifica | modifica sorgente]
  1. Forum minetest lwscratch