01 REM PROF. A. HERE. I JUST DISCOVERED A POWERFUL WAY TO STORE 02 REM A BASIC PROGRAM IN TEXT MODE ON THE WEB. 03 REM IF ANYBODY CAN UNDERSTAND THIS, AND/OR CAN IMPROVE ON THIS 04 REM METHOD, EMAIL ME profa@auciello.net 05 rem 06 rem 10 SCREEN 0, 0, 0: ON KEY(10) GOSUB 390 20 CLS : LOCATE 1, 1, 0: PRINT STRING$(80, 219): FOR A = 2 TO 22: LOCATE A, 1: PRINT "Û": LOCATE A, 80: PRINT "Û": NEXT: LOCATE 23, 1: PRINT STRING$(80, 219); : LOCATE 5, 30: COLOR 0,15: PRINT "M A S T E R M I N D" 30 LOCATE 11, 25: PRINT "Would You Like Instructions? <Y/N>": COLOR 0,15 40 GOSUB 440: IF RP$ = "N" THEN CLS : GOTO 90 ELSE IF RP$ <> "Y" THEN 40 50 COLOR 0,15: LOCATE 8, 15: PRINT "Welcome to Master Mind. The object of this game is": LOCATE 9, 15: PRINT "to correctly guess a series of from 3 to 6 numbers.": LOCATE 10, 15: PRINT "Each number is randomly generated and the possibility" 60 LOCATE 11, 15: PRINT "exists that you may have TWO of the same number in an": LOCATE 12, 15: PRINT "answer. An example of this would be `3 3 9' or `6 3 6'": LOCATE 13, 15: PRINT "You will have between 9 and 15 guesses to accomplish" 70 LOCATE 14, 15: PRINT "this task, depending upon the length of the series.": LOCATE 15, 15: PRINT "After each guess, you will be told the number of cor-": LOCATE 16, 15: PRINT "rect digits, along with how many are in the right po-" 80 LOCATE 17, 15: PRINT "sition. Use these clues to guess the correct series.": LOCATE 25, 20: COLOR 0,15: PRINT " Strike Any Key To Continue "; : COLOR 0,15: GOSUB 440: CLS 90 DIM GUESS(6): DIM ANSWER(6): COLOR 0,15 100 LOCATE 8, 32: PRINT "WELCOME TO MASTER MIND": LOCATE 9, 20: PRINT "To Choose a Level Enter The LETTER Next To It": LOCATE 11, 29: PRINT "A) SERIES OF 3 NUMBERS": LOCATE 12, 29: PRINT "B) SERIES OF 4 NUMBERS": LOCATE 13, 29: PRINT "C) SERIES OF 5 NUMBERS" 110 LOCATE 14, 29: PRINT "D) SERIES OF 6 NUMBERS": COLOR 0,15: LOCATE 6, 17: PRINT "É"; STRING$(49, "Í"); "»": FOR B = 7 TO 15: LOCATE B, 17: PRINT "º": LOCATE B, 67: PRINT "º": NEXT: LOCATE 16, 17: PRINT "È"; STRING$(49, "Í"); "¼" 120 GOSUB 440: IF RP$ < "A" OR RP$ > "D" THEN 120 ELSE ON ASC(RP$) - 64 GOTO 130, 140, 150, 160 130 DIGITS = 3: STARTANS = 36: STARTGES = 8: BOTROW = 15: GOTO 170 140 DIGITS = 4: STARTANS = 34: STARTGES = 6: BOTROW = 15: GOTO 170 150 DIGITS = 5: STARTANS = 32: STARTGES = 4: BOTROW = 18: GOTO 170 160 DIGITS = 6: STARTANS = 30: STARTGES = 2: BOTROW = 21 170 FOR XSUB = 1 TO DIGITS: RANDOMIZE (VAL(RIGHT$(TIME$, 2))): ANSWER(XSUB) = FIX(RND(XSUB) * 10): NEXT XSUB 180 CLS : XX = 1: YY = 1: GOSUB 420: LOCATE 1, 34: PRINT "SECRET NUMBERS": LOCATE 2, 30: PRINT STRING$(23, "-"): BEGINANS = STARTANS 190 FOR M = 1 TO DIGITS: LOCATE 3, BEGINANS: PRINT "ÛÛ": BEGINANS = BEGINANS + 4: NEXT: COLOR 0,15: LOCATE 5, 4: PRINT "ENTER YOUR GUESSES": COLOR 0,15 200 LOCATE 6, 2: PRINT STRING$(22, "-"): LOCATE 5, 28: PRINT "CORRECT NUMBERS": LOCATE 6, 28: PRINT STRING$(15, "-"): LOCATE 5, 48: PRINT "CORRECT NUMBERS IN RIGHT POSITION": LOCATE 6, 48: PRINT STRING$(33, "-") 210 FOR ROW = 7 TO BOTROW: BEGINGES = STARTGES: FOR Q = 1 TO DIGITS: LOCATE ROW, BEGINGES: PRINT "ÜÜ": BEGINGES = BEGINGES + 4: NEXT Q: LOCATE ROW, 35: PRINT "ÜÜ": LOCATE ROW, 63: PRINT "ÜÜ": NEXT ROW 220 FOR ROW = 7 TO BOTROW: BEGINGES = STARTGES: HITS = 0: GUESSES = 0: DIM HITS$(10, 6): DIM MISSES$(10, 6) 230 FOR XSUB = 1 TO DIGITS: LOCATE ROW, BEGINGES: GOSUB 460: GUESS(XSUB) = VAL(RP$): LOCATE ROW, BEGINGES - 1: PRINT " "; GUESS(XSUB): BEGINGES = BEGINGES + 4: NEXT XSUB 240 FOR X = 1 TO DIGITS 245 FOR Y = 1 TO DIGITS 247 IF GUESS(X) = ANSWER(Y) AND X = Y AND HITS$(GUESS(X), X) <> "*" THEN GUESSES = GUESSES + 1: HITS = HITS + 1: HITS$(GUESS(X), X) = "*": MISSES$(GUESS(X), X) = "*": GOTO 250 249 NEXT Y 250 NEXT X 260 FOR X = 1 TO DIGITS: FOR Y = 1 TO DIGITS 270 IF GUESS(X) = ANSWER(Y) AND HITS$(GUESS(X), X) = "" AND MISSES$(GUESS(X), X) = "" AND X <> Y AND MISSES$(GUESS(X), Y) = "" AND HITS$(GUESS(X), Y) = "" THEN : GUESSES = GUESSES + 1: MISSES$(GUESS(X), X) = "*": MISSES$(GUESS(X), Y) = "*": GOTO 280 275 NEXT Y 280 NEXT X 290 LOCATE ROW, 34: PRINT " "; GUESSES; " ": LOCATE ROW, 62: PRINT " "; HITS; " ": ERASE MISSES$: ERASE HITS$ 300 IF HITS = DIGITS THEN GOSUB 430: LOCATE 22, 22: PRINT "!!! C O N G R A T U L A T I O N S !!!": GOTO 340 310 NEXT ROW 320 GOSUB 430 330 LOCATE 22, 23: PRINT "!!! S O R R Y , Y O U L O S T !!!" 340 LOCATE 23, 24, O: PRINT "Would You Like To Play Again? <Y/N>" 350 GOSUB 440: IF RP$ = "Y" THEN CLS : GOTO 100 ELSE IF RP$ <> "N" THEN 350 360 REM ON ERROR GOTO 370: RUN "MENU1.001" 370 REM ON ERROR GOTO 380: RUN "MENU2.002" 380 REM RUN "MENU3.003" 390 KEY(10) OFF: XX = CSRLIN: YY = POS(0): LOCATE 25, 1: PRINT SPC(79); : LOCATE 25, 23 400 COLOR 0,15: PRINT "Do You Wish To Leave This Game? <Y/N>"; : COLOR 0,15 410 GOSUB 440: IF RP$ = "Y" THEN 360 ELSE IF RP$ <> "N" THEN 410 420 LOCATE 25, 1: PRINT SPC(79); : LOCATE 25, 25: COLOR 0,15: PRINT " Strike <F10> To Leave This Game "; : COLOR 0,15: LOCATE XX, YY: KEY(10) ON: RETURN 430 FOR XSUB = 1 TO DIGITS: LOCATE 3, STARTANS - 1: PRINT " "; ANSWER(XSUB): STARTANS = STARTANS + 4: NEXT XSUB: RETURN 440 IF INKEY$ <> "" THEN 440 450 DEF SEG = &H40: POKE &H17, (PEEK(&H17) OR 96): RP$ = INKEY$: IF RP$ = "" THEN 450 ELSE RETURN 460 GOSUB 440: IF RP$ < "0" OR RP$ > "9" THEN 460 ELSE RETURN 470 rem 480 rem