home *** CD-ROM | disk | FTP | other *** search
/ ftp.whtech.com / ftp.whtech.com.tar / ftp.whtech.com / club100 / gam / chess.100 < prev    next >
Text File  |  2006-10-19  |  5KB  |  112 lines

  1. 0 'CHESS.BA  - BY Mike Weiblen 
  2. 1 'CLUB 100 library - 415/939-1246 BBS,    937-5039 NEWSLETTER, 932-8856 VOICE
  3. 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
  4. 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)
  5. 4 IFC$<>"Y"ANDC$<>"N"THEN3
  6. 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
  7. 6 A(3,0)=99:A(4,0)=9:A(3,7)=-99:A(4,7)=-9:I=-1:GOSUB105:GOTO11
  8. 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
  9. 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
  10. 9 Z=0:Y=Y+1:IFY>7THENY=0:X=X+1:IFX>7THENZ=1
  11. 10 RETURN
  12. 11 F=-99:Q0=5:X=0:Y=0
  13. 12 PRINT@102,"Thinking "CHR$(X+65)CHR$(Y+49)C0$;:IFA(X,Y)<0THENGOSUB44
  14. 13 IFA(X,Y)=99THENX8=X:Y8=Y
  15. 14 GOSUB9:IFZ=0THEN12
  16. 15 IFF<-9THENPRINT@102,"I Concede"C0$;:GOTO110
  17. 16 A(A0,B0)=A(X0,Y0):A(X0,Y0)=0:IFA(A0,B0)=-2ANDB0=0THENA(A0,B0)=-9
  18. 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";
  19. 18 PRINT@182,"Your move"C0$;:INPUTX$:IFX$="P"THEN11
  20. 19 IFX$="K"THEN37
  21. 20 IFX$="Q"THEN40
  22. 21 IFLEN(X$)<>4THEN30
  23. 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
  24. 23 IFX>7ORY>7THEN31
  25. 24 IFA(X,Y)<=0THEN30
  26. 25 IFA(X,Y)=2ANDA(A,B)=0ANDY=4ANDB=5ANDABS(X-A)=1THENP9=1:GOTO27
  27. 26 D=0:A0=A:B0=B:Q0=3:GOSUB44:IFD=0THEN30
  28. 27 A=A0:B=B0:A(A,B)=A(X,Y):A(X,Y)=0:IFA(A,B)=2ANDB=7THENA(A,B)=9
  29. 28 GOSUB106:X=A:Y=B:GOSUB106:IFP9=1THENY=B-1:A(X,Y)=0:GOSUB106
  30. 29 GOTO11
  31. 30 PRINT@182,"Invalid"C0$;:BEEP:GOTO18
  32. 31 X=A:Y=B:IFLEFT$(X$,1)="E"THENZ=0:GOTO36
  33. 32 IFLEFT$(X$,1)<>"C"ANDLEFT$(X$,1)<>"P"THEN30
  34. 33 Z=INSTR(P0$,MID$(X$,2,1)):IFZ<2ORZ=3THEN30
  35. 34 IFZ=10THENZ=99
  36. 35 IFLEFT$(X$,1)="C"THENZ=-Z
  37. 36 A(X,Y)=Z:GOSUB106:GOTO18
  38. 37 IFA(4,0)=99ANDA(7,0)=7THENA(4,0)=0:A(7,0)=0:A(6,0)=99:A(5,0)=7:GOTO43
  39. 38 IFA(3,0)=99ANDA(0,0)=7THENA(3,0)=0,A(0,0)=0,A(1,0)=99,A(2,0)=7:GOTO43
  40. 39 GOTO30
  41. 40 IFA(4,0)=99ANDA(0,0)=7THENA(4,0)=0:A(0,0)=0:A(2,0)=99:A(3,0)=7:GOTO43
  42. 41 IFA(3,0)=99ANDA(7,0)=7THENA(3,0)=0:A(7,0)=0:A(5,0)=99:A(4,0)=7:GOTO43
  43. 42 GOTO30
  44. 43 GOSUB105:GOTO11
  45. 44 PRINT@113,"*";:IFABS(A(X,Y))=99THEN46
  46. 45 ONABS(A(X,Y))-1GOTO69,0,68,59,0,50,0,50
  47. 46 A=X-2
  48. 47 B=Y-2:A=A+1
  49. 48 B=B+1:GOSUB80:IFB<Y+1THEN48ELSEIFA<X+1THEN47
  50. 49 RETURN
  51. 50 A=X:B=Y
  52. 51 A=A+1:GOSUB80:IFS=0THEN51
  53. 52 A=X
  54. 53 A=A-1:GOSUB80:IFS=0THEN53
  55. 54 A=X
  56. 55 B=B+1:GOSUB80:IFS=0THEN55
  57. 56 B=Y
  58. 57 B=B-1:GOSUB80:IFS=0THEN57
  59. 58 IFABS(A(X,Y))=7THENRETURN
  60. 59 A=X:B=Y
  61. 60 A=A+1:B=B+1:GOSUB80:IFS=0THEN60
  62. 61 A=X:B=Y
  63. 62 A=A+1:B=B-1:GOSUB80:IFS=0THEN62
  64. 63 A=X:B=Y
  65. 64 A=A-1:B=B+1:GOSUB80:IFS=0THEN64
  66. 65 A=X:B=Y
  67. 66 A=A-1:B=B-1:GOSUB80:IFS=0THEN66
  68. 67 RETURN
  69. 68 A=X+2:B=Y+1:GOSUB80:B=B-2:GOSUB80:A=A-4:GOSUB80:B=B+2:GOSUB80:A=A+1:B=B+1:GOSUB80:B=B-4:GOSUB80:A=A+2:GOSUB80:B=B+4:GOTO80
  70. 69 A=X:IFA(X,Y)<0THEN72
  71. 70 B=Y+1:GOSUB75:IFY<2ANDS=0THENB=B+1:GOSUB75
  72. 71 B=Y+1:GOTO74
  73. 72 B=Y-1:GOSUB75:IFY>5ANDS=0THENB=B-1:GOSUB75
  74. 73 B=Y-1
  75. 74 A=X+1:GOSUB77:A=A-2:GOTO77
  76. 75 S=0:IFA(A,B)THENS=1:RETURN
  77. 76 GOTO83
  78. 77 IFA<0ORA>7THENRETURN
  79. 78 IFA(A,B)=0ORSGN(A(A,B))=SGN(A(X,Y))THENRETURN
  80. 79 GOTO83
  81. 80 S=0:IFA<0ORA>7ORB<0ORB>7THENS=1:RETURN
  82. 81 IFA(A,B)THENS=1
  83. 82 IFSGN(A(A,B))=SGN(A(X,Y))THENRETURN
  84. 83 PRINT@113," ";:ONQ0GOTO84,86,88,90,98
  85. 84 IFA(A,B)=99THENV0=V0+1
  86. 85 RETURN
  87. 86 IFU(U,3)=AANDU(U,4)=BTHENP=0
  88. 87 RETURN
  89. 88 IFA0=AANDB0=BTHEND=1
  90. 89 RETURN
  91. 90 IFA(A,B)>=0THENRETURN
  92. 91 P=A(A,B):IFABS(P)>A(X,Y)THEN96
  93. 92 GOSUB7:Q0=2:X=0:Y=0
  94. 93 IFA(X,Y)<0THENGOSUB44:IFP=0THEN95
  95. 94 GOSUB9:IFZ=0THEN93
  96. 95 GOSUB8
  97. 96 IFP<V0THENV0=P
  98. 97 RETURN
  99. 98 IFA(A,B)=99THENPRINT@102,"CheckMate"C0$;:GOTO110
  100. 99 GOSUB7:V0=0:Q0=4:X=0:Y=0
  101. 100 IFA(X,Y)>0THENGOSUB44
  102. 101 GOSUB9:IFZ=0THEN100
  103. 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)
  104. 103 F9=F9+A(A,B)+V0:IFF9>FTHENF=F9:X0=X:Y0=Y:A0=A:B0=B
  105. 104 RETURN
  106. 105 CLS:FORY=7TO0STEP-1:PRINT@40*(7-Y),Y+1;:FORX=0TO7:GOSUB106:NEXTX:NEXTY:RETURN
  107. 106 PRINT@40*(7-Y)+X*2+4,"";:G6=A(X,Y):IFG6*I>0THENPRINTR0$;
  108. 107 IFG6=0THENG6=3:IFINT((X+Y)/2)=(X+Y)/2THENG6=1
  109. 108 IFABS(G6)=99THENG6=10
  110. 109 PRINTMID$(P0$,ABS(G6),1)N0$;:RETURN
  111. 110 BEEP:PRINT@262,"Hit any key";:X$=INPUT$(1):MENU
  112.