10HOME:? "PRESS ANY KEY"
20GET a$: a=ASC(a$)*-1: c=RND(a)
50 xs=INT(RND(1)*28)+2: ys=INT(RND(1)*18)+2
60 dr=INT(RND(1)*3)+4: xc=1: yc=1: r=0
70HOME:FOR i=2 TO 19:FOR j=2 TO 29
80HTAB j:VTAB i:? CHR$(45):NEXT j:NEXT i
90?:? TAB(2); "YOU ARE AT POSITION "; 
100VTAB 21:HTAB 24:? xc; ", "; yc; " "; 
110HTAB xc:VTAB yc:? "*"; 
120GET k$
130 k=ASC(k$)
150IF k$="D" OR k$="d" THEN 230
160IF k$="g" OR k$="G" THEN 280
170IF k<>163 AND k<>161 THEN 120
180VTAB yc:HTAB xc:? " "; : d=((k=161)-(k=163))
190 xf=((yc=20)-(yc=1)): yf=((xc=30)-(xc=1)):IF xf*yf=0 THEN 220
200 xc=xc-((yf=xf AND d=1)+(yf<>xf AND d=-1))*yf
210 yc=yc-((yf<>xf AND d=1)+(yf=xf AND d=-1))*yf:GOTO 400
220 xc=xc-xf*d: yc=yc+yf*d:GOTO 400
230IF r=dr THEN ? CHR$(7); :HOME:HTAB 16:VTAB 12:? "YOU LOSE ...":END
240 r=r+1:HTAB 2:VTAB 23:? "DISTANCE:"; 
250? SQR((xs-xc)^2+(ys-yc)^2)
260FOR de=1 TO 500:NEXT de
270HTAB 2:VTAB 23:? SPC(28); :GOTO 120
280IF r=0 THEN ? CHR$(7); :GOTO 120
290HOME:INPUT "ENTER COORDINATES: "; xi, yi
300IF xi<>xs OR yi<>ys THEN ? CHR$(7); :GOTO 70
310HOME:? CHR$(7); 
320? "YOU HAVE SAVED THE EARTH!"
390STOP
400IF yc<1 THEN  yc=1
410IF yc>20 THEN  yc=20
420IF xc<1 THEN  xc=1
430IF xc>30 THEN  xc=30
440GOTO 100
