10 CLS:MEMSET&HB00:CLEAR:WIDTH20,16:SCROLL9,0 20 DEFINTA-Z:DIMC(64) 30 I=1:CL$="N" 40 CLOCK=600*VAL(LEFT$(TIME$,2))+60*VAL(MID$(TIME$,4,2))+VAL(RIGHT$(TIME$,2)) 50 RANDOMIZECLOCK 60 RESTORE1930:POKE&H11E,&HA:POKE&H11F,&H40 70 FORADDRESS=&HA40 TO&HA8D:READMATRIX$:MATRIX=VAL("&H"+MATRIX$):POKEADDRESS,MATRIX:NEXTADDRESS 80 INPUT"LEVEL";B8!:B7!=(B8!+1+RND)/2 90 GOSUB770:GOSUB880:GOTO190 100 GOSUB870 110 F!=-99:A0=0:FORJ=1TO8:FORK=1TO8:IFA(J,K)=99THENA6=J:A7=K 120 NEXT:NEXT 130 FORX=1TO8:FORY=1TO8:IFA(X,Y)<0THENGOSUB260:IFF!>=B7!THENGOTO160 140 NEXT:NEXT:IFF!>=-9THENGOTO160ELSEGOSUB880 150 LOCATE16,0:PRINT"ç";:GOTO1850 160 A(R,U)=A(E,Q):A(E,Q)=1:IFA(R,U)=-2ANDU=1THENA(R,U)=-9 170 X=R:Y=U:A0=4:GOSUB260:LOCATE16,1:PRINTCHR$(E+64);STR$(Q):LOCATE16,2:PRINTCHR$(R+64);STR$(U); 180 X=E:Y=Q:GOSUB890:X=R:Y=U:GOSUB890:IFC=1THENLOCATE16,3:PRINT"àà ";:C=0 190 LOCATE16,0:PRINTCHR$(144);:SOUND10,10:GOSUB1570:D=0:B4=A:B9=B:B5=0:IFA(X,Y)=2ANDY=5ANDB=6ANDA(A,B)=1ANDABS(A-X)=1THENB5=1:GOTO220 200 IFX$="K"ORX$="Q"THENGOSUB880:GOTO110 210 A0=3:GOSUB250:IFD=0THENLOCATE16,3:PRINT"à ";:GOTO190 220 LOCATE16,0:PRINTCHR$(143);:LOCATE16,3:PRINT" ";:A=B4:B=B9:A(A,B)=A(X,Y):A(X,Y)=1:GOSUB890:X=A:Y=B:GOSUB890:IFN$="N"THENGOSUB880:N$=" " 230 IFA(A,B)=2ANDB=8THENLOCATE16,0:PRINT"æ";:GOSUB1780:X=A:Y=B:GOSUB890 240 IFB5=1THENA(A,B-1)=1:X=A:Y=B-1:GOSUB890:GOTO110ELSEGOTO110 250 ONA(X,Y)GOTO10,460,10,360,310,10,270,10,310:GOTO440 260 ON-A(X,Y)GOTO10,510,10,360,310,10,270,10,310:GOTO440 270 B=Y:FORA=X+1TO8:GOSUB620:IFS=0THENNEXT 280 FORA=X-1TO1STEP-1:GOSUB620:IFS=0THENNEXT 290 A=X:FORB=Y+1TO8:GOSUB620:IFS=0THENNEXT 300 FORB=Y-1TO1STEP-1:GOSUB620:IFS=0THENNEXT:RETURNELSERETURN 310 B=Y:FORA=X+1TO8:B=B+1:GOSUB620:IFS=0THENNEXT 320 B=Y:FORA=X-1TO1STEP-1:B=B-1:GOSUB620:IFS=0THENNEXT 330 B=Y:FORA=X-1TO1STEP-1:B=B+1:GOSUB620:IFS=0THENNEXT 340 B=Y:FORA=X+1TO8:B=B-1:GOSUB620:IFS=0THENNEXT 350 IFABS(A(X,Y))=9THENGOTO270ELSERETURN 360 A=X+2:B=Y+1:IFA<9ANDB<9THENGOSUB630 370 B=B-2:IFB>0ANDA<9THENGOSUB630 380 A=A-4:IFA>0ANDB>0THENGOSUB630 390 B=B+2:IFB<9ANDA>0THENGOSUB630 400 A=A+1:B=B+1:IFA>0ANDA<9ANDB<9THENGOSUB630 410 B=B-4:IFB>0ANDA>0ANDA<9THENGOSUB630 420 A=A+2:IFA>0ANDA<9ANDB>0THENGOSUB630 430 B=B+4:IFB<9ANDA>0ANDA<9THENGOSUB630:RETURNELSERETURN 440 FORA=X-1TOX+1:FORB=Y-1TOY+1:IFA(A,B)<>0THENGOSUB630 450 NEXT:NEXT:RETURN 460 A=X:IFY>2THENGOTO480 470 B=Y+1:IFA(A,B)=1THENGOSUB640:B=B+1:IFA(A,B)=1THENGOSUB640:GOTO490ELSEGOTO490ELSEGOTO490 480 B=Y+1:IFA(A,B)=1THENGOSUB640 490 A=X+1:B=Y+1:IFA(A,B)<0THENGOSUB640 500 A=A-2:IFA(A,B)<0THENGOSUB640:RETURNELSERETURN 510 A=X:IFY<7THENGOTO530 520 B=Y-1:IFA(A,B)=1THENGOSUB640:B=B-1:IFA(A,B)=1THENGOSUB640:GOTO540ELSEGOTO540ELSEGOTO540 530 B=Y-1:IFA(A,B)=1THENGOSUB640 540 A=X-1:B=Y-1:IFA(A,B)>1THENGOSUB640 550 A=A+2:IFA(A,B)>1THENGOSUB640:RETURNELSEGOTO570 560 T=A(A,B):IFT=-99THENB1=T:RETURNELSEGOTO570 570 A5=S:IFABS(T)<=A(X,Y)THENA(A,B)=A(X,Y):A(X,Y)=1:GOTO590 580 IFT1THENGOSUB250 720 NEXT:NEXT:X=N:Y=H:A0=1:GOSUB260:A0=0:S=B3:X=W:Y=M:A=N:B=H:A(X,Y)=A(A,B):A(A,B)=P 730 B6!=1/(ABS(4.5-A)+ABS(4.5-B)+1):IFA(X,Y)<-2ANDA(X,Y)>-9THENB6!=B6!+1/(ABS(A6-A)+ABS(A7-B)+5)+RND(0)/15 740 G!=P+B1+B6!:IFP=99THENGOSUB880:LOCATE16,3:PRINT"ààà";:GOTO1850 750 IFG!<=F!THENRETURN 760 F!=G!:E=X:Q=Y:R=A:U=B:RETURN 770 CLS 780 Y=0:FORJ=896TO0STEP-128:Y=Y+1:X=0:FORK=J TO42+J STEP6:X=X+1:T(X,Y)=K:NEXT:NEXT 790 Y=0:FORJ=960TO64STEP-128:Y=Y+1:X=0:FORK=J TO42+J STEP6:X=X+1:B(X,Y)=K:NEXT:NEXT 800 DATA -7,-4,-5,-9,-99,-5,-4,-7 810 DATA -2,-2,-2,-2,-2,-2,-2,-2 820 DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 830 DATA 2,2,2,2,2,2,2,2 840 DATA 7,4,5,9,99,5,4,7 850 FORY=8TO1STEP-1:FORX=1TO7STEP2:S(X,Y)=I:S(X+1,Y)=-I:NEXT:I=-I:NEXT 860 RESTORE800:FORY=8TO1STEP-1:FORX=1TO8:READA(X,Y):NEXT:NEXT:RETURN 870 I=-I:A(4,1)=99:A(5,1)=9:A(4,8)=-99:A(5,8)=-9 880 FORY=1TO8:FORX=1TO8:GOSUB890:NEXT:NEXT:RETURN 890 IFS(X,Y)>0THENGOTO910 900 ONABS(A(X,Y))GOSUB950,1020,10,1320,1420,10,1520,10,1120:LINE(47,0)-(47,31),PSET:LINE(95,0)-(95,31),PSET:IFABS(A(X,Y))=99THENGOSUB1220:RETURNELSERETURN 910 ONABS(A(X,Y))GOSUB920,970,10,1270,1370,10,1470,10,1070:LINE(47,0)-(47,31),PSET:LINE(95,0)-(95,31),PSET:IFABS(A(X,Y))=99THENGOSUB1170:RETURNELSERETURN 920 IFS(X,Y)<0THENGOTO950 930 LOCATEX-1+8*((Y-1)\4),4-((Y-1)MOD4+1) 940 PRINTCHR$(32);:RETURN 950 LOCATEX-1+8*((Y-1)\4),4-((Y-1)MOD4+1) 960 PRINTCHR$(140);:RETURN 970 IFI*A(X,Y)<0THENGOTO1000 980 LOCATEX-1+8*((Y-1)\4),4-((Y-1)MOD4+1) 990 PRINT"æ";:RETURN 1000 LOCATEX-1+8*((Y-1)\4),4-((Y-1)MOD4+1) 1010 PRINT"ì";:RETURN 1020 IFI*A(X,Y)<0THENGOTO1050 1030 LOCATEX-1+8*((Y-1)\4),4-((Y-1)MOD4+1) 1040 PRINT"æ";:RETURN 1050 LOCATEX-1+8*((Y-1)\4),4-((Y-1)MOD4+1) 1060 PRINT"ì";:RETURN 1070 IFI*A(X,Y)<0THENGOTO1100 1080 LOCATEX-1+8*((Y-1)\4),4-((Y-1)MOD4+1) 1090 PRINT"â";:RETURN 1100 LOCATEX-1+8*((Y-1)\4),4-((Y-1)MOD4+1) 1110 PRINT"è";:RETURN 1120 IFI*A(X,Y)<0THENGOTO1150 1130 LOCATEX-1+8*((Y-1)\4),4-((Y-1)MOD4+1) 1140 PRINT"â";:RETURN 1150 LOCATEX-1+8*((Y-1)\4),4-((Y-1)MOD4+1) 1160 PRINT"è";:RETURN 1170 IFI*A(X,Y)<0THENGOTO1200 1180 LOCATEX-1+8*((Y-1)\4),4-((Y-1)MOD4+1) 1190 PRINT"á";:RETURN 1200 LOCATEX-1+8*((Y-1)\4),4-((Y-1)MOD4+1) 1210 PRINT"ç";:RETURN 1220 IFI*A(X,Y)<0THENGOTO1250 1230 LOCATEX-1+8*((Y-1)\4),4-((Y-1)MOD4+1) 1240 PRINT"á";:RETURN 1250 LOCATEX-1+8*((Y-1)\4),4-((Y-1)MOD4+1) 1260 PRINT"ç";:RETURN 1270 IFI*A(X,Y)<0THENGOTO1300 1280 LOCATEX-1+8*((Y-1)\4),4-((Y-1)MOD4+1) 1290 PRINT"å";:RETURN 1300 LOCATEX-1+8*((Y-1)\4),4-((Y-1)MOD4+1) 1310 PRINT"ë";:RETURN 1320 IFI*A(X,Y)<0THENGOTO1350 1330 LOCATEX-1+8*((Y-1)\4),4-((Y-1)MOD4+1) 1340 PRINT"å";:RETURN 1350 LOCATEX-1+8*((Y-1)\4),4-((Y-1)MOD4+1) 1360 PRINT"ë";:RETURN 1370 IFI*A(X,Y)<0THENGOTO1400 1380 LOCATEX-1+8*((Y-1)\4),4-((Y-1)MOD4+1) 1390 PRINT"ä";:RETURN 1400 LOCATEX-1+8*((Y-1)\4),4-((Y-1)MOD4+1) 1410 PRINT"ê";:RETURN 1420 IFI*A(X,Y)<0THENGOTO1450 1430 LOCATEX-1+8*((Y-1)\4),4-((Y-1)MOD4+1) 1440 PRINT"ä";:RETURN 1450 LOCATEX-1+8*((Y-1)\4),4-((Y-1)MOD4+1) 1460 PRINT"ê";:RETURN 1470 IFI*A(X,Y)<0THENGOTO1500 1480 LOCATEX-1+8*((Y-1)\4),4-((Y-1)MOD4+1) 1490 PRINT"ã";:RETURN 1500 LOCATEX-1+8*((Y-1)\4),4-((Y-1)MOD4+1) 1510 PRINT"é";:RETURN 1520 IFI*A(X,Y)<0THENGOTO1550 1530 LOCATEX-1+8*((Y-1)\4),4-((Y-1)MOD4+1) 1540 PRINT"ã";:RETURN 1550 LOCATEX-1+8*((Y-1)\4),4-((Y-1)MOD4+1) 1560 PRINT"é";:RETURN 1570 REM 1580 X$=INKEY$ 1590 IFX$>="A"ANDX$<="H"THENX=VAL(CHR$(ASC(X$)-16)):GOTO1650 1600 IFX$="K"ANDA(5,1)=99ANDA(8,1)=7ANDA(6,1)=1ANDA(7,1)=1THENA(5,1)=1:A(8,1)=1:A(7,1)=99:A(6,1)=7:GOTO1720 1610 IFX$="Q"ANDA(5,1)=99ANDA(1,1)=7ANDA(2,1)=1ANDA(3,1)=1ANDA(4,1)=1THENA(5,1)=1:A(1,1)=1:A(3,1)=99:A(4,1)=7:GOTO1720 1620 IFX$="K"ANDA(4,1)=99ANDA(1,1)=7ANDA(2,1)=1ANDA(3,1)=1THENA(4,1)=1:A(1,1)=1:A(2,1)=99:A(3,1)=7:GOTO1720 1630 IFX$="Q"ANDA(4,1)=99ANDA(8,1)=7ANDA(5,1)=1ANDA(6,1)=1ANDA(7,1)=1THENA(4,1)=1:A(8,1)=1:A(6,1)=99:A(5,1)=7:GOTO1720 1640 GOTO1580 1650 LOCATE16,1:PRINTX$;" "; 1660 Y=VAL(INKEY$):IFY=0THENGOTO1660 1670 LOCATE17,1:PRINTSTR$(Y); 1680 IFA(X,Y)<2ORA(X,Y)>99THENLOCATE16,3:PRINT"à ";:GOTO1570 1690 A$=INKEY$:IFA$<"A"ORA$>"H"THENGOTO1690ELSEA=VAL(CHR$(ASC(A$)-16)) 1700 LOCATE16,2:PRINTA$+" "; 1710 B=VAL(INKEY$):IFB=0THENGOTO1710ELSELOCATE17,2:PRINTSTR$(B); 1720 IFX$="K"ORX$="Q"THENLOCATE16,1:PRINTX$+" ";:LOCATE16,2:PRINT"O-O";:GOSUB1750ELSEGOSUB1750 1730 REM 1740 RETURN 1750 RETURN 1760 RETURN 1770 GOTO110 1780 Z$=INPUT$(1) 1790 IFZ$="P"THENA(A,B)=2:RETURN 1800 IFZ$="N"THENA(A,B)=4:RETURN 1810 IFZ$="B"THENA(A,B)=5:RETURN 1820 IFZ$="R"THENA(A,B)=7:RETURN 1830 IFZ$="Q"THENA(A,B)=9:RETURN 1840 GOTO1790 1850 REM 1860 END 1870 I=-1:GOSUB1880:GOSUB880:RETURN 1880 L=0:FORJ=1TO8:FORK=1TO8:L=L+1:IFA(J,K)<>1THENC(L)=-A(J,K)ELSEC(L)=A(J,K) 1890 NEXT:NEXT 1900 L=65:FORJ=1TO8:FORK=1TO8:L=L-1:A(J,K)=C(L):NEXT:NEXT 1910 RETURN 1920 END 1930 DATA 56,25,2F,25,56,00 1940 DATA 70,4A,47,4A,70,00,71,4A,45,4A,71,00,67,5A,41,5A,67,00 1950 DATA 6C,52,41,52,6C,00,5E,61,56,6A,4C,00,00,4E,72,4E,00,00 1960 DATA 70,7A,7F,7A,70,00,71,7A,7D,7A,71,00,67,7E,7F,7E,67,00 1970 DATA 6C,7E,7F,7E,6C,00,5E,7F,7A,6E,4C,00,00,4E,7E,4E,00,00