: VORBEREITUNG ( - )
0 \ Fuer laengsten Weg
#MOTOREN 0 \ Pro Motor:
DO I DORT @ I HIER @
2DUP <
DUP 2* 1+ I SCHRITT ! \ 1 oder -1, Richtung
IF SWAP THEN -
DUP I VERBRAUCH ! \ Abstand
MAX \ Groesster Abstand?
LOOP DUP TO #ETAPPEN
2/ #MOTOREN 0
DO DUP I TANK ! \ Tanks halb voll
LOOP DROP ;
\ Fuer die Bildschirmversion, ohne die Hardware
: >MOTOR ( neue-stellung motor# - ) 2DROP ;
\ Um die Motorstellungen auf den Bildschirm zu bringen
: .HIER ( - ) CR #MOTOREN 0
DO I HIER @ 4 .R LOOP SPACE ;
: ETAPPE ( - ) #MOTOREN 0
DO I TANK @ I VERBRAUCH @
2DUP < \ Kraftstoff zu knapp?
IF #ETAPPEN - \ Dann auftanken
I SCHRITT @ I HIER +! \ Neuer Motorstand
I HIER @ I >MOTOR \ P-L-O-P
THEN - I TANK !
LOOP ;
: BEWEGE ( - ) \ Das Ziel muss schon festgelegt sein.
VORBEREITUNG
#ETAPPEN 0
?DO .HIER ETAPPE
KEY? IF KEY DROP LEAVE THEN
WARTE MS
LOOP .HIER ;
: GEHE ( zielpositionen - ) ZIEL BEWEGE ;
\ Beispiel: 10 20 13 7 30 GEHE