Example scripts
Nei prossimi esempi di programmi vedrai come le istruzioni base e la programmazione delle strutture possono modificare il comportamento del robot e vedere degli interessanti risultati. Prova a capire il codice e come funziona. Ancora meglio se provassi a copiare il codice e incollarlo nel pannello dove si scrivono i codici. Per un miglior risultato visivo, assicurati che la mappa sia visualizzata .
Example 1 : Write your name
Il robot puo' disegnare linee, cosi' puoi creare un semplice programma di disegno. Usando DisegnaBiancoe FermaDipingere puoi comandare il robot per decidere quando disegnare a terra delle linee. Se attivi questa opzione,mentre il robot cammina lascera' dietro di se una linea colorata. In questo modo e' possibile scrivere caratteri come la lettera 'A'.
Nella mappa openArea.map hai abbastanza spazio per creare un opera d'arte. Prova ad usare il Controllo Manuale (Esegui > Controllo manuale) per far verniciare al robot.
Vedi inoltre: istruzioni base: Dipingi, Movimenti |
|
#Lettera 'A'
DipingiBianco
Avanti(2)
Destra
Indietro(1)
Destra
Avanti(2)
Indietro(1)
Sinistra
Avanti(1)
FermaDipingere
Example 2 : Trova la macchia
Nella mappa findSpot1.map che puoi trovare nella cartella automatica delle mappe, troverai proseguendo dritto a sinistra una macchia bianca. Supponiamo che non sappiamo dove si trovi la macchia. Come fara' il robot a trovarla iniziando da qualche parte lungo il muro? Puoi contare il numero di passi che fara' il robot muovendosi, ma ci sono metodi migliori.
Lasciate proseguire il robot in avanti e fategli controllare la sua sinistra. Se alla sua sinistra non c'e' la macchia bianca fatelo continuare ad avanzare al prossimo passo, se c'e' la macchia bianca fatelo andare sulla macchia. Ovviamente questo puo' essere ripetuto in ciclo.
Vedi inoltre: istruzioni basi:Movimenti, Osservazioni, Costrutti del programma: Ripeti, struttura-se, fine |
|
Ripeti{
Se(SinistraBianco){
# C'e' una macchia sulla sua sinistra
Sinistra
Avanti(1)
Fine
}
Altrimenti{
#Non c'e' una macchia
Avanti(1)
}
}
Un altro codice che mostra lo stesso risultato e' il seguente: puoi far andare il robot avanti fino a quando non ved piu' la parete (quindi ci dev'essere un angolo). Quindi il robot gira e si muove in avanti fino a finire sulla macchia
RipetiFinoAChe(SinistraBloccato){
Avanti(1)
}
Sinistra
Avanti(1)
Example 3 :Segui la linea
Nella mappa di default troverai una linea bianca verso Est. Questa linea e' una posta attraverso la mappa. Com puo' il robot seguire la linea tracciata?
La soluzione e' simile a quella dell'esempio precedente. In base a varie condizioni il robot determina cosa fare
Vedi inoltre: istruzioni base:Movimenti, Osservazione, programming structures: Ciclo, Procedure, strutture-se, Fine |
|
# Va all'inizio della linea bianca
Destra
Avanti(8)
# Decisioni che prende il robot passo dopo passo
Ripeti
{
Se(DavantiBianco){
Avanti(1)
}
Altrimenti Se(DestraBianco){
Destra
}
Altrimenti Se(SinistraBianco){
Sinistra
}
Altrimenti Se(DavantiBloccato){
Fine
}
}
Un altro approccio da utilizzare sarebbe la Procedura ricorsiva. Nel codice precedente la procedura e' cosi' definita:
.
# Vai dove inizia la linea
Destra
Avanti(8)
# Chiatama della procedura
follow
# Recorsione
Procedura follow{
Se(DavantiBianco){
Avanti(1)
follow
}
Altrimenti Se(DestraBianco){
Destra
follow
}
Altrimenti Se(SinistraBianco){
Sinistra
follow
}
Altrimenti Se(DavantiBloccato){
#Finisce la procedura
# (perche' non c'e' niente dopo il Return.
#Quando tutte le chiamate finiscono il programma termina
Return
}
}
Esempio 4 : Labirinto
Come fuggire da un generale labirrinto? Questa difficile domanda ha una soluzione. Seguendo il muro a destra o a sinistra troverete la via d'uscita.
Il codice qui proposto fa cercare il faro al robot nella mappa maze1.map.
Vedi inoltre: Istruzioni base:Movimenti, Osservazioni,
strutture di programmazione: Ciclo, struttura-se, Fine |
|
Ripeti{
Se(DestraBloccato){
Se(DavantiLibero){
Avanti(1)
}
Altrimenti{
Sinistra
}
}
Altrimenti{
Destra
Avanti(1)
}
Se(DavantiFaro){
Raccogli
Fine
}
}
|