10 CLS:MEMSET&HB00:WIDTH20,16:DEFINTA-Z:DIMC(64):I=1 20 CLOCK=600*VAL(LEFT$(TIME$,2))+60*VAL(MID$(TIME$,4,2))+VAL(RIGHT$(TIME$,2)) 30 RANDOMIZECLOCK 40 RESTORE1160:POKE&H11E,&HA:POKE&H11F,&H40 50 FORADDRESS=&HA40 TO&HA8D:READMATRIX$:MATRIX=VAL("&H"+MATRIX$):POKEADDRESS,MATRIX:NEXTADDRESS 60 INPUT"LEVEL";B8!:B7!=(B8!+1+RND)/2 70 GOSUB750:GOSUB840:GOTO170 80 GOSUB830 90 F!=-99:A0=0:FORJ=1TO8:FORK=1TO8:IFA(J,K)=99THENA6=J:A7=K 100 NEXT:NEXT 110 FORX=1TO8:FORY=1TO8:IFA(X,Y)<0THENGOSUB240:IFF!>=B7!THENGOTO140 120 NEXT:NEXT:IFF!>=-9THENGOTO140ELSEGOSUB840 130 LOCATE16,3:PRINT"ç ";:END 140 A(R,U)=A(E,Q):A(E,Q)=1:IFA(R,U)=-2ANDU=1THENA(R,U)=-9 150 X=R:Y=U:A0=4:GOSUB240:LOCATE16,1:PRINTCHR$(E+64);STR$(Q):LOCATE16,2:PRINTCHR$(R+64);STR$(U); 160 X=E:Y=Q:GOSUB850:X=R:Y=U:GOSUB850:IFC=1THENLOCATE16,3:PRINT"àà ";:C=0 170 LOCATE16,0:PRINTCHR$(144);:SOUND10,10:GOSUB940:D=0:B4=A:B9=B:B5=0:IFA(X,Y)=2ANDY=5ANDB=6ANDA(A,B)=1ANDABS(A-X)=1THENB5=1:GOTO200 180 IFX$="K"ORX$="Q"THENGOSUB840:GOTO90 190 A0=3:GOSUB230:IFD=0THENLOCATE16,3:PRINT"à ";:GOTO170 200 LOCATE16,0:PRINTCHR$(143);:LOCATE16,3:PRINT" ";:A=B4:B=B9:A(A,B)=A(X,Y):A(X,Y)=1:GOSUB850:X=A:Y=B:GOSUB850 210 IFA(A,B)=2ANDB=8THENLOCATE16,3:PRINT"æ ";:A(A,B)=9:X=A:Y=B:GOSUB850 220 IFB5=1THENA(A,B-1)=1:X=A:Y=B-1:GOSUB850:GOTO90ELSEGOTO90 230 ONA(X,Y)GOTO10,440,10,340,290,10,250,10,290:GOTO420 240 ON-A(X,Y)GOTO10,490,10,340,290,10,250,10,290:GOTO420 250 B=Y:FORA=X+1TO8:GOSUB600:IFS=0THENNEXT 260 FORA=X-1TO1STEP-1:GOSUB600:IFS=0THENNEXT 270 A=X:FORB=Y+1TO8:GOSUB600:IFS=0THENNEXT 280 FORB=Y-1TO1STEP-1:GOSUB600:IFS=0THENNEXT:RETURNELSERETURN 290 B=Y:FORA=X+1TO8:B=B+1:GOSUB600:IFS=0THENNEXT 300 B=Y:FORA=X-1TO1STEP-1:B=B-1:GOSUB600:IFS=0THENNEXT 310 B=Y:FORA=X-1TO1STEP-1:B=B+1:GOSUB600:IFS=0THENNEXT 320 B=Y:FORA=X+1TO8:B=B-1:GOSUB600:IFS=0THENNEXT 330 IFABS(A(X,Y))=9THENGOTO250ELSERETURN 340 A=X+2:B=Y+1:IFA<9ANDB<9THENGOSUB610 350 B=B-2:IFB>0ANDA<9THENGOSUB610 360 A=A-4:IFA>0ANDB>0THENGOSUB610 370 B=B+2:IFB<9ANDA>0THENGOSUB610 380 A=A+1:B=B+1:IFA>0ANDA<9ANDB<9THENGOSUB610 390 B=B-4:IFB>0ANDA>0ANDA<9THENGOSUB610 400 A=A+2:IFA>0ANDA<9ANDB>0THENGOSUB610 410 B=B+4:IFB<9ANDA>0ANDA<9THENGOSUB610:RETURNELSERETURN 420 FORA=X-1TOX+1:FORB=Y-1TOY+1:IFA(A,B)<>0THENGOSUB610 430 NEXT:NEXT:RETURN 440 A=X:IFY>2THENGOTO460 450 B=Y+1:IFA(A,B)=1THENGOSUB620:B=B+1:IFA(A,B)=1THENGOSUB620:GOTO470ELSEGOTO470ELSEGOTO470 460 B=Y+1:IFA(A,B)=1THENGOSUB620 470 A=X+1:B=Y+1:IFA(A,B)<0THENGOSUB620 480 A=A-2:IFA(A,B)<0THENGOSUB620:RETURNELSERETURN 490 A=X:IFY<7THENGOTO510 500 B=Y-1:IFA(A,B)=1THENGOSUB620:B=B-1:IFA(A,B)=1THENGOSUB620:GOTO520ELSEGOTO520ELSEGOTO520 510 B=Y-1:IFA(A,B)=1THENGOSUB620 520 A=X-1:B=Y-1:IFA(A,B)>1THENGOSUB620 530 A=A+2:IFA(A,B)>1THENGOSUB620:RETURNELSEGOTO550 540 T=A(A,B):IFT=-99THENB1=T:RETURNELSEGOTO550 550 A5=S:IFABS(T)<=A(X,Y)THENA(A,B)=A(X,Y):A(X,Y)=1:GOTO570 560 IFT1THENGOSUB230 700 NEXT:NEXT:X=N:Y=H:A0=1:GOSUB240:A0=0:S=B3:X=W:Y=M:A=N:B=H:A(X,Y)=A(A,B):A(A,B)=P 710 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 720 G!=P+B1+B6!:IFP=99THENGOSUB840:LOCATE16,3:PRINT"ààà";:END 730 IFG!<=F!THENRETURN 740 F!=G!:E=X:Q=Y:R=A:U=B:RETURN 750 CLS 760 Y=0:FORJ=896TO0STEP-128:Y=Y+1:X=0:FORK=J TO42+J STEP6:X=X+1:T(X,Y)=K:NEXT:NEXT 770 Y=0:FORJ=960TO64STEP-128:Y=Y+1:X=0:FORK=J TO42+J STEP6:X=X+1:B(X,Y)=K:NEXT:NEXT 780 DATA-7,-4,-5,-9,-99,-5,-4,-7,-2,-2,-2,-2,-2,-2,-2,-2 790 DATA1,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 800 DATA2,2,2,2,2,2,2,2,7,4,5,9,99,5,4,7 810 FORY=8TO1STEP-1:FORX=1TO7STEP2:S(X,Y)=I:S(X+1,Y)=-I:NEXT:I=-I:NEXT 820 RESTORE780:FORY=8TO1STEP-1:FORX=1TO8:READA(X,Y):NEXT:NEXT:RETURN 830 I=-I:A(4,1)=99:A(5,1)=9:A(4,8)=-99:A(5,8)=-9 840 FORY=1TO8:FORX=1TO8:GOSUB850:NEXT:NEXT:RETURN 850 LOCATEX-1+8*((Y-1)\4),4-((Y-1)MOD4+1) 860 ONABS(A(X,Y))GOSUB870,880,10,890,900,10,910,10,920:LINE(47,0)-(47,31),PSET:LINE(95,0)-(95,31),PSET:IFABS(A(X,Y))=99THENGOSUB930:RETURNELSERETURN 870 IFS(X,Y)>0THENPRINTCHR$(32);:RETURNELSEPRINTCHR$(140);:RETURN 880 IFI*A(X,Y)>0THENPRINT"æ";:RETURNELSEPRINT"ì";:RETURN 890 IFI*A(X,Y)>0THENPRINT"å";:RETURNELSEPRINT"ë";:RETURN 900 IFI*A(X,Y)>0THENPRINT"ä";:RETURNELSEPRINT"ê";:RETURN 910 IFI*A(X,Y)>0THENPRINT"ã";:RETURNELSEPRINT"é";:RETURN 920 IFI*A(X,Y)>0THENPRINT"â";:RETURNELSEPRINT"è";:RETURN 930 IFI*A(X,Y)>0THENPRINT"á";:RETURNELSEPRINT"ç";:RETURN 940 X$=INKEY$ 950 IFX$>="A"ANDX$<="H"THENX=VAL(CHR$(ASC(X$)-16)):GOTO1010 960 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:GOTO1080 970 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:GOTO1080 980 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:GOTO1080 990 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:GOTO1080 1000 GOTO940 1010 LOCATE16,1:PRINTX$;" "; 1020 Y=VAL(INKEY$):IFY=0THENGOTO1020 1030 LOCATE17,1:PRINTSTR$(Y); 1040 IFA(X,Y)<2ORA(X,Y)>99THENLOCATE16,3:PRINT"à ";:GOTO940 1050 A$=INKEY$:IFA$<"A"ORA$>"H"THENGOTO1050ELSEA=VAL(CHR$(ASC(A$)-16)) 1060 LOCATE16,2:PRINTA$+" "; 1070 B=VAL(INKEY$):IFB=0THENGOTO1070ELSELOCATE17,2:PRINTSTR$(B); 1080 IFX$="K"ORX$="Q"THENLOCATE16,1:PRINTX$+" ";:LOCATE16,2:PRINT"O-O";:RETURNELSERETURN 1090 GOTO90 1100 I=-1:GOSUB1110:GOSUB840:RETURN 1110 L=0:FORJ=1TO8:FORK=1TO8:L=L+1:IFA(J,K)<>1THENC(L)=-A(J,K)ELSEC(L)=A(J,K) 1120 NEXT:NEXT 1130 L=65:FORJ=1TO8:FORK=1TO8:L=L-1:A(J,K)=C(L):NEXT:NEXT 1140 RETURN 1150 END 1160 DATA 56,25,2F,25,56,00 1170 DATA 70,4A,47,4A,70,00,71,4A,45,4A,71,00,67,5A,41,5A,67,00 1180 DATA 6C,52,41,52,6C,00,5E,61,56,6A,4C,00,00,4E,72,4E,00,00 1190 DATA 70,7A,7F,7A,70,00,71,7A,7D,7A,71,00,67,7E,7F,7E,67,00 1200 DATA 6C,7E,7F,7E,6C,00,5E,7F,7A,6E,4C,00,00,4E,7E,4E,00,00