1 'Treasure Hunt
2 'By Benedict Garrett 3 'Amstrad Action September 1988 10 ' Variables, inks, graphics. 20 MODE 0:sc=0:lev=1:scr=0 30 INK 0,11:BORDER 11 40 INK 1,24:INK 2,6:INK 3,0:INK 4,15,3 50 RANDOMIZE TIME:SYMBOL AFTER 250 60 SYMBOL 250,255,171,213,171,213,171,213,255 70 SYMBOL 251,8,8,8,28,28,62,62,127 80 SYMBOL 252,60,126,219,255,129,195,126,195 90 SYMBOL 253,0,0,60,126,219,255,126,195 100 ' Machine code ( Thanks RpM ). 110 FOR t=&BF00 TO &BF06 120 READ a$ 130 POKE t,VAL("&"+a$) 140 NEXT 150 DATA cd,60,bb,32,07,bf,c9 160 ' Game preparation 170 CLS 180 LOCATE 1,1:PEN 3:PRINT"TREASURE HUNT By Ben" 190 LOCATE 1,2:PRINT STRING$(20, "=") 200 LOCATE 5,12:PRINT"Q to Quit" 210 PEN 1 220 LOCATE 2,4:PRINT"** USE JOYSTICK **" 230 LOCATE 2,14:PRINT"L to change level." 240 LOCATE 1,24:PRINT"< Any key to start>" 250 PEN 2 260 LOCATE 3,6:PRINT CHR$(240);"....move up." 270 LOCATE 3,8:PRINT CHR$(242);"....move left." 280 LOCATE 3,10:PRINT CHR$(243);"....move right." 290 PEN 1:LOCATE 6,20:PRINT"Level :"lev 300 PEN 3:LOCATE 7,22:PRINT"Score"scr 310 x=2:y=2:a=0 320 CALL &BB03:CALL &BB18 330 IF INKEY(67)=0 THEN PEN 1:MODE 2:LIST 340 IF INKEY(36)=0 AND lev=1 THEN PEN 3:LOCATE 5,17:INPUT "Level:",lev:GOTO 350 ELSE 360 350 IF lev<1 OR lev>30 THEN lev=1:GOTO 170 360 CLS:PEN 1:FOR f=1 TO 20 370 LOCATE f,1:PRINT CHR$(250) 380 LOCATE f,24:PRINT CHR$(250) 390 NEXT 400 FOR f=1 TO 24 410 LOCATE 1,f:PRINT CHR$(250) 420 LOCATE 20,f:PRINT CHR$(250) 430 NEXT 440 FOR f=1 TO 90+(5*lev) 450 LOCATE INT(RND(1)*18+2),INT(RND(1)*22+3):PEN 1:PRINT CHR$(250):NEXT 460 FOR f=1 TO 5+5*lev:LOCATE INT(RND(1)*17+3),INT(RND(1)*21+2):PEN 3:PRINT CHR$(251):NEXT 470 PEN 4:FOR f=1 TO 10 480 LOCATE INT(RND(1)*17+3),INT(RND(1)*21+2):CALL &BF00:IF PEEK(&BF07)=227 THEN 480 ELSE PRINT CHR$ (227) 490 NEXT 500 ' Game start 510 IF a=0 THEN a$=CHR$(252) 520 IF a=-1 THEN a$=CHR$(253) 530 PEN 2:LOCATE x,y:PRINT a$ 540 LOCATE x,y+1:CALL &BF00 550 IF PEEK(&BF07)=227 THEN SOUND 1,300,10,7:sc=sc+1:scr=scr+lev 560 IF PEEK(&BF07)<>250 AND INKEY(72)<>0 THEN LOCATE x,y:PRINT" ":y=y+1:LOCATE x,y:SOUND 2,500+25*y,5,7:PRINT a$ 570 LOCATE x,y+1:CALL &BF00 580 ' Player dead ? 590 IF PEEK(&BF07)=251 THEN 930 600 IF INKEY(72)=0 OR INKEY(76)=0 THEN GOTO 690 610 IF INKEY(67)=0 THEN 930 620 IF INKEY(74)=0 THEN GOTO 780 630 IF INKEY(75)=0 THEN GOTO 860 640 ' Level complete ? 650 IF sc>=10 THEN LOCATE 3,12:PRINT"** WELL DONE **":FOR f=1 TO 300:NEXT f:CALL &BB03:CALL &BB18:lev=lev+1:LOCATE 1,24:FOR f=1 TO 30:PRINT"":NEXT:sc=0:GOTO 290 660 a=NOT a 670 GOTO 510 680 ' Move up 690 LOCATE x,y-1:CALL &BF00 700 IF PEEK(&BF07)=250 THEN GOTO 530 710 IF PEEK(&BF07)=227 THEN SOUND 1,300,10,7:sc=sc+1:scr=scr+lev 720 LOCATE x,y: PRINT" " 730 y=y-1 740 SOUND 2,500+25*y,5,7 750 LOCATE x,y:PRINT a$ 760 GOTO 530 770 ' Move left 780 LOCATE x-1,y:CALL &BF00 790 IF PEEK(&BF07)=250 THEN GOTO 530 800 IF PEEK(&BF07)=227 THEN SOUND 1,300,10,7:sc=sc+1:scr=scr+lev 810 LOCATE x,y:PRINT" " 820 x=x-1 830 LOCATE x,y:PRINT a$ 840 GOTO 530 850 ' Move right 860 LOCATE x+1,y:CALL &BF00 870 IF PEEK(&BF07)=250 THEN GOTO 530 880 IF PEEK(&BF07)=227 THEN SOUND 1,300,10,7:sc=sc+1:scr=scr+lev 890 LOCATE x,y:PRINT" " 900 x=x+1 910 LOCATE x,y:PRINT a$ 920 GOTO 530 930 PEN 3:LOCATE 3,12:PRINT"** GAME OVER **" 940 LOCATE 3,14:PRINT"You scored.."scr 950 FOR f=1 TO 300:NEXT f 960 CALL &BB03:CALL &BB18 970 LOCATE 1,24:FOR f=1 TO 30:PRINT"":NEXT 980 lev=1:sc=0:scr=0:GOTO 170 |