! UPDATED VERSON OF THE GAME MASTER MIND USING GRAPHICS AND GETCHR.SBR
!      GETCHR.SBR GETS ANY CONTROL OR KEYBOARD CHARACTER WITHOUT DISPLAYING
!                 THAT CHARACTER.  IT MAY BE CHANGED TO USE ACCEPT IF DESIRED
MAP1 BLACK'PEGS,B,1
MAP1 CHAR,B,1
MAP1 CHECK,F,6
MAP1 CMP'GUESS,S,4
MAP1 CODE,S,4
MAP1 COL,F,6
MAP1 COLOR,B,1
MAP1 COLORS,S,6, "RGOBYP"
MAP1 GUESS,S,1
MAP1 GUESS'NO,B,1
MAP1 ROW,F,6
MAP1 SEQ,F,6
MAP1 WHITE'PEGS,B,1
MAP1 X,F,6
       RANDOMIZE
       ON ERROR GOTO YOU'LOSE
START:
       PRINT TAB(-1,29);
       CALL DISPLAY'SCREEN
       CODE = "" : X = 0
CREATE'CODE:
       X = X + 1
       IF X = 5 GOTO START'GUESS
       COLOR = INT(RND(1) * 6 + 1)
       CHECK = INSTR(1,CODE,COLORS[COLOR,COLOR])
       IF CHECK = 0 THEN CODE = CODE + COLORS[COLOR,COLOR] &
                    ELSE X = X - 1
       GOTO CREATE'CODE
START'GUESS:
       GUESS'NO = 0 : ROW = 3
GUESS:
       GUESS'NO = GUESS'NO + 1
       IF GUESS'NO = 11 GOTO YOU'LOSE
       PRINT TAB(16,58); GUESS'NO USING "##";
       ROW = ROW + 2 : COL = 8 : CMP'GUESS = ""
GET'GUESS:
       IF COL = 16 GOTO VERIFY'CORRECT
       IF COL = 8 THEN GUESS = CMP'GUESS[1,1]
       IF COL = 10 THEN GUESS = CMP'GUESS[2,2]
       IF COL = 12 THEN GUESS = CMP'GUESS[3,3]
       IF COL = 14 THEN GUESS = CMP'GUESS[4,4]
       IF GUESS = "" THEN GUESS = "?"
       PRINT TAB(ROW,COL); TAB(-1,34);
       PRINT TAB(ROW,COL+1); GUESS;
       XCALL INKEY,CHAR
       PRINT TAB(ROW,COL); TAB(-1,32);
       IF CHAR = 8 AND &
          COL = 8 GOTO GET'GUESS
       IF CHAR = 8 AND &
          COL > 8  THEN COL = COL - 2 :&
                        GOTO GET'GUESS
       IF CHAR = 27 GOTO YOU'LOSE
       GUESS = CHR$(CHAR)
       CHECK = INSTR(1,COLORS,GUESS)
       IF CHECK = 0 THEN GOTO GET'GUESS
       PRINT TAB(ROW,COL+1); GUESS;
       IF COL = 8 THEN CMP'GUESS[1,1] = GUESS
       IF COL = 10 THEN CMP'GUESS[2,2] = GUESS
       IF COL = 12 THEN CMP'GUESS[3,3] = GUESS
       IF COL = 14 THEN CMP'GUESS[4,4] = GUESS
       COL = COL + 2
       GOTO GET'GUESS
VERIFY'CORRECT:
       PRINT TAB(18,48); TAB(-1,21); "IS THIS CORRECT?"; TAB(-1,22);
       XCALL INKEY,CHAR
       PRINT TAB(18,48); TAB(-1,09);
       IF CHAR = 89 OR &
          CHAR = 121 GOTO COMPARE'GUESS
       IF CHAR = 78 OR &
          CHAR = 110 THEN COL = 8 :&
                          GOTO GET'GUESS
       PRINT CHR$(7);
       GOTO VERIFY'CORRECT
COMPARE'GUESS:
       BLACK'PEGS = 0
       FOR X = 1 TO 4
               IF CMP'GUESS[X,X] = CODE[X,X] THEN BLACK'PEGS = BLACK'PEGS + 1
       NEXT X
       IF BLACK'PEGS = 4 GOTO YOU'WIN
       PRINT TAB(ROW,20); BLACK'PEGS USING "#";
       WHITE'PEGS = 0
       FOR X = 1 TO 4
               GUESS = CMP'GUESS[X,X]
               CHECK = INSTR(1,CODE,GUESS)
               IF CHECK = 0 GOTO COMPARE'NEXT
               IF CHECK = X GOTO COMPARE'NEXT
               WHITE'PEGS = WHITE'PEGS + 1
COMPARE'NEXT:
       NEXT X
       PRINT TAB(ROW,24); WHITE'PEGS USING "#";
       GOTO GUESS
YOU'LOSE:
       PRINT TAB(20,43); "TOO BAD, YOU LOSE!!!";
       FOR X = 1 TO 900
               IF X/300 = INT(X/300) THEN PRINT CHR$(7);
       NEXT X
       GOTO PLAY'AGAIN
