10 REM *****************
20 REM * CRANE CRAWL * 30 REM * By R.Nixon * 40 REM * (c) Computing * 50 REM * with the * 60 REM * AMSTRAD * 70 REM ***************** 80 CALL &BC02:MODE 0:BORDER 0:SYMBOL AFTER 240 90 SYMBOL 240,73,21,132,82,9,164,82,36 100 SYMBOL 241,255,64,64,64,255,4,4,4 110 SYMBOL 242,7,12,12,12,7,3,1,1 120 SYMBOL 243,224,48,48,48,224,192,128,128 130 SYMBOL 244,0,0,0,1,3,7,7,7 140 SYMBOL 245,255,255,255,255,255,255,255,255 150 SYMBOL 246,0,0,0,128,192,224,224,224 160 DEFINT A-Z 170 A1$=CHR$(244)+CHR$(245)+CHR$(246):A2$=CHR$(242)+CHR$(32)+CHR$(243):SC=0:DIM S(13) 180 LV=1:M$=CHR$(248) 190 NM$="CRANE CRAWL":DIM A(20) 200 PAPER 0:CLS:GOSUB 620 210 FOR X=1 TO LEN(NM$):N$=MID$(NM$,X,1):FOR Y=1 TO X+3:LOCATE Y,2:PEN 10:PAPER 0:PRINT A1$:LOCATE Y,3:PRINT A2$;:LOCATE Y+1,4:PEN 5:PAPER 4:PRINT N$;:PEN 0:PAPER 0:LOCATE Y,2:PRINT" ";:LOCATE Y,3:PRINT" ";:LOCATE Y+1,4:PRINT" ";:NEXT 220 LOCATE Y,5:PEN 5:PAPER 4:PRINT N$;:PEN 0:PAPER 0:LOCATE Y,2:PRINT" ";:LOCATE Y+1,3:PRINT" ";:NEXT 230 PEN 3:LOCATE 6,7:PRINT"By R.Nixon" 240 PEN 13:LOCATE 2,9:PRINT"(c) Computing with" 250 LOCATE 5,10:PRINT"The Amstrad" 260 PEN 1:LOCATE 7,12:PRINT"CONTROLS" 270 PEN 7:LOCATE 3,14:PRINT"Z left X right" 280 PEN 15:LOCATE 5,22:PRINT"PRESS A KEY" 290 PEN 15:PAPER 0:LOCATE 4,3:PRINT"HI SCORE ";SC 300 WHILE INKEY$<>"":WEND:WHILE INKEY$="" AND JOY(0)=0:R=(RND*17)+2:FOR X=15 TO 21:PAPER 3:PEN 13:LOCATE R,X:PRINT CHR$(240);:FOR Z=1 TO 100:NEXT:PEN 0:PAPER 0:LOCATE R,X:PRINT" ";:NEXT:WEND 310 LF=0:NB=0:FOR LV=1 TO 16:IF LV=16 THEN LV=15 320 PAPER 3:CLS:PEN 1:LOCATE 7,12:PRINT"LEVEL";LV:PEN 2:LOCATE 9,14:PRINT STRING$(3-LF,248);:FOR XX=1 TO 5000:NEXT:PAPER 0:CLS:GOSUB 620:MX=10:MY=24:CR=0:DP=0:DP1=0:CT=0:PEN 2:PAPER 0:LOCATE MX,MY:PRINT M$;:ERASE A:DIM A(20) 330 WHILE MY>(21-LV) 340 IF CT=0 AND MX<11 THEN CR=1:CR1=1:CT=1 350 IF CT=0 AND MX>10 THEN CR=18:CR1=-1:CT=1 360 PEN 10:PAPER 0:LOCATE CR,2:PRINT A1$:LOCATE CR,3:PRINT A2$:IF DP=0 AND DP1=4 THEN PAPER 3:PEN 13:LOCATE CR+1,4:PRINT CHR$(240) 370 IF (INKEY(71)>-1 OR JOY(0)=4) AND ABS(A(MX-1)-A(MX))<2 AND MX>2 THEN PEN 2:PAPER 0:LOCATE MX,MY:PRINT " ";:MX=MX-1:MY=24-A(MX):LOCATE MX,MY:PRINT M$; 380 IF (INKEY(63)>-1 OR JOY(0)=8) AND ABS(A(MX+1)-A(MX))<2 AND MX<19 THEN PEN 2:PAPER 0:LOCATE MX,MY:PRINT " ";:MX=MX+1:MY=24-A(MX):LOCATE MX,MY:PRINT M$; 390 IF ABS(A(MX-1)-A(MX))>1 AND ABS(A(MX+1)-A(MX))>1 THEN R=1 ELSE R=RND*2 400 IF (CR+R=MX OR CR1=1 AND CR>MX OR CR1=-1 AND CR<MX) AND DP=0 THEN DP=1:FOR ZZ=100 TO 0 STEP -10:SOUND 1,ZZ,1:NEXT 410 IF DP1=0 THEN DP1=4 420 IF DP=1 THEN GOTO 490 430 SOUND 1,500,1 440 IF CR1=1 AND CR+1<=MX THEN LOCATE CR,2:PEN 0:PAPER 0:PRINT" ";:LOCATE CR,3:PRINT" ";:LOCATE CR+1,4:PRINT" ";:GOTO 470 450 IF CR1=-1 AND CR+1>=MX THEN LOCATE CR+2,2:PEN 0:PAPER 0:PRINT" ";:LOCATE CR+2,3:PRINT" ";:LOCATE CR+1,4:PRINT" ";:GOTO 470 460 GOTO 540 470 CR=CR+CR1:IF CR>18 THEN CR=18 480 GOTO 540 490 PEN 0:PAPER 0:LOCATE CR+1,DP1:PRINT" "; 500 DP1=DP1+1:LOCATE CR+1,DP1:PEN 13:PAPER 3:PRINT CHR$(240); 510 IF 24-DP1=A(CR+1) AND MX=CR+1 THEN GOTO 590 520 IF 24-DP1=A(CR+1) THEN DP=0:NB=NB+1:FOR ZZ=0 TO 100 STEP 10:SOUND 1,ZZ,1:NEXT:CT=0:A(CR+1)=A(CR+1)+1:DP1=0:LOCATE CR,2:PEN 0:PAPER 0:PRINT" ";:LOCATE CR,3:PRINT" "; 530 IF A(CR+1)>19 THEN A(CR+1)=19 540 WEND:PEN 10:PAPER 0:LOCATE CR,2:PRINT A1$:LOCATE CR,3:PRINT A2$:PEN 3:PAPER 12:IF MX<11 THEN FOR ZZ=2 TO MX-1:FOR XX=1 TO 150:NEXT:LOCATE ZZ,22-LV:PRINT CHR$(241);:NEXT 550 IF MX>10 THEN FOR ZZ=19 TO MX+1 STEP-1:FOR XX=1 TO 150:NEXT:LOCATE ZZ,22-LV:PRINT CHR$(241);:NEXT 560 IF MX<11 THEN FOR ZZ=MX TO 2 STEP -1:PAPER 0:PEN 0:LOCATE ZZ,21-LV:PRINT" ";:PEN 2:LOCATE ZZ-1,21-LV:PRINT CHR$(248);:FOR XX=1 TO 150:NEXT XX,ZZ 570 IF MX>10 THEN FOR ZZ=MX TO 19:PAPER 0:PEN 0:LOCATE ZZ,21-LV:PRINT" ";:PEN 2:LOCATE ZZ+1,21-LV:PRINT CHR$(248);:FOR XX=1 TO 150:NEXT XX,ZZ 580 FOR ZZ=30 TO 1 STEP -1:FOR XX=1 TO 5:SOUND 1,ZZ*7+XX*11,1:NEXT XX,ZZ:FOR ZZ=1 TO 5000:NEXT:NEXT 590 FOR ZZ=1 TO 40:FOR XX=1 TO 5:SOUND 1,ZZ*7+XX*11,1:NEXT:BORDER RND*26:NEXT:BORDER 0:LF=LF+1:IF LF=3 THEN PAPER 3:CLS:PEN 1:LOCATE 6,12:PRINT"GAME OVER";:PEN 0:SC1=LV*NB*10:LOCATE 3,14:PRINT"You scored ";SC1:IF SC1>SC THEN SC=SC1 600 IF LF=3 THEN FOR XX%=1 TO 7000:NEXT:ERASE A:GOTO 180 610 ERASE A:DIM A(20):GOTO 320 620 PEN 3:PAPER 12:PRINT STRING$(20,241) 630 FOR X=22-LV TO 24:LOCATE 1,X:PRINT CHR$(241);:LOCATE 20,X:PRINT CHR$(241):NEXT 640 LOCATE 1,25:PRINT STRING$(20,241); 650 RETURN |