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.
 
 
 
 
 
 

233 lines
5.1 KiB

  1. 2 PRINT TAB(30);"MASTERMIND"
  2. 4 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY"
  3. 6 PRINT: PRINT: PRINT
  4. 10 REM
  5. 20 REM MASTERMIND II
  6. 30 REM STEVE NORTH
  7. 40 REM CREATIVE COMPUTING
  8. 50 REM PO BOX 789-M MORRISTOWN NEW JERSEY 07960
  9. 60 REM
  10. 70 REM
  11. 80 INPUT "NUMBER OF COLORS";C9
  12. 90 IF C9>8 THEN PRINT "NO MORE THAN 8, PLEASE!":GOTO 80
  13. 100 INPUT "NUMBER OF POSITIONS";P9
  14. 110 INPUT "NUMBER OF ROUNDS";R9
  15. 120 P=C9^P9
  16. 130 PRINT "TOTAL POSSIBILITIES =";P
  17. 140 H=0:C=0
  18. 150 DIM QQ(P9),SS(10,2),SX$(10),AX$(P9),GX$(P9),II(P),HX$(P9)
  19. 160 L$="BWRGOYPT"
  20. 170 PRINT
  21. 180 PRINT
  22. 190 PRINT "COLOR LETTER"
  23. 200 PRINT "===== ======"
  24. 210 FOR X=1 TO C9
  25. 220 READ X$
  26. 230 PRINT X$;TAB(13);MID$(L$,X,1)
  27. 240 NEXT X
  28. 250 PRINT
  29. 260 FOR R=1 TO R9
  30. 270 PRINT
  31. 280 PRINT "ROUND NUMBER";R;"----"
  32. 290 PRINT
  33. 300 PRINT "GUESS MY COMBINATION.":PRINT
  34. 310 REM GET A COMBINATION
  35. 320 A=INT(P*RND(1)+1)
  36. 330 GOSUB 3000
  37. 340 FOR X=1 TO A
  38. 350 GOSUB 3500
  39. 360 NEXT X
  40. 370 FOR M=1 TO 10
  41. 380 PRINT "MOVE # ";M;" GUESS ";:INPUT X$
  42. 390 IF X$="BOARD" THEN 2000
  43. 400 IF X$="QUIT" THEN 2500
  44. 410 IF LEN(X$)<>P9 THEN PRINT "BAD NUMBER OF POSITIONS.":GOTO 380
  45. 420 REM UNPACK X$ INTO GX$(1-P9)
  46. 430 FOR X=1 TO P9
  47. 440 FOR Y=1 TO C9
  48. 450 IF MID$(X$,X,1)=MID$(L$,Y,1) THEN 480
  49. 460 NEXT Y
  50. 470 PRINT "'"; MID$(X$,X,1); "' IS UNRECOGNIZED.":GOTO 380
  51. 480 GX$(X)=MID$(X$,X,1)
  52. 490 NEXT X
  53. 500 REM NOW WE CONVERT QQ(1-P9) INTO AX$(1-P9) [ACTUAL GUESS]
  54. 510 GOSUB 4000
  55. 520 REM AND GET NUMBER OF BLACKS AND WHITES
  56. 530 GOSUB 4500
  57. 540 IF B=P9 THEN 630
  58. 550 REM TELL HUMAN RESULTS
  59. 560 PRINT "YOU HAVE ";B;" BLACKS AND ";W;" WHITES."
  60. 570 REM SAVE ALL THIS STUFF FOR BOARD PRINTOUT LATER
  61. 580 SX$(M)=X$
  62. 590 SS(M,1)=B
  63. 600 SS(M,2)=W
  64. 610 NEXT M
  65. 620 PRINT "YOU RAN OUT OF MOVES! THAT'S ALL YOU GET!":GOTO 640
  66. 622 GOSUB 4000
  67. 623 PRINT "THE ACTUAL COMBINATION WAS: ";
  68. 624 FOR X=1 TO P9
  69. 625 PRINT AX$(X);
  70. 626 NEXT X
  71. 627 PRINT
  72. 630 PRINT "YOU GUESSED IT IN ";M;" MOVES!"
  73. 640 H=H+M
  74. 650 GOSUB 5000
  75. 660 REM
  76. 670 REM NOW COMPUTER GUESSES
  77. 680 REM
  78. 690 FOR X=1 TO P
  79. 700 II(X)=1
  80. 710 NEXT X
  81. 720 PRINT "NOW I GUESS. THINK OF A COMBINATION."
  82. 730 INPUT "HIT RETURN WHEN READY:";X$
  83. 740 FOR M=1 TO 10
  84. 750 GOSUB 3000
  85. 760 REM FIND A GUESS
  86. 770 G=INT(P*RND(1)+1)
  87. 780 IF II(G)=1 THEN 890
  88. 790 FOR X=G TO P
  89. 800 IF II(X)=1 THEN 880
  90. 810 NEXT X
  91. 820 FOR X=1 TO G
  92. 830 IF II(X)=1 THEN 880
  93. 840 NEXT X
  94. 850 PRINT "YOU HAVE GIVEN ME INCONSISTENT INFORMATION."
  95. 860 PRINT "TRY AGAIN, AND THIS TIME PLEASE BE MORE CAREFUL."
  96. 870 GOTO 660
  97. 880 G=X
  98. 890 REM NOW WE CONVERT GUESS #G INTO G$
  99. 900 FOR X=1 TO G
  100. 910 GOSUB 3500
  101. 920 NEXT X
  102. 930 GOSUB 6000
  103. 940 PRINT "MY GUESS IS: ";
  104. 950 FOR X=1 TO P9
  105. 960 PRINT HX$(X);
  106. 970 NEXT X
  107. 980 INPUT " BLACKS, WHITES ";B1,W1
  108. 990 IF B1=P9 THEN 1120
  109. 1000 GOSUB 3000
  110. 1010 FOR X=1 TO P
  111. 1020 GOSUB 3500
  112. 1030 IF II(X)=0 THEN 1070
  113. 1035 GOSUB 6500
  114. 1040 GOSUB 4000
  115. 1050 GOSUB 4500
  116. 1060 IF B1<>B OR W1<>W THEN II(X)=0
  117. 1070 NEXT X
  118. 1080 NEXT M
  119. 1090 PRINT "I USED UP ALL MY MOVES!"
  120. 1100 PRINT "I GUESS MY CPU IS JUST HAVING AN OFF DAY."
  121. 1110 GOTO 1130
  122. 1120 PRINT "I GOT IT IN ";M;" MOVES!"
  123. 1130 C=C+M
  124. 1140 GOSUB 5000
  125. 1150 NEXT R
  126. 1160 PRINT "GAME OVER"
  127. 1170 PRINT "FINAL SCORE:"
  128. 1180 GOSUB 5040
  129. 1190 STOP
  130. 2000 REM
  131. 2010 REM BOARD PRINTOUT ROUTINE
  132. 2020 REM
  133. 2025 PRINT
  134. 2030 PRINT "BOARD"
  135. 2040 PRINT "MOVE GUESS BLACK WHITE"
  136. 2050 FOR Z=1 TO M-1
  137. 2060 PRINT Z;TAB(9);SX$(Z);TAB(25);SS(Z,1);TAB(35);SS(Z,2)
  138. 2070 NEXT Z
  139. 2075 PRINT
  140. 2080 GOTO 380
  141. 2500 REM
  142. 2510 REM QUIT ROUTINE
  143. 2520 REM
  144. 2530 PRINT "QUITTER! MY COMBINATION WAS: ";
  145. 2535 GOSUB 4000
  146. 2540 FOR X=1 TO P9
  147. 2550 PRINT AX$(X);
  148. 2560 NEXT X
  149. 2565 PRINT
  150. 2570 PRINT "GOOD BYE"
  151. 2580 STOP
  152. 3000 REM
  153. 3010 REM INITIALIZE QQ(1-P9) TO ZEROS
  154. 3020 REM
  155. 3030 FOR S=1 TO P9
  156. 3040 QQ(S)=0
  157. 3050 NEXT S
  158. 3060 RETURN
  159. 3500 REM
  160. 3510 REM INCREMENT QQ(1-P9)
  161. 3520 REM
  162. 3522 IF QQ(1)>0 THEN 3530
  163. 3524 REM IF ZERO, THIS IS OUR FIRST INCREMENT: MAKE ALL ONES
  164. 3526 FOR S=1 TO P9
  165. 3527 QQ(S)=1
  166. 3528 NEXT S
  167. 3529 RETURN
  168. 3530 Q=1
  169. 3540 QQ(Q)=QQ(Q)+1
  170. 3550 IF QQ(Q)<=C9 THEN RETURN
  171. 3560 QQ(Q)=1
  172. 3570 Q=Q+1
  173. 3580 GOTO 3540
  174. 4000 REM
  175. 4010 REM CONVERT QQ(1-P9) TO AX$(1-P9)
  176. 4020 REM
  177. 4030 FOR S=1 TO P9
  178. 4040 AX$(S)=MID$(L$,QQ(S),1)
  179. 4050 NEXT S
  180. 4060 RETURN
  181. 4500 REM
  182. 4510 REM GET NUMBER OF BLACKS (B) AND WHITES (W)
  183. 4520 REM MASHES G$ AND A$ IN THE PROCESS
  184. 4530 REM
  185. 4540 B=0:W=0:F=0
  186. 4550 FOR S=1 TO P9
  187. 4560 IF GX$(S)<>AX$(S) THEN 4620
  188. 4570 B=B+1
  189. 4580 GX$(S)=CHR$(F)
  190. 4590 AX$(S)=CHR$(F+1)
  191. 4600 F=F+2
  192. 4610 GOTO 4660
  193. 4620 FOR T=1 TO P9
  194. 4630 IF GX$(S)<>AX$(T) THEN 4650
  195. 4640 IF GX$(T)=AX$(T) THEN 4650
  196. 4645 W=W+1:AX$(T)=CHR$(F):GX$(S)=CHR$(F+1):F=F+2:GOTO 4660
  197. 4650 NEXT T
  198. 4660 NEXT S
  199. 4670 RETURN
  200. 5000 REM
  201. 5010 REM PRINT SCORE
  202. 5020 REM
  203. 5030 PRINT "SCORE:"
  204. 5040 PRINT " COMPUTER ";C
  205. 5050 PRINT " HUMAN ";H
  206. 5060 PRINT
  207. 5070 RETURN
  208. 5500 REM
  209. 5510 REM CONVERT QQ(1-P9) INTO GX$(1-P9)
  210. 5520 REM
  211. 5530 FOR S=1 TO P9
  212. 5540 GX$(S)=MID$(L$,QQ(S),1)
  213. 5550 NEXT S
  214. 5560 RETURN
  215. 6000 REM
  216. 6010 REM CONVERT QQ(1-P9) TO HX$(1-P9)
  217. 6020 REM
  218. 6030 FOR S=1 TO P9
  219. 6040 HX$(S)=MID$(L$,QQ(S),1)
  220. 6050 NEXT S
  221. 6060 RETURN
  222. 6500 REM
  223. 6510 REM COPY H$ INTO G$
  224. 6520 REM
  225. 6530 FOR S=1 TO P9
  226. 6540 GX$(S)=HX$(S)
  227. 6550 NEXT S
  228. 6560 RETURN
  229. 8000 REM PROGRAM DATA FOR COLOR NAMES
  230. 8010 DATA BLACK,WHITE,RED,GREEN,ORANGE,YELLOW,PURPLE,TAN
  231. 9998 REM ...WE'RE SORRY BUT IT'S TIME TO GO...
  232. 9999 END