ChipMaster's bwBASIC This also includes history going back to v2.10. *WARN* some binary files might have been corrupted by CRLF.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

176 lines
5.4 KiB

  1. 1 PRINT TAB(32);"HEXAPAWN"
  2. 2 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY"
  3. 3 PRINT:PRINT:PRINT
  4. 4 REM HEXAPAWN: INTERPRETATION OF HEXAPAWN GAME AS PRESENTED IN
  5. 5 REM MARTIN GARDNER'S "THE UNEXPECTED HANGING AND OTHER MATHEMATIC-
  6. 6 REM AL DIVERSIONS", CHAPTER EIGHT: A MATCHBOX GAME-LEARNING MACHINE
  7. 7 REM ORIGINAL VERSION FOR H-P TIMESHARE SYSTEM BY R.A. KAAPKE 5/5/76
  8. 8 REM INSTRUCTIONS BY JEFF DALTON
  9. 9 REM CONVERSION TO MITS BASIC BY STEVE NORTH
  10. 10 DIM B(19,9),M(19,4),S(9),P$(3)
  11. 15 W=0: L=0
  12. 20 DEF FNS(X)=-X*(X=2 OR X=5 OR X=8)
  13. 25 DEF FNR(X)=-3*(X=1)-(X=3)-4*(X=6)-6*(X=4)-7*(X=9)-9*(X=7)+FNS(X)
  14. 30 DEF FNM(Y)=Y-INT(Y/10)*10
  15. 35 P$="X.O"
  16. 40 FOR I=1 TO 19: FOR J=1 TO 9: READ B(I,J): NEXT J: NEXT I
  17. 45 FOR I=1 TO 19: FOR J=1 TO 4: READ M(I,J): NEXT J: NEXT I
  18. 50 PRINT "INSTRUCTIONS (Y-N)";
  19. 60 INPUT A$
  20. 70 A$=LEFT$(A$,1)
  21. 80 IF A$="Y" THEN 2000
  22. 90 IF A$<>"N" THEN 50
  23. 100 X=0: Y=0
  24. 111 S(4)=0: S(5)=0: S(6)=0
  25. 112 S(1)=-1: S(2)=-1: S(3)=-1
  26. 113 S(7)=1: S(8)=1: S(9)=1
  27. 115 GOSUB 1000
  28. 120 PRINT "YOUR MOVE";
  29. 121 INPUT M1,M2
  30. 122 IF M1=INT(M1)AND M2=INT(M2)AND M1>0 AND M1<10 AND M2>0 AND M2<10 THEN 130
  31. 123 PRINT "ILLEGAL CO-ORDINATES."
  32. 124 GOTO 120
  33. 130 IF S(M1)=1 THEN 150
  34. 140 PRINT "ILLEGAL MOVE.": GOTO 120
  35. 150 IF S(M2)=1 THEN 140
  36. 160 IF M2-M1<>-3 AND S(M2)<>-1 THEN 140
  37. 170 IF M2>M1 THEN 140
  38. 180 IF M2-M1=-3 AND (S(M2)<>0) THEN 140
  39. 185 IF M2-M1<-4 THEN 140
  40. 186 IF M1=7 AND M2=3 THEN 140
  41. 190 S(M1)=0
  42. 200 S(M2)=1
  43. 205 GOSUB 1000
  44. 210 IF S(1)=1 OR S(2)=1 OR S(3)=1 THEN 820
  45. 220 FOR I=1 TO 9
  46. 221 IF S(I)=-1 THEN 230
  47. 222 NEXT I
  48. 223 GOTO 820
  49. 230 FOR I=1 TO 9
  50. 240 IF S(I)<>-1 THEN 330
  51. 250 IF S(I+3)=0 THEN 350
  52. 260 IF FNR(I)=I THEN 320
  53. 270 IF I>3 THEN 300
  54. 280 IF S(5)=1 THEN 350
  55. 290 GOTO 330
  56. 300 IF S(8)=1 THEN 350
  57. 310 GOTO 330
  58. 320 IF S(I+2)=1 OR S(I+4)=1 THEN 350
  59. 330 NEXT I
  60. 340 GOTO 820
  61. 350 FOR I=1 TO 19
  62. 360 FOR J=1 TO 3
  63. 370 FOR K=3 TO 1 STEP -1
  64. 380 T((J-1)*3+K)=B(I,(J-1)*3+4-K)
  65. 390 NEXT K
  66. 400 NEXT J
  67. 410 FOR J=1 TO 9
  68. 420 IF S(J)<>B(I,J) THEN 460
  69. 430 NEXT J
  70. 440 R=0
  71. 450 GOTO 540
  72. 460 FOR J=1 TO 9
  73. 470 IF S(J)<>T(J) THEN 510
  74. 480 NEXT J
  75. 490 R=1
  76. 500 GOTO 540
  77. 510 NEXT I
  78. 511 REM EMBER THE TERMINATION OF THIS LOOP IS IMPOSSIBLE
  79. 512 PRINT "ILLEGAL BOARD PATTERN."
  80. 530 STOP
  81. 540 X=I
  82. 550 FOR I=1 TO 4
  83. 560 IF M(X,I)<>0 THEN 600
  84. 570 NEXT I
  85. 580 PRINT "I RESIGN."
  86. 590 GOTO 820
  87. 600 Y=INT(RND(1)*4+1)
  88. 601 IF M(X,Y)=0 THEN 600
  89. 610 IF R<>0 THEN 630
  90. 620 PRINT "I MOVE FROM ";STR$(INT(M(X,Y)/10));" TO ";STR$(FNM(M(X,Y)))
  91. 622 S(INT(M(X,Y)/10))=0
  92. 623 S(FNM(M(X,Y)))=-1
  93. 624 GOTO 640
  94. 630 PRINT "I MOVE FROM ";STR$(FNR(INT(M(X,Y)/10)));" TO ";
  95. 631 PRINT STR$(FNR(FNM(M(X,Y))))
  96. 632 S(FNR(INT(M(X,Y)/10)))=0
  97. 633 S(FNR(FNM(M(X,Y))))=-1
  98. 640 GOSUB 1000
  99. 641 IF S(7)=-1 OR S(8)=-1 OR S(9)=-1 THEN 870
  100. 650 FOR I=1 TO 9
  101. 660 IF S(I)=1 THEN 690
  102. 670 NEXT I
  103. 680 GOTO 870
  104. 690 FOR I=1 TO 9
  105. 700 IF S(I)<>1 THEN 790
  106. 710 IF S(I-3)=0 THEN 120
  107. 720 IF FNR(I)=I THEN 780
  108. 730 IF I<7 THEN 760
  109. 740 IF S(5)=-1 THEN 120
  110. 750 GOTO 790
  111. 760 IF S(2)=-1 THEN 120
  112. 770 GOTO 790
  113. 780 IF S(I-2)=-1 OR S(I-4)=-1 THEN 120
  114. 790 NEXT I
  115. 800 PRINT "YOU CAN'T MOVE, SO ";
  116. 810 GOTO 870
  117. 820 PRINT "YOU WIN."
  118. 830 M(X,Y)=0
  119. 840 L=L+1
  120. 850 PRINT "I HAVE WON";W;"AND YOU";L;"OUT OF";L+W;"GAMES."
  121. 851 PRINT
  122. 860 GOTO 100
  123. 870 PRINT "I WIN."
  124. 880 W=W+1
  125. 890 GOTO 850
  126. 900 DATA -1,-1,-1,1,0,0,0,1,1,-1,-1,-1,0,1,0,1,0,1
  127. 905 DATA -1,0,-1,-1,1,0,0,0,1,0,-1,-1,1,-1,0,0,0,1
  128. 910 DATA -1,0,-1,1,1,0,0,1,0,-1,-1,0,1,0,1,0,0,1
  129. 915 DATA 0,-1,-1,0,-1,1,1,0,0,0,-1,-1,-1,1,1,1,0,0
  130. 920 DATA -1,0,-1,-1,0,1,0,1,0,0,-1,-1,0,1,0,0,0,1
  131. 925 DATA 0,-1,-1,0,1,0,1,0,0,-1,0,-1,1,0,0,0,0,1
  132. 930 DATA 0,0,-1,-1,-1,1,0,0,0,-1,0,0,1,1,1,0,0,0
  133. 935 DATA 0,-1,0,-1,1,1,0,0,0,-1,0,0,-1,-1,1,0,0,0
  134. 940 DATA 0,0,-1,-1,1,0,0,0,0,0,-1,0,1,-1,0,0,0,0
  135. 945 DATA -1,0,0,-1,1,0,0,0,0
  136. 950 DATA 24,25,36,0,14,15,36,0,15,35,36,47,36,58,59,0
  137. 955 DATA 15,35,36,0,24,25,26,0,26,57,58,0
  138. 960 DATA 26,35,0,0,47,48,0,0,35,36,0,0,35,36,0,0
  139. 965 DATA 36,0,0,0,47,58,0,0,15,0,0,0
  140. 970 DATA 26,47,0,0,47,58,0,0,35,36,47,0,28,58,0,0,15,47,0,0
  141. 1000 PRINT
  142. 1010 FOR I=1 TO 3
  143. 1015 PRINT TAB(10);
  144. 1020 FOR J=1 TO 3
  145. 1030 PRINT MID$(P$,S((I-1)*3+J)+2,1);
  146. 1040 NEXT J
  147. 1050 PRINT
  148. 1060 NEXT I
  149. 1070 PRINT
  150. 1080 RETURN
  151. 2000 PRINT: PRINT "THIS PROGRAM PLAYS THE GAME OF HEXAPAWN."
  152. 2010 PRINT "HEXAPAWN IS PLAYED WITH CHESS PAWNS ON A 3 BY 3 BOARD."
  153. 2020 PRINT "THE PAWNS ARE MOVED AS IN CHESS - ONE SPACE FORWARD TO"
  154. 2030 PRINT "AN EMPTY SPACE OR ONE SPACE FORWARD AND DIAGONALLY TO"
  155. 2040 PRINT "CAPTURE AN OPPOSING MAN. ON THE BOARD, YOUR PAWNS"
  156. 2050 PRINT "ARE 'O', THE COMPUTER'S PAWNS ARE 'X', AND EMPTY "
  157. 2060 PRINT "SQUARES ARE '.'. TO ENTER A MOVE, TYPE THE NUMBER OF"
  158. 2070 PRINT "THE SQUARE YOU ARE MOVING FROM, FOLLOWED BY THE NUMBER"
  159. 2080 PRINT "OF THE SQUARE YOU WILL MOVE TO. THE NUMBERS MUST BE"
  160. 2090 PRINT "SEPERATED BY A COMMA.": PRINT
  161. 2100 PRINT "THE COMPUTER STARTS A SERIES OF GAMES KNOWING ONLY WHEN"
  162. 2105 PRINT "THE GAME IS WON (A DRAW IS IMPOSSIBLE) AND HOW TO MOVE."
  163. 2110 PRINT "IT HAS NO STRATEGY AT FIRST AND JUST MOVES RANDOMLY."
  164. 2120 PRINT "HOWEVER, IT LEARNS FROM EACH GAME. THUS, WINNING BECOMES"
  165. 2130 PRINT "MORE AND MORE DIFFICULT. ALSO, TO HELP OFFSET YOUR"
  166. 2140 PRINT "INITIAL ADVANTAGE, YOU WILL NOT BE TOLD HOW TO WIN THE"
  167. 2150 PRINT "GAME BUT MUST LEARN THIS BY PLAYING."
  168. 2160 PRINT: PRINT "THE NUMBERING OF THE BOARD IS AS FOLLOWS:"
  169. 2170 PRINT TAB(10);"123": PRINT TAB(10);"456": PRINT TAB(10);"789"
  170. 2180 PRINT: PRINT "FOR EXAMPLE, TO MOVE YOUR RIGHTMOST PAWN FORWARD,"
  171. 2190 PRINT "YOU WOULD TYPE 9,6 IN RESPONSE TO THE QUESTION"
  172. 2200 PRINT "'YOUR MOVE ?'. SINCE I'M A GOOD SPORT, YOU'LL ALWAYS"
  173. 2210 PRINT "GO FIRST.": PRINT
  174. 2220 GOTO 100
  175. 9999 END