0 'CHESS.BA - BY Mike Weiblen 1 'CLUB 100 library - 415/939-1246 BBS, 937-5039 NEWSLETTER, 932-8856 VOICE 2 DEFINTA-Z:DEFSNGF:DIMA(7,7),U(1,6):P0$=CHR$(255)+"P NB R QK":R0$=CHR$(27)+"p":N0$=CHR$(27)+"q":C0$=CHR$(27)+"K":X$="74500547":U=-1 3 CLS:PRINT"Model 100 Chess":PRINT:PRINT"Do you want to be white (Y/N)";:C$=INPUT$(1):IFC$>"Y"THENC$=CHR$(ASC(C$)-32) 4 IFC$<>"Y"ANDC$<>"N"THEN3 5 FORX=0TO7:A(X,0)=VAL(MID$(X$,X+1,1)):A(X,7)=-A(X,0):A(X,1)=2:A(X,6)=-2:NEXT:IFC$="Y"THENA(3,0)=9:A(4,0)=99:A(3,7)=-9:A(4,7)=-99:I=1:GOSUB105:GOTO18 6 A(3,0)=99:A(4,0)=9:A(3,7)=-99:A(4,7)=-9:I=-1:GOSUB105:GOTO11 7 U=U+1:U(U,0)=S:U(U,1)=X:U(U,2)=Y:U(U,3)=A:U(U,4)=B:U(U,5)=Q0:U(U,6)=A(A,B):A(A,B)=A(X,Y):A(X,Y)=0:RETURN 8 S=U(U,0):X=U(U,1):Y=U(U,2):A=U(U,3):B=U(U,4):Q0=U(U,5):A(X,Y)=A(A,B):A(A,B)=U(U,6):U=U-1:RETURN 9 Z=0:Y=Y+1:IFY>7THENY=0:X=X+1:IFX>7THENZ=1 10 RETURN 11 F=-99:Q0=5:X=0:Y=0 12 PRINT@102,"Thinking "CHR$(X+65)CHR$(Y+49)C0$;:IFA(X,Y)<0THENGOSUB44 13 IFA(X,Y)=99THENX8=X:Y8=Y 14 GOSUB9:IFZ=0THEN12 15 IFF<-9THENPRINT@102,"I Concede"C0$;:GOTO110 16 A(A0,B0)=A(X0,Y0):A(X0,Y0)=0:IFA(A0,B0)=-2ANDB0=0THENA(A0,B0)=-9 17 PRINT@102,"My move: "CHR$(X0+65)CHR$(Y0+49)CHR$(A0+65)CHR$(B0+49);:X=X0:Y=Y0:GOSUB106:X=A0:Y=B0:GOSUB106:V0=0:X=A0:Y=B0:Q0=1:GOSUB44:IFV0>0THENPRINT@116,"Chk"; 18 PRINT@182,"Your move"C0$;:INPUTX$:IFX$="P"THEN11 19 IFX$="K"THEN37 20 IFX$="Q"THEN40 21 IFLEN(X$)<>4THEN30 22 X=ASC(LEFT$(X$,1))-65:Y=ASC(MID$(X$,2,1))-49:A=ASC(MID$(X$,3,1))-65:B=ASC(RIGHT$(X$,1))-49:P9=0:IFX<0ORY<0ORA<0ORB<0ORA>7ORB>7THEN30 23 IFX>7ORY>7THEN31 24 IFA(X,Y)<=0THEN30 25 IFA(X,Y)=2ANDA(A,B)=0ANDY=4ANDB=5ANDABS(X-A)=1THENP9=1:GOTO27 26 D=0:A0=A:B0=B:Q0=3:GOSUB44:IFD=0THEN30 27 A=A0:B=B0:A(A,B)=A(X,Y):A(X,Y)=0:IFA(A,B)=2ANDB=7THENA(A,B)=9 28 GOSUB106:X=A:Y=B:GOSUB106:IFP9=1THENY=B-1:A(X,Y)=0:GOSUB106 29 GOTO11 30 PRINT@182,"Invalid"C0$;:BEEP:GOTO18 31 X=A:Y=B:IFLEFT$(X$,1)="E"THENZ=0:GOTO36 32 IFLEFT$(X$,1)<>"C"ANDLEFT$(X$,1)<>"P"THEN30 33 Z=INSTR(P0$,MID$(X$,2,1)):IFZ<2ORZ=3THEN30 34 IFZ=10THENZ=99 35 IFLEFT$(X$,1)="C"THENZ=-Z 36 A(X,Y)=Z:GOSUB106:GOTO18 37 IFA(4,0)=99ANDA(7,0)=7THENA(4,0)=0:A(7,0)=0:A(6,0)=99:A(5,0)=7:GOTO43 38 IFA(3,0)=99ANDA(0,0)=7THENA(3,0)=0,A(0,0)=0,A(1,0)=99,A(2,0)=7:GOTO43 39 GOTO30 40 IFA(4,0)=99ANDA(0,0)=7THENA(4,0)=0:A(0,0)=0:A(2,0)=99:A(3,0)=7:GOTO43 41 IFA(3,0)=99ANDA(7,0)=7THENA(3,0)=0:A(7,0)=0:A(5,0)=99:A(4,0)=7:GOTO43 42 GOTO30 43 GOSUB105:GOTO11 44 PRINT@113,"*";:IFABS(A(X,Y))=99THEN46 45 ONABS(A(X,Y))-1GOTO69,0,68,59,0,50,0,50 46 A=X-2 47 B=Y-2:A=A+1 48 B=B+1:GOSUB80:IFB5ANDS=0THENB=B-1:GOSUB75 73 B=Y-1 74 A=X+1:GOSUB77:A=A-2:GOTO77 75 S=0:IFA(A,B)THENS=1:RETURN 76 GOTO83 77 IFA<0ORA>7THENRETURN 78 IFA(A,B)=0ORSGN(A(A,B))=SGN(A(X,Y))THENRETURN 79 GOTO83 80 S=0:IFA<0ORA>7ORB<0ORB>7THENS=1:RETURN 81 IFA(A,B)THENS=1 82 IFSGN(A(A,B))=SGN(A(X,Y))THENRETURN 83 PRINT@113," ";:ONQ0GOTO84,86,88,90,98 84 IFA(A,B)=99THENV0=V0+1 85 RETURN 86 IFU(U,3)=AANDU(U,4)=BTHENP=0 87 RETURN 88 IFA0=AANDB0=BTHEND=1 89 RETURN 90 IFA(A,B)>=0THENRETURN 91 P=A(A,B):IFABS(P)>A(X,Y)THEN96 92 GOSUB7:Q0=2:X=0:Y=0 93 IFA(X,Y)<0THENGOSUB44:IFP=0THEN95 94 GOSUB9:IFZ=0THEN93 95 GOSUB8 96 IFP0THENGOSUB44 101 GOSUB9:IFZ=0THEN100 102 X=U(U,3):Y=U(U,4):Q0=1:GOSUB44:GOSUB8:F9=1/(ABS(3.5-A)+ABS(3.5-B)+1)+RND(1)/15:IFA(X,Y)=>-9ANDA(X,Y)<=-2THENF9=F9+1/(ABS(X8-A)+ABS(Y8-B)+5) 103 F9=F9+A(A,B)+V0:IFF9>FTHENF=F9:X0=X:Y0=Y:A0=A:B0=B 104 RETURN 105 CLS:FORY=7TO0STEP-1:PRINT@40*(7-Y),Y+1;:FORX=0TO7:GOSUB106:NEXTX:NEXTY:RETURN 106 PRINT@40*(7-Y)+X*2+4,"";:G6=A(X,Y):IFG6*I>0THENPRINTR0$; 107 IFG6=0THENG6=3:IFINT((X+Y)/2)=(X+Y)/2THENG6=1 108 IFABS(G6)=99THENG6=10 109 PRINTMID$(P0$,ABS(G6),1)N0$;:RETURN 110 BEEP:PRINT@262,"Hit any key";:X$=INPUT$(1):MENU