How to make a bar graph using user input values
2 views (last 30 days)
Show older comments
Bradee Jeffery
on 4 May 2021
Commented: Bradee Jeffery
on 4 May 2021
I am trying to graph a bar graph from a number guessing game which asks users to input values. I want to make a bar graph of the numbers guessed but am only getting the bar graph to display the final number guessed and not all numbers guessed. Any feedback is great thank you! Code is below.
disp('Are you ready for your opponent to guess your number, begin playing.')
pause(1)
Player_1_Guess = input('Enter a number between 1 and 200:');
chance = 5;
clc
while chance <= 5 && chance >= 1;
chance = chance - 1;
for Player_2_Guess = input('Take your guesses on what the correct number is between 1 and 200\n');
if Player_2_Guess < 1;
disp('!NUMBER NOT IN RANGE!')
elseif Player_2_Guess > 200;
disp('!NUMBER NOT IN RANGE!')
end
if Player_1_Guess < Player_2_Guess
disp('!TOO HIGH!')
elseif Player_1_Guess > Player_2_Guess;
disp('!TOO LOW!')
end
fprintf('Chances remaining: %d, ', chance);
if Player_1_Guess == Player_2_Guess;
chance = 6;
end
end
end
if chance == 0;
disp('!NO MORE CHANCES!')
disp('!GAME OVER YOU LOSE!')
elseif chance == 6;
fprintf('!CONGRATS YOU WIN!')
end
ca = categorical({'P1 number','P2 guess1','P2 guess2','P2 guess3', 'P2 guess4', 'P2 guess5'});
bar(ca(1),Player_1_Guess)
hold on
bar(ca(2),Player_2_Guess)
hold on
bar(ca(3),Player_2_Guess)
hold on
bar(ca(4),Player_2_Guess)
hold on
bar(ca(5),Player_2_Guess)
hold on
bar(ca(6),Player_2_Guess)
grid on
xlabel('Player Guesses')
ylabel('Guessed Number Value')
title('Numbers Guessed by P2 & P1 Input')
0 Comments
Accepted Answer
Constantino Carlos Reyes-Aldasoro
on 4 May 2021
Several errors,
First, clear your figure every time you play otherwise they will overlap (use clf).
Second, you are always displaying the last value that was guessed
bar(ca(1),Player_1_Guess)
hold on
bar(ca(2),Player_2_Guess)
hold on
bar(ca(3),Player_2_Guess)
You are not recording the previous attempts, you can solve this by using another variable, e.g. PlayerRecord like this
while chance <= 5 && chance >= 1;
chance = chance - 1;
for Player_2_Guess = input('Take your guesses on what the correct number is between 1 and 200\n');
PlayerRecord(chance+1) = Player_2_Guess;
Whilst I was running that I noticed an error when chance was 0 you were still entering the for loop, no need for that, that is why I used chance + 1 instead of chance. That would sort the problem, now display like this
bar(ca(1),Player_1_Guess)
hold on
bar(ca(2),PlayerRecord(1))
hold on
bar(ca(3),PlayerRecord(2))
hold on
bar(ca(4),PlayerRecord(3))
hold on
bar(ca(5),PlayerRecord(4))
hold on
bar(ca(6),PlayerRecord(5))
grid on
There are more efficient ways to use bar, but for the time being this works:
There are many extra ";" at the end of the lines that are not necessary, those are highlighted by the Matlab editor, but that will not prevent the code from running.
Hope this solves the problem, if it does, please accept the answer. If not, let me know.
More Answers (0)
See Also
Categories
Find more on Line Plots in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!