1000 'Santa Claus Kidz
1001 'By Alastair Scott 1002 ' 1010 POKE 300,0:POKE 301,0 1020 DEFINT a-z 1030 GOSUB 2060 1040 GOSUB 1660 1050 GOSUB 1770 1060 GOSUB 1840 1070 EVERY 50 GOSUB 1840 1080 EVERY 500,1 GOSUB 1660 1090 EVERY del,2 GOSUB 1770 1100 AFTER 6000,3 GOSUB 1910 1110 RANDOMIZE TIME 1120 high=PEEK(300)+256*PEEK(301) 1130 total=FNnum(RND*25*lev,25*lev) 1140 x=11:y=12:dir=1:ti=120:score=1 1150 PEN 2:PRINT CHR$(30)"SIGN TOTAL TARGET":PEN 1 1160 LOCATE 16,2:PRINT FNsc$(total,4) 1170 LOCATE 9,2:PRINT FNsc$(score,4) 1180 WHILE score<>total 1190 DI 1200 INK 11,FNhue:INK 12,FNhue 1210 INK 13,FNhue:INK 14,FNhue 1220 PEN 3:LOCATE x,y:PRINT CHR$(239+dir) 1230 IF INKEY(0)=0 OR INKEY(72)=0 THEN dir=1:dx=0:dy=-1 1240 IF INKEY(8)=0 OR INKEY(74)=0 THEN dir=2:dx=-1:dy=0 1250 IF INKEY(2)=0 OR INKEY(73)=0 THEN dir=3:dx=0:dy=1 1260 IF INKEY(1)=0 OR INKEY(75)=0 THEN dir=4:dx=1:dy=0 1270 IF dx=0 AND dy=0 OR MID$(maze$(y+dy),x+dx,1)="%"THEN 1310 1280 LOCATE x,y:PRINT" " 1290 x=x+dx:y=y+dy 1300 LOCATE x,y:PRINT CHR$(239+dir) 1310 EI 1320 FOR a=1 TO 8 1330 IF c(a)=0 OR x<>x(a)OR y<>y(a)THEN 1420 1340 target=c(a) 1350 SOUND 130,100,40,15,,2 1360 IF op$="-"THEN score=score-target 1370 IF op$="+"THEN score=score+target 1380 IF op$="/"THEN score=score/target 1390 IF op$="*"THEN score=score*target 1400 score=ROUND(MIN(MAX(score,0),999)):c(a)=0 1410 PEN 1:LOCATE 9,2:PRINT FNsc$(score,4) 1420 NEXT 1430 WEND 1440 CALL &BCA7 1450 FOR a=0 TO 3:re=REMAIN(a):NEXT 1460 RESTORE 2670 1470 FOR a=1 TO 14 1480 READ dur,note 1490 SOUND 1,note,dur*16,12 1500 SOUND 2,note+1,dur*16,12 1510 SOUND 1,0,2,0:SOUND 2,0,2,0 1520 NEXT 1530 WHILE SQ(1)XOR 4:WEND 1540 WINDOW SWAP 1 1550 WINDOW 1,20,6,18:PEN 1:PAPER 9:CLS 1560 bonus1=score*lev:bonus2=2*ti*lev:tscore=tscore+bonus1+bonus2 1570 LOCATE 2,2:a$="LEVEL BONUS "+FNsc$(bonus1,5):CALL &8000,àa$ 1580 LOCATE 2,5:a$="TIME BONUS "+FNsc$(bonus2,5):CALL &8000,àa$ 1590 LOCATE 2,8:a$="TOTAL SCORE "+FNsc$(tscore,5):CALL &8000,àa$ 1600 PEN 10:LOCATE 4,11:a$="PRESS ANY KEY!":CALL &8000,àa$ 1610 WINDOW SWAP 1 1620 WHILE INKEY$<>"":WEND:CALL &BB18 1630 lev=lev+1 1640 GOSUB 2420 1650 GOTO 1040 1660 DI:SOUND 132,0,0,0,4,,FNnum(31,1) 1670 FOR a=1 TO 8 1680 xp=x(a):yp=y(a) 1690 IF RND>0.75 THEN 1750 1700 c(a)=INT(RND*9)+1 1710 LOCATE xp,yp:PEN FNnum(5,5):PRINT CHR$(244) 1720 CALL &BB9F,1 1730 LOCATE xp,yp:PEN FNnum(4,11):PRINT CHR$(244+c(a)) 1740 CALL &BB9F 1750 NEXT 1760 EI:RETURN 1770 DI:SOUND 130,4*ti,0,0,3 1780 IF NOT flag THEN op=FNnum(10,1)ELSE op=1:flag=0 1790 op$=MID$(oper$,op,1) 1800 et=INSTR("+-*/",op$)+3 1810 SOUND 130,200,0,0,3,et 1820 PEN 1:LOCATE 2,2:PRINT op$ 1830 EI:RETURN 1840 DI:ti=ti-1 1850 ORIGIN 0,0,600-5*(120-ti),640,6,6:CLG 0 1860 ORIGIN 0,0,0,5*ti,6,6:CLG 3 1870 CALL &BBBA:MOVE 5*ti-4,16 1880 TAG:PRINT CHR$(254)CHR$(255);:TAGOFF 1890 SOUND 129,4*ti,32767,3,,1 1900 EI:RETURN 1910 SOUND 135,0,0,15,2,,20 1920 FOR a=0 TO 3:re=REMAIN(a):NEXT 1930 WHILE SQ(1)XOR 4 1940 col=FNhue:CALL &BD19:BORDER col:INK 0,col 1950 WEND 1960 MODE 0:INK 0,0:INK 1,24:INK 2,18:INK 3,14:INK 4,6:BORDER 0 1970 PEN 1:LOCATE 3,6:a$="FINAL SCORE "+FNsc$(tscore,5):CALL &8000,àa$ 1980 PEN 2:IF tscore>high THEN high=tscore:LOCATE 3,9:a$="A NEW HIGH SCORE!":CALL &8000,àa$:POKE 300,high MOD 256:POKE 301,high‡ 256 1990 PEN 3:LOCATE 3,12:a$="HIGH SCORE "+FNsc$(high,5):CALL &8000,àa$ 2000 PEN 4:LOCATE 2,16:a$="Another game? (Y/N)":CALL &8000,àa$ 2010 WHILE INSTR("*YN",k$)<2 2020 k$=UPPER$(INKEY$):CALL &BD19:INK 2,FNhue 2030 WEND 2040 IF k$="N"THEN END 2050 RUN 1020 2060 SYMBOL AFTER 256:MEMORY &7FFF:SYMBOL AFTER 32 2070 ENT-1,3,3,3,3,-3,3:ENT-2,10,-2,1 2080 ENT-3,4,-20,1,4,10,1 2090 ENT-4,1,3,3,1,-6,3 2100 ENT-5,1,-3,3,1,6,3 2110 ENT-6,10,-4,1:ENT-7,10,4,1 2120 ENV 1,15,-1,1:ENV 2,15,-1,15 2130 ENV 3,10,-1,5:ENV 4,1,1,14,15,-1,1 2140 SYMBOL 240,24,60,24,60,126,126,36,102 2150 SYMBOL 241,12,30,12,62,127,62,18,102 2160 SYMBOL 242,24,36,24,60,126,126,36,102 2170 SYMBOL 243,48,120,48,124,254,124,72,102 2180 SYMBOL 244,1,14,62,127,255,255,126,56 2190 SYMBOL 245,0,0,24,8,8,8,28 2200 SYMBOL 246,0,0,28,4,28,16,28 2210 SYMBOL 247,0,0,28,4,28,4,28 2220 SYMBOL 248,0,0,20,20,28,4,4 2230 SYMBOL 249,0,0,28,16,28,4,28 2240 SYMBOL 250,0,0,28,16,28,20,28 2250 SYMBOL 251,0,0,28,4,4,4,4 2260 SYMBOL 252,0,0,28,20,28,20,28 2270 SYMBOL 253,0,0,28,20,28,4,28 2280 SYMBOL 254,0,0,0,0,16,95,72,63 2290 SYMBOL 255,0,12,28,60,124,252,16,252 2300 SYMBOL 37,238,0,221,0,187,0,119 2310 DEF FNsc$(a,b)=STRING$(b+1-LEN(STR$(a)),48)+MID$(STR$(a),2) 2320 DEF FNnum(a,b)=INT(RND*a)+b 2330 DEF FNhue=INT(RND*26)+1 2340 DIM maze$(25):oper$="++++---**/" 2350 tscore=0:lev=1 2360 RESTORE 2690 2370 FOR addr=&8000 TO &8045 2380 READ byte$:bt=VAL("&"+byte$) 2390 POKE addr,bt:ch=ch+bt 2400 NEXT 2410 IF ch<>7727 THEN PRINT"ERROR in lines 2690-2750":END 2420 MODE 0:BORDER 0:LOCATE 7,10:PEN FNnum(5,5) 2430 ti=120:flag=-1:del=200-15*lev 2440 RESTORE 2630 2450 FOR a=0 TO 12 2460 READ hue1,hue2:INK a,hue1,hue2 2470 NEXT 2480 a$="LEVEL"+STR$(lev):CALL &8000,àa$ 2490 FOR a=1 TO 5000:NEXT 2500 CLS:PEN 4:LOCATE 1,3 2510 RESTORE 2650 2520 FOR a=1 TO 8 2530 READ x(a),y(a) 2540 NEXT 2550 RESTORE 2760 2560 FOR a=1 TO 22 2570 READ col$ 2580 maze$(a+2)=col$ 2590 PRINT col$; 2600 NEXT 2610 INK 4,15 2620 RETURN 2630 DATA 0,0,26,26,19,19,6,6,0,0,7,7 2640 DATA 24,24,18,18,10,10,2,2,26,9,0,0,0,0 2650 DATA 2,4,17,6,4,21,15,19 2660 DATA 10,12,13,17,19,23,6,8 2670 DATA 2,213,2,127,1,127,1,119,1,127,1,142,2,159 2680 DATA 2,190,1,213,1,213,2,190,2,142,2,169,4,159 2690 DATA eb,46,23,5e,23,56,eb,7e,c5,e5 2700 DATA cd,12,80,e1,c1,23,10,f5,cd,a5 2710 DATA bb,06,08,11,44,80,7e,12,13,12 2720 DATA 13,23,10,f8,3e,ee,21,44,80,cd 2730 DATA a8,bb,3e,ef,21,4c,80,cd,a8,bb 2740 DATA 06,05,21,3f,80,7e,cd,5a,bb,23 2750 DATA 10,f9,c9,ee,0a,08,ef,0b,00,00 2760 DATA %%%%%%%%%%%%%%%%%%%% 2770 DATA % % 2780 DATA % %%%%%%% %%%%%%% % 2790 DATA % % % % 2800 DATA % % %%%%%%%%%%%% % % 2810 DATA % % % % % % 2820 DATA % % % %%% %%% % % % 2830 DATA % % % % % % % % 2840 DATA % % % % %%%% % % % % 2850 DATA % % % % % % % % % % 2860 DATA % % % % % % 2870 DATA % % % % % % 2880 DATA % % % % % % % % % % 2890 DATA % % % % %%%% % % % % 2900 DATA % % % % % % % % 2910 DATA % % % %%% %%% % % % 2920 DATA % % % % % % 2930 DATA % % %%%%%%%%%%%% % % 2940 DATA % % % % 2950 DATA % %%%%%%% %%%%%%% % 2960 DATA % % 2970 DATA %%%%%%%%%%%%%%%%%%%% |