Bob I+1,ECARX(I)*16+EXX(I),ECARY(I)*16+EYY(I)+32,ED(I)
Next
If Bob Col(1)=-1 Then Boom : Locate 0,12 : Centre "You Hit an Enemey. Game Over" : Wait Vbl : End
MOVE:
If D=1 Then YY=YY-2 : If YY<=-16 Then YY=0 : CARY=CARY-1
If D=2 Then XX=XX+2 : If XX>=16 Then XX=0 : CARX=CARX+1
If D=3 Then YY=YY+2 : If YY>=16 Then YY=0 : CARY=CARY+1
If D=4 Then XX=XX-2 : If XX<=-16 Then XX=0 : CARX=CARX-1
For I=1 To NE
If ED(I)=7 Then EYY(I)=EYY(I)-2 : If EYY(I)<=-16 Then EYY(I)=0 : ECARY(I)=ECARY(I)-1
If ED(I)=8 Then EXX(I)=EXX(I)+2 : If EXX(I)>=16 Then EXX(I)=0 : ECARX(I)=ECARX(I)+1
If ED(I)=9 Then EYY(I)=EYY(I)+2 : If EYY(I)>=16 Then EYY(I)=0 : ECARY(I)=ECARY(I)+1
If ED(I)=10 Then EXX(I)=EXX(I)-2 : If EXX(I)<=-16 Then EXX(I)=0 : ECARX(I)=ECARX(I)-1
Next
SHIFT:
If D<>2 Then If Jleft(1) and ROAD(CARX-1,CARY)<>4 and XX=0 and YY=0 Then D=4 : Goto TEST
If D<>4 Then If Jright(1) and ROAD(CARX+1,CARY)<>4 and XX=0 and YY=0 Then D=2 : Goto TEST
If D<>3 Then If Jup(1) and ROAD(CARX,CARY-1)<>4 and XX=0 and YY=0 Then D=1 : Goto TEST
If D<>1 Then If Jdown(1) and ROAD(CARX,CARY+1)<>4 and XX=0 and YY=0 Then D=3 : Goto TEST
If ROAD(CARX,CARY)=1 Then Bell : Autoback 2 : FLAG=FLAG-1 : Ink 0 : Bob Off 1 : Bar CARX*16,CARY*16+32 To CARX*16+15,CARY*16+47 : ROAD(CARX,CARY)=0 : Autoback 0 : If FLAG=0 Then Gosub LEVEL_DONE
If ROAD(CARX,CARY)=3 Then Boom : Locate 0,12 : Centre "You Hit Mines. Game Over" : Wait Vbl : End
If ROAD(CARX,CARY)=2 Then Bell : Autoback 2 : FUEL=FUEL+500 : Ink 0 : Bob Off 1 : Bar CARX*16,CARY*16+32 To CARX*16+15,CARY*16+47 : ROAD(CARX,CARY)=0 : Autoback 0
TEST:
If D=1 and YY=0 and ROAD(CARX,CARY-1)=4 Then Gosub HIT_WALL
If D=2 and XX=0 and ROAD(CARX+1,CARY)=4 Then Gosub HIT_WALL
If D=3 and YY=0 and ROAD(CARX,CARY+1)=4 Then Gosub HIT_WALL
If D=4 and XX=0 and ROAD(CARX-1,CARY)=4 Then Gosub HIT_WALL
TEST2:
For K=1 To NE
If ED(K)=7 and EYY(K)=0 and ROAD(ECARX(K),ECARY(K)-1)=4 Then Gosub HIT_WALL2
If ED(K)=8 and EXX(K)=0 and ROAD(ECARX(K)+1,ECARY(K))=4 Then Gosub HIT_WALL2
If ED(K)=9 and EYY(K)=0 and ROAD(ECARX(K),ECARY(K)+1)=4 Then Gosub HIT_WALL2
If ED(K)=10 and EXX(K)=0 and ROAD(ECARX(K)-1,ECARY(K))=4 Then Gosub HIT_WALL2
Next K
Locate 0,1 : Print FLAG : Locate 10,1 : Print FUEL/10;" " : If FUEL=0 Then Boom : Locate 0,12 : Centre "Out of Fuel. Game Over"
Goto MAIN
HIT_WALL:
If D=1 and ROAD(CARX+1,CARY)<>4 Then D=2 : Goto TEST2
If D=1 and ROAD(CARX-1,CARY)<>4 Then D=4 : Goto TEST2
If D=2 and ROAD(CARX,CARY+1)<>4 Then D=3 : Goto TEST2
If D=2 and ROAD(CARX,CARY-1)<>4 Then D=1 : Goto TEST2
If D=3 and ROAD(CARX-1,CARY)<>4 Then D=4 : Goto TEST2
If D=3 and ROAD(CARX+1,CARY)<>4 Then D=2 : Goto TEST2
If D=4 and ROAD(CARX,CARY-1)<>4 Then D=1 : Goto TEST2
If D=4 and ROAD(CARX,CARY+1)<>4 Then D=3 : Goto TEST2
HIT_WALL2:
If Rnd(100)>50 Then Gosub HITWALL2A
Rem *** Turn Enemy Car clockwise
If ED(K)=7 and ROAD(ECARX(K)+1,ECARY(K))<>4 Then ED(K)=8 : Return
If ED(K)=7 and ROAD(ECARX(K)-1,ECARY(K))<>4 Then ED(K)=10 : Return
If ED(K)=8 and ROAD(ECARX(K),ECARY(K)+1)<>4 Then ED(K)=9 : Return
If ED(K)=8 and ROAD(ECARX(K),ECARY(K)-1)<>4 Then ED(K)=7 : Return
If ED(K)=9 and ROAD(ECARX(K)-1,ECARY(K))<>4 Then ED(K)=10 : Return
If ED(K)=9 and ROAD(ECARX(K)+1,ECARY(K))<>4 Then ED(K)=8 : Return
If ED(K)=10 and ROAD(ECARX(K),ECARY(K)-1)<>4 Then ED(K)=7 : Return
If ED(K)=10 and ROAD(ECARX(K),ECARY(K)+1)<>4 Then ED(K)=9 : Return
HITWALL2A:
Pop
Rem *** anticlockwise
If ED(K)=7 and ROAD(ECARX(K)-1,ECARY(K))<>4 Then ED(K)=10 : Return
If ED(K)=7 and ROAD(ECARX(K)+1,ECARY(K))<>4 Then ED(K)=8 : Return
If ED(K)=8 and ROAD(ECARX(K),ECARY(K)-1)<>4 Then ED(K)=7 : Return
If ED(K)=8 and ROAD(ECARX(K),ECARY(K)+1)<>4 Then ED(K)=9 : Return
If ED(K)=9 and ROAD(ECARX(K)+1,ECARY(K))<>4 Then ED(K)=8 : Return
If ED(K)=9 and ROAD(ECARX(K)-1,ECARY(K))<>4 Then ED(K)=10 : Return
If ED(K)=10 and ROAD(ECARX(K),ECARY(K)+1)<>4 Then ED(K)=9 : Return
If ED(K)=10 and ROAD(ECARX(K),ECARY(K)-1)<>4 Then ED(K)=7 : Return
End
LEVEL_DONE:
Cls 0
Locate 0,11 : Centre "Level Complete"
Locate 0,13 : Centre "Hit any key for Next..."
Screen Swap : Wait Vbl : Wait Key : Screen Swap
Goto BEGIN
MAP_EDITOR:
Paper 0
Cls 0
Bob 1,0,0,6
Bob 2,32,0,11
Bob 3,64,0,12
Ink 4 : Bar 96,0 To 111,15
Box 128,0 To 143,15
Ink 4
Draw 0,31 To 320,31
Limit Mouse 128,74 To 447,297
Change Mouse 2
X Mouse=128 : Y Mouse=74
OB=6 : POS=0 : M=1
L:
MX=X Mouse-128 : MY=Y Mouse-42
CL=Mouse Key
I$=Inkey$
If I$="1" Then OB=6 : POS=0 : M=1
If I$="2" Then OB=11 : POS=1 : M=1
If I$="3" Then OB=12 : POS=2 : M=1
If I$="4" Then OB=4 : POS=3 : M=1
If I$="5" Then OB=5 : POS=4 : M=1
If I$="6" Then OB=1 : POS=5 : M=1
If I$="7" Then OB=7 : POS=6 : M=1
If I$="8" Then OB=7 : POS=7 : M=1
If I$="9" Then OB=7 : POS=8 : M=1
If OB<5 and Asc(I$)=28 Then OB=2 : M=1
If OB<5 and Asc(I$)=29 Then OB=4 : M=1
If OB<5 and Asc(I$)=31 Then OB=3 : M=1
If OB<5 and Asc(I$)=30 Then OB=1 : M=1
If OB>6 and OB<11 and Asc(I$)=28 Then OB=8 : M=1
If OB>6 and OB<11 and Asc(I$)=29 Then OB=10 : M=1
If OB>6 and OB<11 and Asc(I$)=30 Then OB=7 : M=1
If OB>6 and OB<11 and Asc(I$)=31 Then OB=9 : M=1
If I$="s" Then Gosub STORE
If I$="l" Then Gosub COME
If I$="c" Then Gosub WIPE
If M=1 Then Pen 2 : Locate 0,2 : Print " 1 2 3 4 5 6 7 8 9"
If M=1 Then Pen 3 : Locate POS*4,2 : Print POS+1 : If OB<5 Then Bob 5,160,0,OB
If M=1 and OB>6 and OB<11 Then Bob 5+POS,POS*32,0,OB : M=0
If CL=1 Then Gosub PLACE
If CL=2 Then CLE=1 : Gosub PLACE
Goto L
PLACE:
X=(MX/16)*16
Y=(MY/16)*16
If POS<3 Then Gosub CLR : Paste Bob X,Y,OB : ROAD(X/16,Y/16-2)=POS+1
If POS=3 Then Ink 4 : Bar X,Y To X+15,Y+15 : ROAD(X/16,Y/16-2)=4
If POS=4 or CLE=1 Then Gosub CLR : ROAD(X/16,Y/16-2)=0 : CLE=0
If POS=5 Then Bob 10,X,Y,OB : CARSX=X/16 : CARSY=Y/16 : D=OB
If POS=6 Then Bob 14,X,Y,OB : ECARSX1=X/16 : ECARSY1=Y/16 : ED1=OB
If POS=7 Then Bob 15,X,Y,OB : ECARSX2=X/16 : ECARSY2=Y/16 : ED2=OB
If POS=8 Then Bob 16,X,Y,OB : ECARSX3=X/16 : ECARSY3=Y/16 : ED3=OB