I have a few if statements within a while statement, i want them to display different values based on input but they're being skipped over
1 次查看(过去 30 天)
显示 更早的评论
The following code is a 'game' meant to simulate a ball being thrown at different angles. The ball needs to land on a platform and in turn wil give the player a point.
The two main issues i've had with it are:
- when "x" is the input it should display thanks for playing (or a similar message)
- when an angle less than -90 deg and greater than 90 deg is the input it should say invalid input
(here is my code)
%script file
h=figure;
clf(h);
AxesH = axes('NextPlot','add');
disp('Press x to exit')
kwhile = 1;
x = NaN(1);
while theta ~= x
theta = input('Please input angle: ');
if theta >= -90 && theta <= 90
[xf,yf] = HDTask1function_f(theta);
z = rand()*3.5;
pts = 0;
j = z+0.5;
hndl2=plot([z j],[0 0],'LineWidth',5);
hold on
set(gca,'Xlim',[-1 4])
set(gca,'Ylim',[-1 4])
hndl=plot(xf(1),yf(1),'r.','MarkerSize',50);
hold off
for ii=2:length(xf)
drawnow;
pause(0.02)
set(hndl,'XData', xf(ii), 'YData', yf(ii));
pause(0.0025);
if yf(ii:end) < 0
yf(ii:end) = 0;
pause(0.5);
if xf(1,ii) > z && xf(1,ii) < j
pts = pts + 1;
disp('You gained a point');
hold off
end
break
end
end
elseif theta == x
kwhile = kwhile - 1;
disp('Closing Game...')
break
else
disp('<3 Try again. That''s not a valid angle')
continue
end
end %end of while loop
disp('Thanks for Playing')
I've read through a few different online examples but haven't had much luck.
Any help is appreciated, i've been working on this problem all day and my brain is turning into jelly.
1 个评论
dpb
2020-8-29
kwhile = 1;
x = NaN(1);
while theta ~= x
...
theta is uniinitialized...
Rearrange the test on theta to reject the unallowed first and then can get rid of all the other else, etc., ...
You're test a variable x instead of a character string 'X'. You'll need to be case-insensitive there, too...
采纳的回答
Alan Moses
2020-8-31
Hi Joshua, from your code I understand that you want to type the letter ‘x’ to close the game and display “Thanks for Playing”. To do so, add the following lines of code instead of “x=NaN(1)”:
x = 'x';
theta = 0;
This ensures the variable ‘theta’ is initialized before entering the loop, and terminates the code on entering the letter ‘x’.
0 个评论
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!