10 REMark Copyright 1984 OctOsOft          Antony Trenker.(Author)
20 PAPER 0:CLS:CLS#0
30 CSIZE 3,1:OVER 1
40 FOR n=1 TO 6 STEP 2:INK n:CURSOR 120+n,90+n:PRINT "CUBE CRAWLER"
50 FOR n=50 TO 1 STEP -4:BEEP 5000,n:BORDER n,n*5
60 PAUSE 150
70 CLS
80 CSIZE 0,0:OVER 0
90 initialise
100 fall_cube
110 i$=INKEY$:IF i$='' THEN IF a%(xx%,yy%+1)>1 THEN a%(xx%,yy%+1)=a%(xx%,yy%+1)+RND(5)+1:IF a%(xx%,yy%+1)>95 THEN a%(xx%,yy%+1)=0:GO SUB 700:GO TO 250

120 fall_cube
130 IF i$='' THEN GO TO 250
140 OVER 1:POINT RND(150)+20,RND(100):OVER 0
150 fall_cube
160 IF i$='z' THEN crawl_left:GO TO 100
170 IF i$='x' THEN crawl_right:GO TO 100
180 IF i$='a' THEN go_left:GO TO 100
190 IF i$='s' THEN go_right:GO TO 100
200 IF i$='q' THEN jump_left:GO TO 100
210 IF i$='w' THEN jump_right:GO TO 100
220 fall_cube
230 IF i$='1' THEN big_jump=1:jump_left:big_jump=0:jump_left:GO TO 100
240 IF i$='2' THEN big_jump=1:jump_right:big_jump=0:jump_right
250 IF CODE(i$)=192 THEN a%(xx%-1,yy%)=0:AT yy%,xx%-1:INK 2:PRINT":":INK 7:BEEP 10000,0,100,4,4:energy=energy-100
260 IF CODE(i$)=200 THEN a%(xx%+1,yy%)=0:AT yy%,xx%+1:INK 2:PRINT":":INK 7:BEEP 10000,0,100,4,4:energy=energy-100
270 energy=energy-1:IF energy<0 THEN you_die
280 fall_cube
290 AT#0,0,0:PRINT#0,'ENERGY ';:INK#0,3:PRINT#0,energy;' ':INK#0,7:PRINT#0,'TIME   ';:INK#0,5:PRINT#0,DATE$:INK#0,7:IF a%(xx%,yy%+1)>1 THEN PRINT#0,'HARD   ';:INK#0,2:PRINT#0,100-a%(xx%,yy%+1);' ':INK#0,7
300 GO TO 100

310 DEFine PROCedure crawl_left
320 IF a%(xx%-1,yy%+1) THEN BEEP 10,2:RETurn
330 AT yy%,xx%:PRINT' ':xx%=xx%-1:yy%=yy%+1:you
340 FOR n=5 TO 255 STEP 20:BEEP 100,n
350 END DEFine

360 DEFine PROCedure crawl_right
370 IF a%(xx%+1,yy%+1) THEN BEEP 10,2:RETurn
380 AT yy%,xx%:PRINT' ':xx%=xx%+1:yy%=yy%+1:you
390 FOR n=5 TO 255 STEP 20:BEEP 100,n
400 END DEFine
410 GO TO 100

420 DEFine PROCedure go_left
430 IF xx%=0 THEN BEEP 10,2:RETurn
440 IF a%(xx%-1,yy%) THEN BEEP 10,2:RETurn
450 AT yy%,xx%:PRINT' ':xx%=xx%-1:you
460 BEEP 100,25
470 GO TO 690

480 DEFine PROCedure go_right
490 IF xx%=35 THEN BEEP 10,2:RETurn
500 IF a%(xx%+1,yy%) THEN BEEP 10,2:RETurn
510 AT yy%,xx%:PRINT' ':xx%=xx%+1:you
520 BEEP 100,25
530 GO TO 690

540 DEFine PROCedure jump_left
550 IF xx%=0 THEN BEEP 10,2:RETurn
560 IF a%(xx%-1,yy%-1)=2 THEN BEEP 999,0:energy=energy+RND(100)+100:a%(xx%-1,yy%-1)=1:INK 5:at yy%-1,xx%-1:PRINT'I':OVER -1:AT yy%-1,xx%-1:PRINT'H':OVER 0:INK 7:GO TO 690
570 IF a%(xx%-1,yy%-1) THEN BEEP 10,2:GO TO 690
580 AT yy%,xx%:PRINT' ':xx%=xx%-1:yy%=yy%-1:you
590 BEEP 100,25
600 IF big_jump THEN RETurn
610 GO TO 690

620 DEFine PROCedure jump_right
630 IF xx%=35 THEN BEEP 10,2:RETurn
640 IF a%(xx%+1,yy%-1)=2 THEN BEEP 999,0:energy=energy+RND(100)+100:a%(xx%+1,yy%-1)=1:INK 5:AT yy%-1,xx%+1:PRINT'I':OVER -1:AT yy%-1,xx%+1:PRINT'H':OVER 0:INK 7:GO TO 690
650 IF a%(xx%+1,yy%-1) THEN BEEP 10,2:GO TO 690
660 AT yy%,xx%:PRINT' ':xx%=xx%+1:yy%=yy%-1:you
670 BEEP 100,25
680 IF big_jump THEN RETurn
690 IF a%(xx%,yy%+1) THEN RETurn
700 AT yy%,xx%:PRINT' ':yy%=yy%+1:you
710 BEEP 5000,10*yy%,100,2,2,0,0,0
720 GO TO 690

730 DEFine PROCedure fall_cube
740 IF y%=yy% THEN IF x%=xx% THEN you_die
750 IF y%+1=yy% THEN IF x%=xx% THEN energy=energy-RND(10)-10:BEEP 500,255:a%(x%,y%)=2:AT y%,x%:INK 5:PRINT'7':INK 7:x%=RND(0 TO 35):y%=5:RETurn
760 IF a%(x%,y%+1) THEN a%(x%,y%)=5:BEEP 1000,100,255,8,2,0,0,15:x%=RND(0 TO 35):y%=0:RETurn
770 AT y%,x%:PRINT' '
780 y%=y%+1
790 INK 34
800 AT y%,x%:PRINT CHR$(174)
810 INK 7
820 END DEFine

830 DEFine PROCedure you
840 AT yy%,xx%:PRINT '#'
850 OVER -1
860 AT yy%,xx%:PRINT 'A'
870 OVER 0
880 END DEFine

890 DEFine PROCedure initialise
900 big_jump=0
910 OVER -1
920 DIM a%(36,18)
930 energy=1000
940 SDATE 1984,1,1,0,0,0
950 CLS#0
960 xx%=RND(34):yy%=0
970 y%=18
980 FOR n=0 TO 35
990 x%=n:GO SUB 790
1000 a%(n,18)=1
1010 END FOR n
1020 BLOCK 430,4,2,189,3
1030 x%=10:y%=1
1040 you:go_left
1050 END DEFine

1060 DEFine PROCedure you_die
1070 FOR n=0 TO 100:BEEP 1000,n
1080 FLASH#0,1:INK #0,4
1090 PRINT#0,'CRUSHED AND DEFEATED BY CUBES YOU DIE'
1100 FLASH#0,0:INK #0,6
1110 PRINT #0,'Your score was ';(100-yy%)*energy
1120 FOR n=1 TO 1000:NEXT n
1130 RUN