E. Final Program with Comments

clc;
clear;

% Initialize scene using simple game engine
my_scene = simpleGameEngine(‘Mastermind.png’,58,72);

% Set up variables to name the various sprites
empty_sprite = 1;
white_peg_sprite = 2;
black_peg_sprite = 3;
blue_sprite = 4;
green_sprite = 5;
orange_sprite = 6;
pink_sprite = 7;
purple_sprite = 8;
red_sprite = 9;
turquoise_sprite = 10;
yellow_sprite = 11;
separator_sprite = 12;

% Display an empty board to start before any guess is made
board_display = empty_sprite * ones(12,9);
board_display(:,5) = separator_sprite;
drawScene(my_scene,board_display)

% Create a correct answer using random number generator
pegs = [4, 5, 6, 7, 8, 9, 10, 11];
answer = randi([4, 11],1,4);

% Loops through your twelve possible guesses
for o = 1:12
B = answer;
j = 0;
% Checks to make sure that all numbers entered are in the correct range
while j == 0
% Player asked to enter their guess for this round
player_seq1 = input(‘\n Blue = 4 \n Green = 5 \n Orange = 6 \n Pink = 7 \n Purple = 8 \n Red = 9 \n Turquoise = 10 \n Yellow = 11 \n \n \n Guess Peg 1: ‘);
player_seq2 = input(‘\n Guess Peg 2 : ‘);
player_seq3 = input(‘\n Guess Peg 3 : ‘);
player_seq4 = input(‘\n Guess Peg 4 : ‘);
% If any of the numbers entered aren’t btween 4 and 11 then you are
% asked to re-enter your guess correctly
if player_seq1 ~= 4 && player_seq1 ~= 5 && player_seq1 ~= 6 && player_seq1 ~= 7 && player_seq1 ~= 8 && player_seq1 ~= 9 && player_seq1 ~= 10 && player_seq1 ~= 11
fprintf(‘\nA value you entered is not in the specified range. Input a new guess.\n’)
elseif player_seq2 ~= 4 && player_seq2 ~= 5 && player_seq2 ~= 6 && player_seq2 ~= 7 && player_seq2 ~= 8 && player_seq2 ~= 9 && player_seq2 ~= 10 && player_seq2 ~= 11
fprintf(‘\nA value you entered is not in the specified range. Input a new guess.\n’)
elseif player_seq3 ~= 4 && player_seq3 ~= 5 && player_seq3 ~= 6 && player_seq3 ~= 7 && player_seq3 ~= 8 && player_seq3 ~= 9 && player_seq3 ~= 10 && player_seq3 ~= 11
fprintf(‘\nA value you entered is not in the specified range. Input a new guess.\n’)
elseif player_seq4 ~= 4 && player_seq4 ~= 5 && player_seq4 ~= 6 && player_seq4 ~= 7 && player_seq4 ~= 8 && player_seq4 ~= 9 && player_seq4 ~= 10 && player_seq4 ~= 11
fprintf(‘\nA value you entered is not in the specified range. Input a new guess.\n’)
else
j = j+1;
end
end
player_guess = [player_seq1, player_seq2, player_seq3, player_seq4]

% Comparing player_guess and answer
% If players guess matches the answer, then it displays that you won and
% displays your final guess
if player_guess == B
fprintf(‘Player wins.\n’)
board_display(o,1) = player_seq1;
board_display(o,2) = player_seq2;
board_display(o,3) = player_seq3;
board_display(o,4) = player_seq4;
black = 0;
% Since guess is correct it will count four black pegs
if player_seq4 == answer(4)
black = black +1;
player_seq4 = [];
answer(4) = [];
end
if player_seq3 == answer(3)
black = black +1;
player_seq3 = [];
answer(3) = [];
end
if player_seq2 == answer(2)
black = black +1;
player_seq2 = [];
answer(2) = [];
end
if player_seq1 == answer(1)
black = black +1;
player_seq1 = [];
answer(1) = [];
end
% Displays the black pegs
if black > 0
for m = 1:black
board_display(o,(m+5)) = black_peg_sprite;
end
end
drawScene(my_scene,board_display)
break
end

% Enter the players guess in the top row, left side
board_display(o,1) = player_seq1;
board_display(o,2) = player_seq2;
board_display(o,3) = player_seq3;
board_display(o,4) = player_seq4;

% Determine black and white peg output
% Black
black = 0;
% A black peg is counted for every number in your guess that matches that of the answer in the same location
if player_seq4 == answer(4)
black = black +1;
player_seq4 = [];
answer(4) = [];
end
if player_seq3 == answer(3)
black = black +1;
player_seq3 = [];
answer(3) = [];
end
if player_seq2 == answer(2)
black = black +1;
player_seq2 = [];
answer(2) = [];
end
if player_seq1 == answer(1)
black = black +1;
player_seq1 = [];
answer(1) = [];
end
player_guess = [player_seq1, player_seq2, player_seq3, player_seq4];
answer;

% White
white = 0;
% % A white peg is counted for every number in your guess that matches that
% of the answer in any location with no repeats
for i = 1:(4-black)
for k = 1:(4-black)
if player_guess(i) == answer(k)
white = white + 1;
end
end
end

% Display the black pegs and white pegs
if black > 0
for m = 1:black
board_display(o,(m+5)) = black_peg_sprite;
end
end
if white > 0
for n = 1:white
board_display(o,(n+5+black)) = white_peg_sprite;
end
end

% Show the updated Board after each guess
drawScene(my_scene,board_display)
answer = B;
% If this is the twelth incorrect guess then display that the player lost
if o == 12
fprintf(‘Player loses.\n\n’)
end
end