我正在尝试用c ++制作战舰游戏。我正在做的是试图建立船舶位置的起点和终点,然后程序将填补空白以完成船舶。 int size
部分是告诉程序哪艘船在那里。例如。小型,中型或大型船舶。由于某种原因,我不明白为什么这不会工作
int fill(int arr[10][10], int x1, int y1, int x2, int y2, int size){
if(x1 == x2){
if(y1 > y2){
for(int i = y2; i < y1; i++){arr[x1][i] = size;}
}
else{
for(int i = y1; i <= y2; i++){arr[x1][i] = size;}
}
}
else if(y1 == y2){
if(x1 > x2){
for(int i = x2; i < x1; i++){arr[y1][i] = size;}
}
else{for(int i = x1; i <= x2; i++){arr[y1][i] = size;}}
}
return arr;
}
当我传递变量x1 = 4, y1 = 4, x2 = 6, y2 = 4, size = 3
时,它不会填补间隙,开始/结束点之间的空间仍为空。
我的完整代码可以在这里找到:https://repl.it/@SakshamGoyal/project 它仍然是一项正在进行中的工作,因此会有很多冗余代码
答案 0 :(得分:0)
如果只需要填写数组,则可以创建方法void
的返回类型。除此之外,你的代码没问题:
void fill(int arr[10][10], int x1, int y1, int x2, int y2, int size) {
if (x1 == x2) {
if (y1 > y2) {
for (int i = y2; i < y1; i++) {
arr[x1][i] = size;
}
} else {
for (int i = y1; i <= y2; i++) {
arr[x1][i] = size;
}
}
} else if (y1 == y2) {
if (x1 > x2) {
for (int i = x2; i < x1; i++) {
arr[y1][i] = size;
}
} else {
for (int i = x1; i <= x2; i++) {
arr[y1][i] = size;
}
}
}
}
void fillZero(int a[10][10]) {
for (int i = 0; i < 10; i++)
for (int j = 0; j < 10; j++)
a[i][j] = 0;
}
int main() {
int a[10][10];
fillZero(a);
fill(a, 2, 1, 5, 1, 2);
// Print array:
for (auto &i : a) {
for (int j : i)
cout << j << " ";
cout << endl;
}
}