Obiettivo
- Disegnare una spirale
- Si ferma appena trova un ostacolo.
Soluzione #1
- ROBO Exercise Set 1 > 4 Draw a spiral
1 |
--- |
Soluzione #2
Utilizza la ricorsione.
Suggerimento: scrivi una procedura che disegna un solo braccio della spirale e poi…
Il risultato del codice originale in: File > Open > spiral.irobo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# map: default.map paintBlack amount = 1 repeat { actual = forward(amount) if(actual < amount) { break } left amount = amount + 1 } |
Soluzione #3
Più semplice?
Per rispondere alla richiesta originale
- La direzione iniziale è Est
- I bracci hanno lunghezza 1, 2, …, n, n+1, … a coppie consecutive
- Prima di ogni passo deve controllare se ha campo libero
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# map: default.map right paintWhite n=1 repeat { repeat(2) { repeat(n) { if(frontIsObstacle) { end } forward(1) } right } n=n+1 } |