for (int x = 0; x <= battleField.getCols(); x++){
for (int y = 0; y <= battleField.getRows(); y++){
if ((battleField.get(x,y) == team) && ((x + y)
!= battleField.get(row, col)))
{
.
.
.
}
}
}
battleField.get(row,col)将返回我在网格上的位置现在我的问题是如何跳过我的自我检查我的位置?因为当for循环检查x和y时,它会遍历整个网格。我该怎么办?
答案 0 :(得分:1)
假设您当前位置的变量名为current_x
和current_y
,那么您可以在循环中执行类似的操作......
bool isMyPosition = (x == current_x) && (y == current_y);
if ( !isMyPosition
&& (battleField.get(x,y) == team)
&& ((x + y) != battleField.get(row, col)))
{
...
}
答案 1 :(得分:0)
而不是
((x + y) != battleField.get(row, col))
我想你想要
(x != row && y != col)
如果您确实想要第一部分,可以将其添加到内部for循环的开头:
for (int x = 0; x <= battleField.getCols(); x++){
for (int y = 0; y <= battleField.getRows(); y++){
if(x == row && y == col) // This will check if the loop is looking at your position
continue; // This will go to the next step in the "y" for loop, essentially skipping the rest of the code in this block
if ((battleField.get(x,y) == team) && ((x + y)
!= battleField.get(row, col)))
{
.
.
.
}
}
}
答案 2 :(得分:0)
如果(Question.IsAbout(EscapingOnCheck))
大多数语言都有某种continue
可用于在满足条件时转义循环。
否则
将当前位置保存在某些变量中,并添加另一个嵌套循环(为了调试)或添加&amp;&amp;条款(代码较少)