我正在构建一个战列舰游戏,我使用以下代码编辑一个6乘6的图形来表示放置在其中的船只。
top_left_grid= input(.....)
orientation = input(please enter v or h for vertical or horizontal)
if top_left_grid == 1
if orientation == 'v'
% write code to make changes on figure
else
%write code to make changes on figure
end
end
现在,有时当输入特定的左上角网格和方向时,船只将出界,例如,当选择网格6和h时,船只将会出界。
那么我如何让程序允许用户在输入6和h后再次尝试。
我在尝试
if top_left_grid == 6
if orientation == 'v'
% write code to make changes on figure
while
else
top_left_grid= input('try again')
end
end
end
但没有这样的工作,所以任何关于我可以做什么的建议
您可以使用;标志";实现这种"尝试直到成功"的逻辑,例如
validChoice = false; % set flag up front, false so we enter the loop at least once
while ~validChoice
top_left_grid = input('Enter top-left grid square number','s');
top_left_grid = str2double( top_left_grid );
orientation = input('Enter v or h for vertical or horizontal','s');
if (top_left_grid==6 && strcmpi(orientation,'h'))
% This is invalid
disp( 'Invalid choice, cannot fit ship in chosen location, try again...' );
else
% Input is OK, set the flag to true so the loop exits
validChoice = true;
end
end
% To get this far there must be a valid choice
% Do whatever you want with "top_left_grid" and "orientation" now...
您可以在内部if-elseif-else
块中包含额外的有效性测试。