In: Computer Science
Write a MATLAB program to simulate the Stuck in the Mud game, The following link contains the detail game description: https://www.activityvillage.co.uk/stuck-in-the-mud , with additional features that can:
• Use five (5) 6-sided dice to automatically play the Stuck in the Mud game against a player.
• Greet the player when the game starts.
• Let the player to choose the number of rounds to play. Take care of the user input to ensure the program will not crash with inputs like 0, 1.2, -1, 999, and so on...
• The program should not play if the user enters a 0 or any negative value.
• The program should accurately play the number of rounds specified by the user. The player and the computer play in turns for each round.
• The program can always pick one side to start the game first, either the player side or the computer side. Randomly pick a side to start the rotation is optional.
• Print the current round number clearly in the command window.
• If the player side starts first, the program will automatically roll all five (5) dice for the player. If the player rolled any 2s or 5s, the player does not score any points for this throw. The player can only score on a roll which does not include the number 2 and 5. Any dice with a 2 or a 5 becomes stuck in the mud. If this throw does not contain any 2s or 5s, the score is incremented by the sum of the dice values. The player needs to set aside any 2s and 5s and throw the remaining dice. Again, if any 2s or 5s are rolled, the score will not be incremented for this throw. Throws without 2s and 5s are added to the previous total score. Continue in this way until all the dice are stuck.
• The dice rolled for the player, the stuck dice, and the scores during the process should clearly be printed in the command window.
• The program then automatically roll all five (5) dice for the computer. Follow the game rules until all five (5) dice are stuck.
• The dice rolled for the computer, the stuck dice, and the scores during the process should also be clearly printed in the command window. • Accurately track the total scores for the player and the computer.
• After all the rounds have been played, select a winner based on the highest total score. It is also possible that the game ends in a tie.
• Add voice to the game to report the details of the game for the player.
o Preloaded voices can be found here
https://drive.google.com/file/d/0B2evz1N1HPsoYlRvd1BLb0k5UHM/view?usp=sharing
o The following websites can convert any text into voices with downloadable mp3 files.
§ www.fromtexttospeech.com
§ www.text2speech.org
o If you have a mic, you can also record your own voice using the Windows Sound Recorder.
o MATLAB can play any WMA, MP3, MPEG-4 AAC, WAV, FLAC audio files. [y,Fs] = audioread('fileName.mp3'); % read sound file sound(y,Fs); % play sound file o Additional sound effects are welcome.
• Add voice to greet the player.
• Add voice to ask the player to enter the number of rounds to play.
• Add voice to announce the current round number (i.e., round 1, round 2, and so on…).
• Add voice to announce the current turn (i.e. the player is rolling or the computer is rolling). • Add voice to announce the current roll number (i.e. roll 1, roll 2, and so on…).
• Add voice to announce each dice rolled.
• Add voice to announce the sum of the score for the current turn after each throw.
• Add voice to announce the number of dice stuck after each throw.
• After one side played, add voice to announce the current total score for the side. For example, 35 points can be announced as three-five.
• After all the rounds are played, add voice to announce the winner or tie.
Add pause as needed between sentences to ensure one sentence is finished before the next sentence starts.
Use at least one user-defined function in the program to reduce code repetition.
The finished program can look like the following example. Extra components are always welcome.
(Play a voice greeting.)
(Play a voice to request the user input.)
Enter the number of rounds to play: 2
ROUND 1!!! (Announce round #1.)
The player starts first: (Announce the player’s turn.)
ROLL 1 (Announce roll #1.)
Rolling: 5 1 4 5 6 (Announce rolling 5-1-4-5-6.)
Stuck in the mud: 5 5
Game score: 0 (Announce the score: 0)
Number of dice stuck: 2 (Announce the number of dice stuck: 2)
ROLL 2 (Announce roll #2.)
Rolling: 2 2 2 (Announce rolling 2-2-2.)
Stuck in the mud: 5 2 2 5 2
Game score: 0 (Announce the score: 0)
Number of dice stuck: 5 (Announce the number of dice stuck: 5)
The player scores: 0 (Announce the player score: 0)
The Player Total Scored: 0 (Announce the player total score: 0)
The computer goes next: (Announce the computer’s turn.)
ROLL 1 (Announce roll #1.)
Rolling: 2 4 3 5 4 (Announce rolling 2-4-3-5-4.)
Stuck in the mud: 2 5
Game score: 0 (Announce the score: 0)
Number of dice stuck: 2 (Announce the number of dice stuck: 2)
ROLL 2 (Announce roll #2.)
Rolling: 1 2 4 (Announce rolling 1-2-4.)
Stuck in the mud: 2 2 5
Game score: 0 (Announce the score: 0)
Number of dice stuck: 3 (Announce the number of dice stuck: 3)
ROLL 3 (Announce roll #3.)
Rolling: 4 2 (Announce rolling 4-2.)
Stuck in the mud: 2 2 5 2
Game score: 0 (Announce the score: 0)
Number of dice stuck: 4 (Announce the number of dice stuck: 4)
ROLL 4 (Announce roll #4.)
Rolling: 5 (Announce rolling 5.)
Stuck in the mud: 2 5 2 5 2
Game score: 0 (Announce the score: 0)
Number of dice stuck: 5 (Announce the number of dice stuck: 5)
The computer scores: 0 (Announce the computer score: 0)
The Computer total scored: 0 (Announce the computer total score: 0)
ROUND 2!!! (Announce round #2.)
The player starts first: (Announce the player’s turn.)
ROLL 1 (Announce roll #1.)
Rolling: 2 4 4 2 5 (Announce rolling 2-4-4-2-5.)
Stuck in the mud: 2 2 5
Game score: 0 (Announce the score: 0)
Number of dice stuck: 3 (Announce the number of dice stuck: 3)
ROLL 2 (Announce roll #2.)
Rolling: 2 2 (Announce rolling 2-2.)
Stuck in the mud: 2 2 2 2 5
Game score: 0 (Announce the score: 0)
Number of dice stuck: 5 (Announce the number of dice stuck: 5)
The player scores: 0 (Announce the player score: 0)
The Player Total Scored: 0 (Announce the computer score: 0)
The computer goes next: (Announce the computer’s turn.)
ROLL 1 (Announce roll #1.)
Rolling: 4 4 1 1 1 (Announce rolling 4-4-1-1-1.)
Stuck in the mud:
Game score: 11 (Announce the score: 1-1)
Number of dice stuck: 0 (Announce the number of dice stuck: 0)
ROLL 2 (Announce roll #2.)
Rolling: 1 4 5 6 4 (Announce rolling 1-4-5-6-4.)
Stuck in the mud: 5
Game score: 11 (Announce the score: 1-1)
Number of dice stuck: 1 (Announce the number of dice stuck: 1)
ROLL 3 (Announce roll #3.)
Rolling: 6 5 1 1 (Announce rolling 6-5-1-1.)
Stuck in the mud: 5 5
Game score: 11 (Announce the score: 1-1)
Number of dice stuck: 2 (Announce the number of dice stuck: 2)
ROLL 4 (Announce roll #4.)
Rolling: 2 5 1 (Announce rolling 2-5-1.)
Stuck in the mud: 2 5 5 5
Game score: 11 (Announce the score: 1-1)
Number of dice stuck: 4 (Announce the number of dice stuck: 4)
ROLL 5 (Announce roll #5.)
Rolling: 5 (Announce rolling 5.) Stuck in the mud: 2 5 5 5 5
Game score: 11 (Announce the score: 1-1)
Number of dice stuck: 5 (Announce the number of dice stuck: 5)
The computer scores: 11 (Announce the computer score: 1-1)
The Computer total scored: 11 (Announce the computer total score: 1-1)
The computer wins! (Announce the computer wins.)
>>
The program should end when the player wants to play 0 round.
(Play a voice greeting.)
(Play a voice to request the user input.)
Enter the number of rounds to play: 0
The game ends with a tie (Announce the game ends in a tie.)
The program should be able to handle a negative input.
(Play a voice greeting.)
(Play a voice to request the user input.)
Enter the number of rounds to play: -1
The game ends with a tie (Announce the game ends with a tie.)
>>
The program should be able to handle a floating point input without crashing.
(The following example takes the floor value of 1.2 and only runs 1 round. )
(Play a voice greeting.)
(Play a voice to request the user input.)
Enter the number of rounds to play: 1.2
ROUND 1!!! (Announce round #1.)
The player starts first: (Announce the player’s turn.)
ROLL 1 (Announce roll #1.)
Rolling: 3 6 2 2 6 (Announce rolling 3-6-2-2-6.)
Stuck in the mud: 2 2 Game score: 0 (Announce the score: 0)
Number of dice stuck: 2 (Announce the number of dice stuck: 0)
ROLL 2 (Announce roll #2.)
Rolling: 4 4 4 (Announce rolling 4-4-4.)
Stuck in the mud: 2 2
Game score: 12 (Announce the score: 1-2)
Number of dice stuck: 2 (Announce the number of dice stuck: 2)
ROLL 3 (Announce roll #3.)
Rolling: 3 1 5 (Announce rolling 3-1-5.)
Stuck in the mud: 2 2 5
Game score: 12 (Announce the score: 1-2)
Number of dice stuck: 3 (Announce the number of dice stuck: 3)
ROLL 4 (Announce roll #4.)
Rolling: 6 5 (Announce rolling 6-5.)
Stuck in the mud: 5 2 2 5
Game score: 12 (Announce the score: 1-2)
Number of dice stuck: 4 (Announce the number of dice stuck: 4)
ROLL 5 (Announce roll #5.)
Rolling: 1 (Announce rolling 1.)
Stuck in the mud: 5 2 2 5
Game score: 13 (Announce the score: 1-3)
Number of dice stuck: 4 (Announce the number of dice stuck: 4)
ROLL 6 (Announce roll #6.)
Rolling: 1 (Announce rolling 1.)
Stuck in the mud: 5 2 2 5
Game score: 14 (Announce the score: 1-4)
Number of dice stuck: 4 (Announce the number of dice stuck: 4)
ROLL 7 (Announce roll #7)
Rolling: 5 (Announce rolling 5.)
Stuck in the mud: 5 5 2 2 5
Game score: 14 (Announce the score: 1-4)
Number of dice stuck: 5 (Announce the number of dice stuck: 5)
The player scores: 14 (Announce the player score: 1-4)
The Player Total Scored: 14 (Announce the player total score: 1-4)
The computer goes next: (Announce the computer’s turn.)
ROLL 1 (Announce roll #1.)
Rolling: 6 5 6 4 2 (Announce rolling 6-5-6-4-2.)
Stuck in the mud: 5 2
Game score: 0 (Announce the score: 0)
Number of dice stuck: 2 (Announce the number of dice stuck: 2)
ROLL 2 (Announce roll #2.)
Rolling: 2 4 5 (Announce rolling 2-4-5.)
Stuck in the mud: 2 5 5 2
Game score: 0 (Announce the score: 0)
Number of dice stuck: 4 (Announce the number of dice stuck: 4)
ROLL 3 (Announce roll #3.)
Rolling: 4 (Announce rolling 4.
Stuck in the mud: 2 5 5 2
Game score: 4 (Announce the score: 4)
Number of dice stuck: 4 (Announce the number of dice stuck: 4)
ROLL 4 (Announce roll #4.)
Rolling: 2 (Announce rolling 2.)
Stuck in the mud: 2 5 2 5 2
Game score: 4 (Announce the score: 4)
Number of dice stuck: 5 (Announce the number of dice stuck: 5)
The computer scores: 4 (Announce the computer score: 4)
The Computer total scored: 4 (Announce the computer total score: 4)
The player wins! (Announce the player wins.)
Screenshot of the code:
Sample Output:
Code to copy:
%prompt the user to enter the rounds.
N=input('Enter the number of rounds to play');
N=floor(N);
%Check the value of round.
if N>0
Playertotalscore=0;
Computertotalscore=0;
%Start the for loop for N rounds.
for i=1:N
%Concatenate function.
round=strcat('ROUND',num2str(i));
%Display the round.
disp(round);
%Print on the output screen.
prompt='Player Starts First: ';
input(prompt);
%Fix the value of dice.
j=1;dice=5;
Playerscore=0;
SIM=zeros(1,1);
%Check the dice values.
while dice>0
diceo=dice;
fprintf('\r\n');
%Concatenate function.
roll=strcat('ROLL',num2str(j));
%display
disp(roll);
%random dice value.
c=ceil(6*rand(1,dice));
fprintf('\n Rolling...');
%for loop for dice values.
for k=1:dice;
string=num2str(c(k));
fprintf(' %d ',c(k));
end
%if dice value is 2 or 5
r=[c(find(c==2)) c(find(c==5))];
SIM=[SIM r];
fprintf('\n Stuck in the Mud: ');
%start from 2 to end.
SIM=SIM(2:end);
d=length(SIM);
%start the for loop.
for k=1:d;
string=num2str(SIM(k));
fprintf(' %d ',SIM(k));
end
dice=5-d;
%Find the sum
if dice==diceo;
SUM=sum(c);
else SUM=0;
end
Playerscore=Playerscore+SUM;
%Print the results.
fprintf('\n Game Score: %d',Playerscore);
fprintf('\n Number of dice stuck in the mud: %d',d);
j=j+1;
SIM=[0 SIM];
end
%Add the player score.
Playertotalscore=Playertotalscore+Playerscore;
fprintf('\n The Player Scores: %d',Playerscore);
pause(1);
fprintf('\n The Player Total Scored: %d',Playertotalscore);
pause(1);
%Computer's turn
fprintf('\r\n Computer goes Next: ');
j=1;dice=5;Computerscore=0;SIM=zeros(1,1);
%Go till dice is greater than 0
while dice>0
diceo=dice;
fprintf('\r\n');
roll=strcat('ROLL',num2str(j));
%Display the roll
disp(roll);
c=ceil(6*rand(1,dice));
fprintf('\n Rolling...');
%Start the for loop.
for k=1:dice;
string=num2str(c(k));
fprintf(' %d ',c(k));
r=[c(find(c==2)) c(find(c==5))];
SIM=[SIM r];
fprintf('\n Stuck in the Mud: ');
SIM=SIM(2:end);
d=length(SIM);
%Start the for loop
for k=1:d;
string=num2str(SIM(k));
% tts(string);
fprintf(' %d ',SIM(k));
end
dice=5-d;
if dice==diceo;
SUM=sum(c);
else SUM=0;
end
Computerscore=Computerscore+SUM;
fprintf('\n Game Score: %d',Computerscore);
fprintf('\n Number of dice stuck in the mud: %d',d);
j=j+1;
SIM=[0 SIM];
end
%Calculate the total score.
Computertotalscore=Computertotalscore+Computerscore;
fprintf('\n The Computer Scores: %d',Computerscore);
pause(1);
fprintf('\n The Computer Total Scored: %d',Computertotalscore);
i=i+1;
end
%Calculate the difference.
h=Computertotalscore-Playertotalscore;
%Declare the winner
if h<0
fprintf('\n The Player won the game\n');
end
if h>0
fprintf('\n The Computer won the game\n');
end
if h==0
fprintf('\n the game ends with a tie\n');
end
end
end