! 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