10 REM 20 REM 30 COLOR 7,0:CLS 40 DIM RO$(10,10),M(15,15),XF(10),YF(10),XD(10),YD(10),KY(32),CL(6) 45 CL(0)=$0:CL(1)=$4D:CL(2)=$44:CL(3)=$47:CL(4)=$46:CL(5)=$45 50 GOSUB 1030 60 KY(32)=0:KY(31)=5:KY(30)=1:KY(29)=7:KY(28)=3 70 R=1:GOSUB 880 80 REM 90 CLS:GS=0:N=3:IF R>10 THEN R=1 100 GOSUB 580:REM W=12:CH=0:FOR V=1 TO 10:GOSUB 640:NEXT 110 REM CH=4:W=1:FOR V=17+(3-N) TO 19 :GOSUB 660:NEXT 120 REM LOCATE 20,23:PRINT " Round ";R 130 REM 140 K=STICK(0) 141 IF K>27 AND K<32 THEN S=KY(K):GOTO 180 142 IF K<>32 THEN S=0:GOTO 180 150 GOSUB 670:GOTO 200 160 REM 170 GOTO 150 180 GOSUB 230:IF GS=0 THEN 140 190 GOSUB 800:R=R+1:GOTO 90 200 N=N-1:IF N=0 THEN GOSUB 730:GOTO 70 210 GOTO 100 220 REM 230 DX=(S=3)-(S=7):DY=(S=5)-(S=1) 240 IF DX=0 AND DY=0 THEN RETURN 250 XX=XF+DX:YY=YF+DY:A=M(XX,YY):IF A=1 THEN RETURN 260 IF A=5 THEN V=XF:W=YF:CH=0:GOSUB 640:GS=1:RETURN 270 IF DX=0 THEN 310 280 IF A=3 THEN GOSUB 400:RETURN 290 DD=DX:XK=XX:YK=YY:GOSUB 440:IF FG<>0 THEN RETURN 300 GOSUB 380:RETURN 310 IF A=2 OR A=3 THEN GOSUB 400:GOTO 330 320 GOSUB 380 330 A=M(XF-1,YF):IF A=3 OR A=1 THEN RETURN 340 A=M(XF+1,YF):IF A=3 OR A=1 THEN RETURN 350 DM=0:FOR DD=-1 TO 1 STEP 2:XK=XF+DD:YK=YF:GOSUB 440:DM=DM+FG:NEXT 360 IF DM<>0 THEN GOSUB 490:RETURN 370 RETURN 380 V=XX:W=YY:CH=4:GOSUB 640:V=XF:W=YF:CH=0:GOSUB 640:XF=XX:YF=YY:RETURN 390 REM 400 XN=XX+DX:YN=YY+DY:IF M(XN,YN)<>0 THEN RETURN 405 I=3 410 IF A=2 THEN I=2 420 V=XN:W=YN:CH=I:GOSUB 640:GOSUB 380:RETURN 430 REM 440 IF M(XK,YK)<>0 THEN 450 442 XK=XK+DD:GOTO 440 450 IF M(XK,YK)=2 THEN FG=-DD:RETURN 460 FG=0:RETURN 480 REM 490 XK=XF+DM 500 IF M(XK,YK)<>0 THEN 530 510 V=XK:W=YF:CH=4:GOSUB 640:V=XF:W=YF:CH=0:GOSUB 640 520 XF=XK:XK=XK+DM:GOTO 500 530 IF M(XK,YF)<>3 THEN RETURN 540 V=XK:W=YF:CH=4:GOSUB 640:V=XF:W=YF:CH=0:GOSUB 640 550 XF=XK:IF M(XF+DM,YF)<>0 THEN RETURN 560 DD=DM:XK=XF+DM:YK=YF:GOSUB 440:IF FG=0 THEN 490 570 RETURN 580 CLS:CH=1 590 FOR W=0 TO 10:V=0:GOSUB 640:V=15:GOSUB 640:NEXT 600 FOR V=0 TO 15:W=0:GOSUB 640:W=11:GOSUB 640:NEXT 610 FOR W=1 TO 10:FOR V=1 TO 13:C=VAL("$"+MID$(RO$(R,W),(V+1)/2,1)) 620 CH=INT(C/4):GOSUB 640:V=V+1:CH=C-CH*4:GOSUB 640:NEXT V:NEXT W 630 V=XF(R):W=YF(R):CH=4:GOSUB 640:XF=V:YF=W 635 V=XD(R):W=YD(R):CH=5:GOSUB 640:RETURN 640 M(V,W)=CH 641 CP=CH*4:X0=INT(V*2/2)*2+0:Y0=INT(W*2/2)*2+0:CD=CP+1 642 AD=$C100:AE=$C500 643 AD=AD+32*Y0+X0:AE=AE+32*Y0+X0 644 POKE AD,CD:POKE AE,CL(CH) 645 POKE AD+1,CP:POKE AE+1,CL(CH) 646 POKE AD+32,CP+3:POKE AE+32,CL(CH) 647 POKE AD+33,CP+2:POKE AE+33,CL(CH) 648 RETURN 670 CLS 680 LOCATE 12,10:PRINT "Give up !";:RESTORE 720 690 FOR I=0 TO 4:READ M0,M1:SOUND M0,M1:NEXT:RETURN 720 DATA 350,10,350,10,330,5,292,5,261,30 730 CLS:LOCATE 12,10:PRINT "Game over";:RESTORE 750 740 FOR I=0 TO 6:READ M0,M1:SOUND M0,M1:NEXT:RETURN 750 DATA 523,10,440,10,396,10,350,10,330,10,292,10,261,10 790 REM 800 CLS:LOCATE 12,10:PRINT "Clear!!";:RESTORE 870 810 FOR I=1 TO 6:READ M0,M1:SOUND M0,M1:NEXT:RETURN 820 REM 870 DATA 261,10,330,10,261,10,330,10,261,10,494,10,523,10 880 CLS 890 RESTORE 980:FOR V=1 TO 15 STEP 7:FOR W=8 TO 10 STEP 2:READ CH,H$ 900 GOSUB 640:LOCATE V*2-2,W*2+2:PRINT H$;:NEXT:NEXT 910 CH=1:FOR V=2 TO 14:W=0:GOSUB 640:W =7:GOSUB 640:NEXT 920 FOR W=1 TO 6:V=2:GOSUB 640:V=14:GOSUB 640:NEXT 930 RESTORE 990:FOR W = 1 TO 6:READ H$:V=3:FOR I=1 TO 11 940 CH=VAL(MID$(H$,I,1)):GOSUB 640:V=V+1:NEXT:NEXT:READ XF,YF 950 READ Q$:FOR Q=1 TO LEN(Q$) STEP 2:S=VAL(MID$(Q$,Q+1,1)) 960 FOR P=1 TO VAL(MID$(Q$,Q,1)):GOSUB 230:K=STICK(0):IF K=32 THEN RETURN 970 FOR T=0 TO 50:NEXT:NEXT:NEXT:GOTO 910 980 DATA 4,FUWA FUWA,2,FAN,1,WALL,3,BLOCK,5,EXIT,0, 990 DATA 01100003000,03320000002,01201331111 1000 DATA 01400001000,01111311015,00000000002,5,4 1010 DATA 132125231511131115172113113315151315214583212315 1020 REM 1030 RESTORE 1200 1070 FOR J = 1 TO 10:FOR I = 1 TO 10:READ RO$(J,I):NEXT 1080 READ XF(J),YF(J),XD(J),YD(J):NEXT 1085 GOSUB 2100:RETURN 1190 REM 1200 DATA 8000000,1551554,1011000,1011000,1551000 1210 DATA 1001000,1001002,1001000,10017FC,0000F002,10,5,3,6 1220 DATA 1402403,00C54D4,1540404,04046C4,47D4404 1230 DATA 800440C,545445C,0024440,45D457C,0400002,10,8,1,10 1240 DATA 1000000,1155554,13C0008,1215544,1333C44 1250 DATA 1101144,11554C4,2000008,17D57D4,0000000,1,1,9,6 1260 DATA 0001000,7151514,8312005,4651042,0403155 1270 DATA 0555002,C401515,00930C2,0451551,4060001,4,5,14,2 1280 DATA 0000002,0F55550,1000024,1815514,1103114 1290 DATA 0015104,5555154,1B00003,17C5955,0000000,1,8,12,6 1300 DATA 4001002,0009C40,0F01054,1F55050,1303002 1310 DATA 1101050,1555754,0001C08,20F1444,0051040,7,10,9,10 1320 DATA 0000000,0554550,9404400,1544410,1004416 1330 DATA 1164400,100450D,137457C,2004400,C304400,4,3,8,10 1340 DATA 3000000,1555700,1040750,1800012,1070000 1350 DATA 1C65551,1040310,1C51518,100FC00,0055154,14,10,9,10 1360 DATA 0103400,30347FF,25954F0,0010F03,51560F4 1370 DATA 8004005,51175FC,01801CC,1511142,0001C00,10,1,8,2 1380 DATA 1000000,13D57C5,9F10040,03D8454,0410040 1390 DATA 0410745,C510040,09D5657,450100F,0010000,1,1,14,1 2100 REM CH$(7) 2130 RESTORE 5020 2140 FOR AD=$C000 TO $C0BF 2150 READ I$ 2160 POKE AD,VAL("$"+I$) 2170 NEXT 2220 RETURN 5000 REM ********* CHR 5010 REM FLOOR 5020 DATA 00,00,00,00,00,00,00,00 5030 DATA 00,00,00,00,00,00,00,00 5040 DATA 00,00,00,00,00,00,00,00 5050 DATA 00,00,00,00,00,00,00,00 5060 REM WALL 5070 DATA 33,33,33,00,CC,CC,CC,00 5080 DATA 33,33,33,00,CC,CC,CC,00 5090 DATA 33,33,33,00,CC,CC,CC,00 5100 DATA 33,33,33,00,CC,CC,CC,00 5110 REM FAN 5120 DATA 00,0E,1E,FA,02,0A,0C,FE 5130 DATA 00,70,78,5F,40,50,30,7F 5140 DATA FE,0C,0A,02,FA,1E,0E,00 5150 DATA 7F,30,50,40,5F,78,70,00 5160 REM BLOCK 5170 DATA 00,FC,0E,F6,1A,0A,0A,0A 5180 DATA 00,3F,70,6F,58,50,50,50 5190 DATA 0A,0A,0A,1A,F6,0E,FC,00 5200 DATA 50,50,50,58,6F,70,3F,00 5210 REM FUWAFUWA 5220 DATA 00,E0,F0,F8,8C,74,FE,FE 5230 DATA 00,07,0F,1F,31,2E,7F,7F 5240 DATA FE,1E,3C,78,E0,80,80,C0 5250 DATA 7F,78,3C,1E,07,01,01,03 5260 REM EXIT 5270 DATA 00,E0,98,AC,B6,BA,BA,9A 5280 DATA 00,07,19,35,6D,5D,5D,59 5290 DATA AA,9A,BA,BA,BA,BA,BA,00 5300 DATA 55,59,5D,5D,5D,5D,5D,00