作者前言
✨✨✨✨✨✨
作者介绍:
作者id:老秦包你会,
简单介绍:
喜欢学习C语言和python等编程语言,是一位爱分享的博主,有兴趣的小可爱可以来互讨
个人主页::小小页面
gitee页面:秦大大
一个爱分享的小博主 欢迎小可爱们前来借鉴
_______________________________________________________
______________________________________________________________________
目录
扫雷
分析
代码
——————————————————————————————————————
扫雷
如上图,玩扫雷的原理就是避开雷找出所有的雷就胜利,废话不多说,我们直接开始扫雷分析
分析
俗话说的好,玩游戏第一步进入游戏,我们就写出一个游戏菜单出来,让玩家选择
void meun(){printf("*********扫雷 ********\n");printf("************************************\n");printf("********* 0.exit********\n");printf("********* 1.paly********\n");printf("************************************\n");}
下面我们要写一个框架,选择玩或者不玩,
int input;srand((unsigned)time(NULL));do{meun();printf("进入扫雷界面,请选择>");scanf("%d", &input);switch (input){case 0:printf("退出游戏\n");break;case 1:printf("开始游戏\n");game();break;default :printf("输入不符合规定,请重新输入\n");break;}
下面我们就要开始写扫雷的内容了,首先扫雷我们要给出扫雷的游戏画面,在这个过程中我们可以创建两个数组,一个用于计算,一个用于显示
左边是计算,右边是显示 然后我们就要设计一下输出的界面,要玩家有好的体验
void initialization(char mine[ROWS][COLS], int rows, int cols, char str){int i = 0;for (i = 0; i < rows; i++){int j = 0;for (j = 0; j < cols; j++){mine[i][j] = str;}}}
void Carving(char mine[ROWS][COLS], int row, int col){int i = 0;for (i = 0; i <= row; i++){printf("%d ", i);}printf("\n");printf("--------------------\n");for (i = 1; i <= row; i++){printf("%d|", i);int j = 0;for (j = 1; j <= col; j++){printf("%c ", mine[i][j]);}printf("\n");}}
然后我们就要布置雷了,雷的设计要随机可以使用rand(),记得设计出源点srand((unsigned)time(NULL))
代码如下:
void Production(char mine[ROWS][COLS], int row, int col){int count = Count;while (count){int x = ((rand() % (row)) + 1);int y = ((rand() % (col)) + 1);if (mine[x][y] == '0'){mine[x][y] = '1';count--;}}}
下面我们就要模拟玩家扫雷了,玩家扫雷要输入坐标, 然后判断是否踩到雷或者已经排查过了,如果没有就要统计周边雷的个数,然后反馈给显示数组,最后判断是否排除完全部雷了,
void paly_mine(char mine[ROWS][COLS], char show_mine[ROWS][COLS], int row, int col){int count = 0;int x = 0;int y = 0;while (1){printf("请玩家输入坐标:>");scanf("%d %d", &x, &y);if (x >= 1 && x = 1 && y <= 9){if (mine[x][y] == '0'){mine[x][y] = ' ';count++;//统计周边的雷数int sum = 0;int i = x - 1;for (i = x - 1; i <= x + 1; i++){int j = y - 1;for (j = y - 1; j <= y + 1; j++){if (i != x && j != y)sum = sum + (mine[i][j] - '0');}}show_mine[x][y] = '0' + sum;printf("扫雷情况:\n");Carving(show_mine, ROW, COL);printf("\n");if (count == (row * col) - Count){printf("你胜利了\n");gotoaa;}}else if (mine[x][y] == '1'){printf("你被炸死了,游戏结束\n");break;}}else{printf("请重新输入,你输入的不符合规定\n");}}aa:;}
下面是全部代码:
扫雷.c
#include"扫雷.h"void meun(){printf("*********扫雷 ********\n");printf("************************************\n");printf("********* 0.exit********\n");printf("********* 1.paly********\n");printf("************************************\n");}int main(){int input;srand((unsigned)time(NULL));do{meun();printf("进入扫雷界面,请选择>");scanf("%d", &input);switch (input){case 0:printf("退出游戏\n");break;case 1:printf("开始游戏\n");game();break;default :printf("输入不符合规定,请重新输入\n");break;}} while (input);return 0;}
扫雷函数.c
#include"扫雷.h"void game(){char mine[ROWS][COLS];char show_mine[ROWS][COLS];//数组初始化initialization(mine, ROWS, COLS, '0');initialization(show_mine, ROWS, COLS, '*');//布置雷Production(mine, ROW, COL);//雕刻扫雷棋盘Carving(mine, ROW, COL);printf("\n");Carving(show_mine, ROW, COL);//玩家扫雷paly_mine(mine, show_mine, ROW, COL);/*printf("%p", &mine);printf("%p", &show_mine);*/}void initialization(char mine[ROWS][COLS], int rows, int cols, char str){int i = 0;for (i = 0; i < rows; i++){int j = 0;for (j = 0; j < cols; j++){mine[i][j] = str;}}}void Carving(char mine[ROWS][COLS], int row, int col){int i = 0;for (i = 0; i <= row; i++){printf("%d ", i);}printf("\n");printf("--------------------\n");for (i = 1; i <= row; i++){printf("%d|", i);int j = 0;for (j = 1; j ");scanf("%d %d", &x, &y);if (x >= 1 && x = 1 && y <= 9){if (mine[x][y] == '0'){mine[x][y] = ' ';count++;//统计周边的雷数int sum = 0;int i = x - 1;for (i = x - 1; i <= x + 1; i++){int j = y - 1;for (j = y - 1; j <= y + 1; j++){if (i != x && j != y)sum = sum + (mine[i][j] - '0');}}show_mine[x][y] = '0' + sum;printf("扫雷情况:\n");Carving(show_mine, ROW, COL);printf("\n");if (count == (row * col) - Count){printf("你胜利了\n");gotoaa;}}else if (mine[x][y] == '1'){printf("你被炸死了,游戏结束\n");break;}}else{printf("请重新输入,你输入的不符合规定\n");}}aa:;}
扫雷.h
#include#include#include#define ROW 9#define COL 9#define ROWS ROW + 2#define COLS COL + 2#define Count 10//void game(void);//初始化void initialization(char mine[ROWS][COLS], int row, int col, char str);//打印棋盘void Carving(char mine[ROWS][COLS], int row, int col);//布置雷void Production(char mine[ROWS][COLS], int row, int col);//玩家扫雷vo
总结:
扫雷代码就在这里了,这个代码还可以进一步改进,但是由于时间原因,其他功能没写,有不懂的小可啊可以私聊我