这次是写一个扫雷的小游戏,可实现周围没雷时展开和第一次排雷不被炸死(防止欧皇直接暴毙!)。
首先我们先梳理代码思路:
1、既然要展示和布雷,所以我们需要2个二维数组,一个用来展示给观众,一个显示雷利于我们编程,我们将雷数组初始化为 0 ,将展示的数组初始化为 * ,保持神秘~
2、我们需要将雷布置到雷数组中去,当然是随机布置;
3、我们还需要一个安全函数,就是当第一次排雷的时候不被炸死;(就是如果第一次排的是雷,就将此位置的雷转移)
4、排雷的过程,包括了如何展开,还有表明旁边有几颗雷;
1、初始化数组(mine和show),而且为了边上的坐标也能排雷,所以需要建的数组要比棋盘多两行两列。然后就是初始化数组(mine初始化为字符0,show初始化为 *)
void InitBoard(char board[ROWS][COLS], int rows, int cols, char set)
{
int i = 0;
int j = 0;
for (i = 0; i < rows; i++)
{
for (j = 0; j < cols; j++)
{
board[i][j] = set;
}
}
}
2、打印数组,当然要都打印出来以便我们测试(为了排雷方便,我们给数组加上了序号)
void DisplayBoard(char board[ROWS][COLS], int row, int col)
{
int i = 0;
int j = 0;
printf("----------------------------------\n");
for (i = 0; i <= col; i++)
{
printf("%d ", i);
}
printf("\n");
for (i = 1; i <= row; i++)
{
printf("%d ", i);
for (j = 1; j <= col; j++)
{
printf("%c ", board[i][j]);
}
printf("\n");
}
printf("----------------------------------\n");
}
3、将雷布置到 mine数组中去,这里我们需要用到随机数,我们用的是rand()这个函数来产生随机数,当然范围要控制在数组范围中
void SetMine(char mine[ROWS][COLS], int row, int col)
{
int x = 0;
int y = 0