所以我需要编写一个像扫雷一样创建网格的程序,然后输入你想要的地雷数量,然后输入地雷的位置。到目前为止,我的计划似乎工作正常,直到我决定将矿井放在与另一矿井相同的一排。当我在同一排放置第二个矿井时,应该与矿井相邻的数字显示与其相邻的矿井数量并不总是有效。这是我正在谈论的图片:
似乎这些数字从网格的最右侧延伸到左侧 - (我认为这就是为什么有一个单独的“1”与一个地雷不相邻的原因网格的左边)?
这是我的代码看起来像这个扫雷程序
#include <stdio.h>
int main(void)
{
int N;
int M;
int W;
int x;
int y;
printf("Enter your rows and columns: ");
scanf("%d", &N);
scanf("%d", &M);
int grid[N][M];
int i;
int j;
for( i = 0; i<N; i++)
{
for (j = 0; j < M; j++) {
grid[i][j] = 0;
}
}
printf("enter number of mines");
scanf("%d", &W);
for(i=0; i<W; i++)
{
printf("enter location of mines");
scanf("%d", &x);
scanf("%d", &y);
grid[x][y]=-100;
if(x>0 && y>0)
grid[x-1][y-1]++;
if(x>0)
grid[x-1][y]++;
if(x>0 && y+1<M)
grid[x-1][y+1]++;
if(y>0)
grid[x][y+1]++;
if(y+1<M)
grid[x][y-1]++;
if(x+1<N && y>0)
grid[x+1][y-1]++;
if(x+1<N )
grid[x+1][y]++;
if(x+1<N && y+1<M)
grid[x+1][y+1]++;
}
for(i = 0;i<N;i++)
{
for(j =0;j<M;j++)
{
if(grid[i][j]<0)
printf("* ");
else
printf("%d ",grid[i][j]);
}
printf("\n");
}
return 0;
}