我用 do.while 做了一个循环,试图让游戏的变化轮流发生。现在,我想在两个数组中的任何一个变为 0 时停止它,并显示获胜者。这是一款战舰游戏。
do{ for(int k;toc=1;k++){
objec1();
if(toc!=1)
break;
}
for(int k;toc2=1;k++){
objec2();
if(toc2!=1){
break;
}
}
if(jug1[i][j]==0){ //Here is where the loop must stop
correct1=true;
cout<<"\n\tEl The player 2 is the winner\n";
}
if(jug2[i][j]==0){
correct1=true;
cout<<"\n\tPlayer 1 is the winner \n";
}
} while(!correct1);
按照我的代码,它不会在必须时停止循环。现在,我想检查当数组为 0 时是否停止循环,更改标志并显示获胜者。原始代码更广泛。认为一切都已正确初始化。
最佳答案
首先,我认为如果您修复格式、将内容分解为函数并使用更好的变量名,您会更容易解决问题。目前很难阅读和理解。
其次,您所说的操作非常昂贵。如果能避免这样检查就更好了。例如,维护非零条目的计数,并将其用作检查条件。或者,如果您有关于哪些战列舰在场的信息,只需查看它们何时都已离开。
无论如何,这里有一个函数可以找出“[二维]数组何时充满0”。您可以从另一个函数调用它。
/**
* array is a 2-d array used by Battleship game
* i is the outer array size
* j is the inner array size
*/
bool isAllZeros(int **array, int i, int j) {
for (int m = 0; m < i; m++) {
for (int n = 0; n < j; n++) {
if (0 != array[i][j]) {
return false;
}
}
}
return true;
}
关于c++ - 将二维数组与 0 进行比较 (c++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34824230/