运用二维数组生成扫雷游戏地图
要求:a,定义10*10的数组,把所有元素初始化为0
b,随机生成10个雷,不能重复(一定要有10个) -1表示雷
c,把以雷为中心的九宫格所有元素加1(雷除外)
d,输出数组,观察是否正确
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define ROW 10
#define COL 10
#define LEI 10 //雷
int main()
{
srand((int)time(NULL));
int map[ROW][COL] = { 0 };
//随机10个1
for (int i = 0; i < LEI; )
{
int row = rand() % ROW;
int col = rand() % COL;
if (map[row][col] == 0)
{
map[row][col] = -1;
i++;
}
}
for (int i = 0; i < ROW; i++)
{
for (int j = 0; j < COL; j++)
{
//如果找到雷,把雷为中心的格子所有元素加1,雷不加
if (map[i][j] == -1)
{
for (int a = i - 1; a <= i + 1; a++)
{
for (int b = j - 1; b <= j + 1; b++)
{
if ((a >= 0 && a < ROW && b >= 0 && b < COL) && map[a][b] != -1)
{
map[a][b]++;
}
}
}
}
}
}
for (int i = 0; i < ROW; i++)
{
for (int j = 0; j < COL; j++)
{
if (map[i][j] == -1)
{
printf("☆");
}
else if (map[i][j] == 0)
{
printf("%2d", 0);
}
else
{
printf("%2d", map[i][j]);
}
}
printf("\n");
}
}