10 REM GRID WARRIOR
20 REM BY S.ANDERSON
30 REM START SCREEN
40 MODE 1
50 INK 1,20
60 INK 0,0
70 INK 2,2
80 INK 3,6,24
90 PAPER 0
100 BORDER 2
110 CLS
120 PEN 1
130 LOCATE 15,1:PRINT"GRID WARRIOR"
140 PEN 2
150 LOCATE 15,2:PRINT"------------"
160 PEN 3
170 LOCATE 8,10:PRINT"A=UP,Z=DOWN,O=LEFT,P=RIGHT"
180 LOCATE 15,12:PRINT"OR JOYSTICK"
190 PEN 2
200 LOCATE 7,18:PRINT"PRESS SPACE OR FIRE TO PLAY"
210 IF INKEY(47)=0 THEN 240
220 IF INKEY(76)=0 THEN 240
230 GOTO 210
240 h=0
250 REM RESTORE DATA AND SET UP U.D.C'S
260 RESTORE
270 SYMBOL AFTER 240
280 SYMBOL 240,192,192,254,245,245,254,192,192
290 SYMBOL 241,3,3,127,175,175,127,3,3
300 SYMBOL 242,24,36,60,36,60,60,255,255
310 SYMBOL 243,255,255,60,60,36,60,36,24
320 SYMBOL 244,255,129,129,129,129,129,129,255
330 SYMBOL 245,255,153,189,153,153,189,153,255
340 REM POKE MACHINE CODE IN PLACE
350 FOR f=30000 TO 30009
360 READ byte
370 POKE f,byte
380 NEXT
390 FOR f=32000 TO 32022
400 READ byte
410 POKE f,byte
420 NEXT
430 REM SET UP $ VARIABLES
440 a$=STRING$(40,CHR$(143))
450 b$=CHR$(143)+STRING$(38,CHR$(244))+CHR$(143)
460 s=0:l=3
470 PEN 1
480 CLS
490 PRINT a$;
500 FOR f=2 TO 20
510 PRINT b$;
520 NEXT
530 PRINT a$;
540 FOR f=1 TO 10
550 LOCATE INT(RND*37)+2,INT(RND*12)+2:PRINT CHR$(143)+CHR$(143)
560 LOCATE INT(RND*36)+2,INT(RND*3)+16:PRINT CHR$(143)+CHR$(143)
570 NEXT
580 PEN 3
590 IF XE=34 AND YE=10 THEN RESTORE 960
600 FOR f=1 TO 6
610 READ xe,ye
620 LOCATE xe,ye:PRINT CHR$(245);
630 NEXT
640 flag=0
650 x=20:y=15
660 count=0
670 la$=CHR$(242)
680 LOCATE 1,22:PEN 1:PRINT"SCORE=":LOCATE 13,22:PRINT"HIGH=":LOCATE 24,22:PRINT"WARRIORS="
690 REM MAIN LOOP
700 IF INKEY(27)=0 OR INKEY(75)=0 THEN la$=CHR$(240)
710 IF INKEY(34)=0 OR INKEY(74)=0 THEN la$=CHR$(241)
720 IF INKEY(69)=0 OR INKEY(72)=0 THEN la$=CHR$(242)
730 IF INKEY(71)=0 OR INKEY(73)=0 THEN la$=CHR$(243)
740 x2=x:y2=y
750 IF la$=CHR$(240) THEN  x=x+1
760 IF la$=CHR$(241) THEN  x=x-1
770 IF la$=CHR$(242) THEN  y=y-1
780 IF la$=CHR$(243) THEN  y=y+1
790 LOCATE x,y
800 CALL 30000
810 IF PEEK(31000)=143 THEN flag=1
813 PEN 2
814 CALL 30000:PEN 1
815 IF PEEK(31000)=143 THEN flag=3
820 IF PEEK(31000)=245 THEN count=count+1:SOUND 2,100,10,6:s=s+10:IF count=6 THEN flag=2
830 PEN 2:PRINT la$
840 LOCATE x2,y2:PRINT CHR$(143)
850 LOCATE 7,22:PEN 1:PRINT s
860 LOCATE 18,22:PRINT h
865 LOCATE 33,22:PRINT l
870 IF flag=1 THEN 990
875 IF flag=3 THEN 990
880 IF flag=2 THEN 1250
890 SOUND 1,(x*20),2,5
900 IF s>1000 AND zx=0 THEN l=l+1:zx=1:ENT 3,20,-5,5:SOUND 2,150,100,7,0,3
910 GOTO 700
920 REM MACHINE DATA
930 DATA &F5,&CD,&60,&BB,&21,&18,&79,&77,&F1,&C9
940 DATA &F5,&C5,&D5,&E5,&06,&01,&3E,&00,&CD,&4D,&BC,&06,&00,&3E,&00,&CD,&4D,&BC,&E1,&D1,&C1,&F1,&C9
950 REM CRYSTAL DATA
960 DATA 10,3,30,10,25,5,38,14,19,14,11,13
970 DATA 23,5,14,17,2,15,11,4,35,6,34,10
980 REM CRASH
990 INK 2,6,2
1000 LOCATE x,y:PEN 2:PRINT CHR$(238)
1010 ENT 1,200,10,2:SOUND 2,300,400,5,0,1
1020 l=l-1
1030 IF l=0 THEN 1140
1040 PEN 1
1050 FOR F=1 TO 50:CALL 32000:NEXT
1060 CLS
1070 IF L>1 THEN LOCATE 10,13:PRINT L;" WARRIORS LEFT"
1080 IF L=1 THEN LOCATE 10,13:PRINT L;" WARRIOR LEFT"
1090 LOCATE 1,1
1100 FOR F=1 TO 3000:NEXT
1110 INK 2,2
1120 GOTO 490
1130 REM DEATH ROUTINE
1140 CLS
1150 PEN 1
1160 LOCATE 5,10:PRINT"YOU FAILED TO ESCAPE"
1170 LOCATE 10,12:PRINT"YOU SCORED";s
1180 IF s>h THEN LOCATE 10,14:PRINT"NEW HIGHEST":h=s
1190 LOCATE 5,16:PRINT"PRESS SPACE TO PLAY AGAIN"
1200 WHILE INKEY(47)<>0
1210 WEND
1220 INK 2,2
1230 GOTO 260
1240 REM NEXT BOARD
1250 FOR f=500 TO 100 STEP -4:SOUND 3,f,2,5:NEXT
1260 s=s+100
1270 CLS
1280 IF s>2000 THEN 1330
1290 LOCATE 10,13:PEN 1:PRINT"TRANSPORTED TO NEXT BOARD"
1300 FOR F=1 TO 1000:NEXT
1310 GOTO 470
1320 REM ESCAPED
1330 PEN 1
1340 LOCATE 1,13:PRINT STRING$(40,CHR$(244));
1350 LOCATE 18,5:PRINT"     YOU'VE ESCAPED THE POWER GRID"
1360 LOCATE 37,11:PRINT"EXIT"
1370 PEN 2
1380 FOR F=1 TO 39
1390 LOCATE F,13:PRINT CHR$(143)+CHR$(240)
1400 SOUND 1,F*10,2,3:SOUND 2,F*20,2,3:SOUND 3,F*15,2,3
1410 FOR G=1 TO 100:NEXT
1420 NEXT
1430 FOR F=1 TO 2000:NEXT:CLS:PEN 1:GOTO 1170