How can I loop an if statement
显示 更早的评论
Im designing a game of battleship and I have the following code to prevent ships from overlapping.
x=zeros(1,36);
startingGrid=input('...')
orientation('..')
if orientation=='h'
while x(3)==1
startingGrid=input('... ');
orientation = input('... ');
end
elseif orientation=='v'
while x(4)==1
startingGrid=input('... ');
orientation = input('... ');
end
end
Now this works fine but whenever I enter one of the letters so for example 'h' (and it overlaps) then try again and enter 'v' it then continues with the program even if it overlaps so how can I make it work every time.
3 个评论
Geoff Hayes
2022-1-7
@Tariq Hammoudeh - how, from the above code, do you determine an overlap? Also, when comparing strings, instead of using == which can lead to errors (if strings on either side of equality or of different size), use strcmp or strcmpi.
Walter Roberson
2022-1-7
Your while loop does not update the variable you are testing to see if the loop should continue.
Tariq Hammoudeh
2022-1-7
编辑:Tariq Hammoudeh
2022-1-7
回答(1 个)
Daksh
2022-12-19
0 个投票
It is my understanding that in your scenario, you want the entire checking loop to restart if orientation is "h" but there is an overlap. I also understand that you don't face this issue with orientation "v" as it comes later in the lines and in the next loop iteration it again checks from "h".
For such a scenario, you can use the "continue" keyword in loop to go through the entire checking process again rather than heading to the next orientation. Kindly refer to the following pseudocode:
while (loop)
take inputs
if orientation=='h'
if overlap happens
continue;
end
end
if orientation=='v'
if overlap happens
continue;
end
end
end
Hope it helps!
类别
在 帮助中心 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!