游戏逻辑
1.随机布置炸弹
2.选中一个位置显示该位置周围八个方格的炸弹数目总和
3.当判断某个位置为炸弹可以标记 如果所有炸弹都被标记则游戏结束
4.当被炸弹炸到游戏结束
5.选中位置周围都没有炸弹时候进行扩张,扩张出来周围所有没有炸弹的位置。
游戏组成
main.c
游戏入口
#define _CRT_SECURE_NO_WARNINGS 1
#include"game.h"
int main()
{
startgame();
return 0;
}
game.c
函数名
#define _CRT_SECURE_NO_WARNINGS 1
#include"game.h"
int num = 0;
int arr[ROWS][COLS] = { 0 };
/*游戏菜单*/
void menu()
/*字符数组初始化*/
void Initboard(char board[ROWS][COLS])
/*数组初始化*/
void Initmine(int mine[ROWS][COLS])
/*打印棋盘*/
void printboard(char board[ROWS][COLS], int row, int col)
/*打印棋盘*/
void printboard2(int board[ROWS][COLS], int row, int col)
/*布置雷*/
void setboom(int mine[ROWS][COLS])
/*检查棋已满*/
int screenboard(char board[ROWS][COLS], int row, int col)//检查棋盘是否已满
/*计算雷数目*/
int fac(int mine[ROWS][COLS],int x,int y)
/*扩张函数*/
int fac2(char board[ROWS][COLS],int mine[ROWS][COLS], int arr[ROWS][COLS],int x, int y)
/*雷位显示函数*/
int fac3(char board[ROWS][COLS], int mine[ROWS][COLS],int row,int col)
/*排查雷*/
int findboom(char board[ROWS][COLS], int mine[ROWS][COLS], int row, int col)
/*游戏主体*/
void game(char board[ROWS][COLS], int mine[ROWS][COLS], int row, int col)
/*游戏逻辑*/
void menu2(char board[ROWS][COLS], int mine[ROWS][COLS])
/*调用主体*/
void startgame()
布置雷
void setboom(int mine[ROWS][COLS])
{
int x = 0;
int y = 0;
int i = 0;
for (i = 1; i <= BNUM; i++)
{
x = rand() % (ROW);
y = rand() % (COL);
if ((mine[x][y] == 0)&&(x>=1&&x<=ROW) && (y>= 1 && y <= ROW))
{
mine[x][y] = 1;
}
else
i--;
}
}
扩张函数
int fac2(char board[ROWS][COLS],int mine[ROWS][COLS], int arr[ROWS][COLS],int x, int y)
{
int temp = 0;
arr[x][y] = 1;
if ((fac(mine, x+1, y ) == 0)&&(arr[x+1][y]!