YOU'WIN:
       PRINT TAB(20,40); "SO, YOU THINK YOU'RE SO SMART!!";
       PRINT TAB(21,40); "     I DEMAND A REMATCH!!!";
       FOR X = 1 TO 900
               IF X/300 = INT(X/300) THEN PRINT CHR$(7);
       NEXT X
PLAY'AGAIN:
       PRINT TAB(02,08); TAB(-1,34); TAB(02,09); CODE[1,1];
       PRINT TAB(02,10); TAB(-1,34); TAB(02,11); CODE[2,2];
       PRINT TAB(02,12); TAB(-1,34); TAB(02,13); CODE[3,3];
       PRINT TAB(02,14); TAB(-1,34); TAB(02,15); CODE[4,4];
       PRINT TAB(22,40); "WANT TO PLAY AGAIN (Y/N) "; TAB(-1,28);
       INPUT GUESS
       IF GUESS[1,1] = "Y" GOTO START
       PRINT TAB(-1,00);
       END
DISPLAY'SCREEN:
       PRINT TAB(-1,00); TAB(-1,23);
       PRINT TAB(01,06); TAB(-1,38); TAB(01,18); TAB(-1,42);
       PRINT TAB(01,22); TAB(-1,42); TAB(01,26); TAB(-1,39);
       PRINT TAB(02,06); TAB(-1,47); TAB(02,18); TAB(-1,47);
       PRINT TAB(02,22); TAB(-1,47); TAB(02,26); TAB(-1,47);
       PRINT TAB(03,06); TAB(-1,44); TAB(03,18); TAB(-1,48);
       PRINT TAB(03,22); TAB(-1,48); TAB(03,26); TAB(-1,43);
       FOR ROW = 4 TO 22 STEP 2
               PRINT TAB(ROW,06); TAB(-1,44); TAB(ROW,18); TAB(-1,48);
               PRINT TAB(ROW,22); TAB(-1,48); TAB(ROW,26); TAB(-1,43);
               PRINT TAB(ROW+1,06); TAB(-1,47); TAB(ROW+1,18); TAB(-1,47);
               PRINT TAB(ROW+1,22); TAB(-1,47); TAB(ROW+1,26); TAB(-1,47);
       NEXT ROW
       PRINT TAB(24,06); TAB(-1,40); TAB(24,18); TAB(-1,45);
       PRINT TAB(24,22); TAB(-1,45); TAB(24,26); TAB(-1,41);
       FOR COL = 7 TO 25
               IF COL = 18 OR &
                  COL = 22 THEN NEXT COL
               PRINT TAB(01,COL); TAB(-1,46);
               PRINT TAB(03,COL); TAB(-1,46);
       NEXT COL
       FOR ROW = 4 TO 22 STEP 2
               FOR COL = 7 TO 25
                       IF COL = 18 OR &
                          COL = 22 THEN NEXT COL
                       PRINT TAB(ROW,COL); TAB(-1,46);
               NEXT COL
       NEXT ROW
       FOR COL = 7 TO 25
               IF COL = 18 OR &
                  COL = 22 THEN NEXT COL
               PRINT TAB(24,COL); TAB(-1,46);
       NEXT COL
       PRINT TAB(02,16); TAB(-1,33);
       FOR COL = 8 TO 14 STEP 2
               PRINT TAB(02,COL); TAB(-1,32);
       NEXT COL
       PRINT TAB(02,21); TAB(-1,33); TAB(02,19); TAB(-1,32);
       PRINT TAB(02,25); TAB(-1,33); TAB(02,23); TAB(-1,32);
       FOR ROW = 5 TO 23 STEP 2
               PRINT TAB(ROW,16); TAB(-1,33);
               FOR COL = 8 TO 14 STEP 2
                       PRINT TAB(ROW,COL); TAB(-1,32);
               NEXT COL
               PRINT TAB(ROW,21); TAB(-1,33); TAB(ROW,19); TAB(-1,32);
               PRINT TAB(ROW,25); TAB(-1,33); TAB(ROW,23); TAB(-1,32);
       NEXT ROW
       PRINT TAB(01,01); TAB(-1,24);
       PRINT TAB(02,09); "C"; TAB(02,11); "O";
       PRINT TAB(02,13); "D"; TAB(02,15); "E";
       PRINT TAB(02,20); "B"; TAB(02,24); "W";
       PRINT TAB(01,41); "*** MASTERMIND - VER 2.7A ***";
       PRINT TAB(03,31); "In this game the computer will select four colors";
       PRINT TAB(04,31); "as a code.  You as the game player must guess the";
       PRINT TAB(05,31); "computers selection within ten attempts.  After";
       PRINT TAB(06,31); "each of your guesses the computer will respond";
       PRINT TAB(07,31); "with clues.  If you're chicken you can quit early";
       PRINT TAB(08,31); "by typing 'QUIT'.  GOOD LUCK!";
       PRINT TAB(10,50); "COLOR CODES:";
       PRINT TAB(11,38); "R = RED     O = ORANGE   Y = YELLOW";
       PRINT TAB(12,38); "G = GREEN   B = BLUE     P = PURPLE";
       PRINT TAB(13,42); "B = CORRECT COLOR & POSITION";
       PRINT TAB(14,45); "W = CORRECT COLOR ONLY";
       PRINT TAB(16,52); "MOVE #";
       PRINT TAB(01,01);
       RETURN