前言
扫雷实现的基本规划:
- 玩家可以自由选择进入和退出游戏
- 玩家通过输入坐标来排雷
- 排查雷给出提示
- 玩家可以任意标记雷区
- 排雷同时展开非雷区
下面为效果图:
一、主函数(test.c):
通过do while嵌套switch对游戏菜单进行控制:
- 玩游戏输入1:进入case1开始游戏。
- 输入2:进入case2退出游戏 。
- 输入错误:进入default,进入下一次循环重新输入。
- 菜单给出标记操作提示。
#include "game.h"
void menu()//游戏菜单
{
printf("**********************************\n");
printf("******* 扫雷游戏 ********\n");
printf("******* 1.play ********\n");
printf("******* 2.exit ********\n");
printf("*******tip1:坐标输入 0 0 ********\n");
printf("******* 进行标记操作 ********\n");
printf("*******tip2:坐标输入 0 1 ********\n");
printf("******* 取消标记操作 ********\n");
printf("**********************************\n");
}
void game()
{
//定义两个棋盘,mine里面雷图,'*'为雷,' '为非雷
//show里面-为未排雷区域,数字为周围有几颗雷
//空格区域表示安全区域,周围没有雷
char mine[ROWS][COLS] = {
0 };
char show[ROWS][COLS] = {
0 };
//初始化棋盘
init_board(mine, ROWS, COLS, ' ');
init_board(show, ROWS, COLS, '-');
//布置雷
set_mine(mine, ROW, COL);
Display_board(show, ROW, COL);//打印棋盘
//排查雷
find_mine(mine, show, ROW, COL);
}
int main()
{
int input = 0;
srand((unsigned int)time(NULL));
do
{
menu();
printf("请选择:>");
scanf("%d", &input);
switch (input)
{
case 1:
printf("开始游戏\n");
game();
break;
case 2:
printf("游戏结束\n");
break;
default:
printf("输入错误,请重新输入\n");
}
} while (input != 2);
return 0;
}
二、头文件及定义(game.h):
- 行数、列数、雷数可随时更改
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define ROW 9 //定义行数为9
#define COL 9 //定义列数为9
#define EASY_COUNT 10 //简单定义一下雷数
#define ROWS ROW+2
#