home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / mbug / mbug177.arc / MIND.BAS < prev    next >
BASIC Source File  |  1979-12-31  |  7KB  |  172 lines

  1. 1000 DEFINT J,K,L
  2. 1010 DIM A$(26),G$(26),ME$(26)
  3. 1020 GOSUB 2040 '*** PRINT THE HEADER
  4. 1030 PRINT"IF YOU WANT INSTRUCTIONS PRESS Y (FOR YES)"
  5. 1040 PRINT"IF YOU WANT TO PLAY PRESS ANY OTHER KEY"
  6. 1050 A$=INKEY$:IF A$ = "" GOTO 1050
  7. 1060 IF A$="Y" OR A$="y" THEN GOSUB 2120
  8. 1070 GOSUB 2040 '*** PRINT THE HEADER
  9. 1080 INPUT "KEY A SECRET WORD AND HIT RETURN";IN$
  10. 1090 IF IN$ = "" GOTO 1070
  11. 1100 L = LEN(IN$)
  12. 1110 'MOVE THE SCREEN IN CASE ITS MOVED OVER
  13. 1120 IF L>15 THEN PRINT CHR$(27)+"S"+CHR$(32)+CHR$(32);
  14. 1130 IF L>15 THEN PRINT "  15 LETTERS MAXIMUM":GOTO 1030
  15. 1140 FOR J = 1 TO L
  16. 1150 A$(J) = MID$(IN$,J,1)
  17. 1160 IF A$(J)=" " THEN PRINT "  ONE WORD ONLY PLEASE":GOTO 1030
  18. 1170 IF ASC(A$(J)) <65 OR ASC(A$(J)) > 90 THEN PRINT "  A-Z ONLY IN CAPS PLEASE":GOTO 1030
  19. 1180 NEXT
  20. 1190 INPUT "HOW MANY GUESSES FOR YOUR OPPONENT";GL
  21. 1200 IF GL <1 OR GL >99 THEN PRINT"  BETWEEN 1 AND 99 PLEASE":GOTO 1190
  22. 1210 INPUT "HOW MANY SECONDS FOR EACH GUESS";BEEP
  23. 1220 IF BEEP >0 AND BEEP < 30 THEN PRINT "  MINIMUM OF 30 PLEASE":GOTO 1210
  24. 1230 IF BEEP <> 0 THEN BEEP = INT(BEEP/10)
  25. 1240 IF BEEP = 0 THEN BEEP = 1E+10 'SET COUNT HIGH
  26. 1250 PRINT "NOW WRITE ANY CLUES OR HIT RETURN"
  27. 1260 LINE INPUT CL$
  28. 1270 X = GL
  29. 1280 'END OF INPUT. NOW GO FOR GUESS
  30. 1290 GOSUB 2040
  31. 1300 PRINT"YOU HAVE TO GUESS A";L;"LETTER WORD"
  32. 1310 PRINT"YOU HAVE";GL;"GUESSES"
  33. 1320 IF BEEP > 1E+06 GOTO 1350
  34. 1330 PRINT "YOU HAVE";BEEP*10;"SECONDS FOR EACH GUESS
  35. 1340 PRINT"IF COUNTER REACHES 10 YOU LOSE A TURN"
  36. 1350 IF CL$ = "" GOTO 1370
  37. 1360 PRINT "YOUR CLUE IS: ";CL$
  38. 1370 FOR J=1 TO L
  39. 1380  A$(J) = MID$(IN$,J,1)
  40. 1390 NEXT
  41. 1400 PRINT
  42. 1410 PRINT X;
  43. 1420 PRINT CHR$(&H1B)+CHR$(&H29);
  44. 1430 PRINT TAB(6)L;"LETTERS  ";
  45. 1440 PRINT CHR$(&H1B)+CHR$(&H28);
  46. 1450 ME$=""
  47. 1460 'G LOOP IS NUMBER OF BEEPS BEFORE NEXT LINE
  48. 1470 'H LOOP IS TIME BETWEEN BEEPS
  49. 1480 IF BEEP > 1E+09 GOTO 1510
  50. 1490 FOR G = 0 TO 9
  51. 1500 POKE -3700,G+48
  52. 1510 FOR H = 1 TO BEEP*200
  53. 1520  A$=INKEY$:IF A$ = "" GOTO 1580
  54. 1530 IF LEN(ME$) >0 AND A$=CHR$(8) THEN ME$=LEFT$(ME$,(LEN(ME$)-1)):PRINT A$;:GOTO 1580
  55. 1540 IF ASC(A$) < 65 OR ASC(A$) > 90 GOTO 1580
  56. 1550  PRINT A$;
  57. 1560  ME$ = ME$+A$
  58. 1570  IF LEN(ME$) = L GOTO 1620
  59. 1580  NEXT H
  60. 1590   PRINT CHR$(7);
  61. 1600 NEXT G
  62. 1610 GOTO 1890
  63. 1620 IF LEFT$(ME$,2) = "QQ" GOTO 1950
  64. 1630 '*** NOW SPLIT IN$ INTO ELEMENTS
  65. 1640 FOR J=1 TO L
  66. 1650 G$(J) = MID$(ME$,J,1)
  67. 1660 NEXT
  68. 1670 '*** NOW WORD = A$(1-5) AND GUESS = G$(1-5)
  69. 1680 '*** NOW WORD = A$(1-L) AND GUESS = G$(1-L)
  70. 1690 TALLY = 0
  71. 1700 T = 22 + LEN(ME$)
  72. 1710 FOR J=1 TO L
  73. 1720 IF A$(J) <> G$(J) GOTO 1780
  74. 1730 TALLY = TALLY+1  'HERE IF A MATCH
  75. 1740 PRINT TAB(T)"X";
  76. 1750 T=T+1   'MOVE THE TAB COLUMN
  77. 1760 G$(J)="&&"  'MAKE SURE NOT MATCH FOR ZEROS
  78. 1770 A$(J)="%%"  'MAKE SURE NO MATCH FOR ZEROS
  79. 1780 NEXT
  80. 1790 IF TALLY = L GOTO 1930  'ALL DONE
  81. 1800 '*** THE LOOP FOR ZEROS
  82. 1810 FOR J=1 TO L
  83. 1820  FOR K=1 TO L
  84. 1830    IF A$(J) <> G$(K) GOTO 1870
  85. 1840    PRINT TAB(T)"O";
  86. 1850    T=T+1
  87. 1860    A$(J) = "^^":G$(K) = "@@"
  88. 1870   NEXT K
  89. 1880 NEXT J
  90. 1890 X=X-1
  91. 1900 IF X=0 GOTO 1950
  92. 1910 IF X=1 THEN PRINT:PRINT "     ONE MORE GUESS";
  93. 1920 GOTO 1370
  94. 1930 PRINT:PRINT:PRINT"YOU FOUND THE SOLUTION"
  95. 1940 GOTO 1990
  96. 1950 PRINT:PRINT:PRINT"TOO BAD"
  97. 1960 PRINT CHR$(7);
  98. 1970 PRINT"THE WORD WAS ";IN$
  99. 1980 PRINT:PRINT
  100. 1990 PRINT "HIT ANY KEY TO GO AGAIN"
  101. 2000 PRINT "OR PRESS Q TO QUIT
  102. 2010 A$ = INKEY$:IF A$ = "" GOTO 2010
  103. 2020 IF A$ = "Q" THEN STOP
  104. 2030 GOTO 1070
  105. 2040 PRINT CHR$(26)
  106. 2050 PRINT"**********************************************"
  107. 2060 PRINT"*                                            *"
  108. 2070 PRINT"*                 MASTERMIND                 *"
  109. 2080 PRINT"*                                            *"
  110. 2090 PRINT"**********************************************"
  111. 2100 PRINT
  112. 2110 RETURN
  113. 2120 PRINT CHR$(26)
  114. 2130 PRINT"INSTRUCTIONS:
  115. 2140 PRINT
  116. 2150 PRINT"1  TYPE A SECRET WORD WITH A MAXIMUM OF 15
  117. 2160 PRINT"   LETTERS. IT MUST BE IN CAPS.
  118. 2170 PRINT"--------------------------------------------------
  119. 2180 PRINT"2  TYPE THE NUMBER OF GUESSES YOU WANT YOUR
  120. 2190 PRINT"   OPPONENT TO HAVE. MUST BE 1 TO 99.
  121. 2200 PRINT"--------------------------------------------------
  122. 2210 PRINT"3  TYPE IN THE TIME ALLOWED FOR EACH GUESS.
  123. 2220 PRINT"   THE MINIMUM TIME IS 30 SECONDS.
  124. 2230 PRINT"   NOTE: IF YOU WANT YOUR OPPONENT TO HAVE
  125. 2240 PRINT"   UNLIMITED TIME ENTER NOTHING, JUST HIT
  126. 2250 PRINT"   THE RETURN KEY.
  127. 2260 PRINT"--------------------------------------------------
  128. 2270 PRINT"4  FINALLY, ENTER A CLUE. IF YOU DO NOT WANT
  129. 2280 PRINT"   TO GIVE A CLUE SIMPLY HIT RETURN.
  130. 2290 PRINT"--------------------------------------------------
  131. 2300 PRINT"   AFTER THOSE FOUR STEPS THE SCREEN WILL
  132. 2310 PRINT"   CLEAR AND ITS YOUR OPPONENTS TURN.
  133. 2320 PRINT:PRINT:PRINT"HIT ANY KEY FOR MORE INSTRUCTIONS
  134. 2330 A$=INKEY$:IF A$ = "" GOTO 2330
  135. 2340 PRINT CHR$(26)
  136. 2350 PRINT"INSTRUCTIONS FOR OPPONENTS:
  137. 2360 PRINT
  138. 2370 PRINT"1  YOU WILL BE TOLD HOW MANY LETTERS ARE
  139. 2380 PRINT"   IN THE WORD AND HOW MANY GUESSES YOU HAVE
  140. 2390 PRINT"   REMAINING.
  141. 2400 PRINT"-------------------------------------------------
  142. 2410 PRINT"2  IF YOUR OPPONENT HAS GIVEN YOU A TIME LIMIT
  143. 2420 PRINT"   FOR EACH GUESS YOU WILL BE TOLD.
  144. 2430 PRINT"   IF THERE IS A LIMIT THE ALARM WILL BEEP
  145. 2440 PRINT"   10 TIMES WITH A COUNTER SHOWING AT THE
  146. 2450 PRINT"   BOTTOM LEFT. IF THE COUNTER REACHES 10
  147. 2460 PRINT"   YOU LOSE A TURN
  148. 2470 PRINT"--------------------------------------------------
  149. 2480 PRINT"3  IF THERE IS A CLUE YOU WILL BE TOLD
  150. 2490 PRINT:PRINT:PRINT"HIT ANY KEY FOR MORE INSTRUCTIONS
  151. 2500 A$=INKEY$:IF A$ = "" GOTO 2500
  152. 2510 PRINT CHR$(26)
  153. 2520 PRINT"SCORING
  154. 2530 PRINT
  155. 2540 PRINT"1  AN OPPONENT CAN KEY ONLY CAPITAL LETTERS.
  156. 2550 PRINT"   THE COMPUTER BEGINS CALCULATING WHEN THE
  157. 2560 PRINT"   REQUIRED NUMBER OF LETTERS HAVE BEEN KEYED.
  158. 2570 PRINT"   AN OPPONENT MAY BACK SPACE AND OVERTYPE
  159. 2580 PRINT"   LETTERS IF NEEDED.
  160. 2590 PRINT"   PRESS QQQQQ ETC TO QUIT AT ANY TIME
  161. 2600 PRINT"--------------------------------------------------
  162. 2610 PRINT"2  THE COMPUTER SCORES AS FOLLOWS:
  163. 2620 PRINT"     X FOR A CORRECT LETTER IN CORRECT POSITION
  164. 2630 PRINT"     O FOR A CORRECT LETTER IN WRONG POSITION
  165. 2640 PRINT:PRINT:PRINT"HIT ANY KEY TO START THE GAME
  166. 2650 A$=INKEY$:IF A$="" GOTO 2650
  167. 2660 RETURN
  168. 2670 STOP 'IN CASE WE GET HERE WHICH WE CANNOT
  169. HIT ANY KEY TO START THE GAME
  170. 2650 A$=INKEY$:IF A$="" GOTO 2650
  171. 2660 RETURN
  172. 2670 STOP 'IN CASE WE GET HERE WHICH WE C