C语言---扫雷游戏的实现
1.扫雷游戏的分析和设计
需要创建3个文件夹
(图片来源网络,侵删)
test.c----扫雷游戏的测试
game.c----扫雷游戏的实现
game.h----扫雷游戏的实现
雷的信息使用二维数组存放
• 使⽤控制台实现经典的扫雷游戏
• 游戏可以通过菜单实现继续玩或者退出游戏
• 扫雷的棋盘是9*9的格⼦
• 默认随机布置10个雷
• 可以排查雷
◦ 如果位置不是雷,就显⽰周围有⼏个雷 ◦ 如果位置是雷,就炸死游戏结束 ◦ 把除10个雷之外的所有⾮雷都找出来,排雷成功,游戏结束
扫雷的过程中,布置的雷和排查出的雷的信息都需要存储,所以我们需要⼀定的数据结构来存储这些信息
创建两个数组,一个存放雷,1是雷,0不是雷
第二个数组就存放排查出的雷的信息,避免太过混乱,
越界访问会导致程序崩溃
把存放雷的数组扩大一圈,防止越界,上下左右多一行和列,
1.使用两个二维数组来实现
2.如果棋盘的大小是99,数组的大小就给1111
因为要扩大一圈后的大小就是11*11
3.数组使用字符数组就行
2.扫雷游戏的代码实现
game.h
#pragma once #include //直接把头文件放在.h文件里面 #include #include #pragma once #define ROW 9//行 #define COL 9//列 #define ROWS ROW+2//11 #define COLS COL+2 #define EASY_count 10//简单版本设置的雷为10 //初始化棋盘 void InitBoard(char board[ROWS][COLS], int rows, int cols, char set);//11 //打印棋盘 void DisplayBoard(char board[ROWS][COLS], int row, int col);//9 //布置雷 void SetMine(char mine[ROWS][COLS], int row, int col); //排查雷 void FindMine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col);
test.c
#define _CRT_SECURE_NO_WARNINGS 1
#include "game.h"//包含自己的头文件,就能引用game.h中自己定义的一些条件
void menu()
{
//打印菜单
printf("**********************************************\n");
printf("*************** 1 . play ***************\n");
printf("*************** 0 . exit ***************\n");
printf("**********************************************\n");
}
void game()
{
//游戏逻辑 11 * 11
char mine[ROWS][COLS] = {0};//存放雷的信息
char show[ROWS][COLS] = {0};//存放排查出的雷的信息
//初始化棋盘,初始化的是11*11的规格,因为最外面的外围要保证咱们得程序不越界
InitBoard(mine,ROWS,COLS,'0');//把11行11列传过去
InitBoard(show, ROWS, COLS,'*');
//打印棋盘,就只打印9*9的部分
DisplayBoard(show, ROW, COL);
//DisplayBoard(mine, ROW, COL);测试一下
//布置雷,只在9*9的部分布置雷
SetMine(mine, ROW, COL);//把雷放到mine数组内,因为mine数组就是存放雷的信息的数组
//DisplayBoard(mine, ROW, COL);
//排查雷,在9*9的部分排查雷
FindMine(mine,show,ROW,COL);
}
void test()
{
int input = 0;//这个变量必须放外面,如果放里面的话,
//每次循环进行就会将input重新赋值为0
srand((unsigned int)time(NULL));//要包含头文件,使rand产生随机值,就是产生随机的雷
do
{
menu();//打印菜单
printf("请选择:");
scanf("%d",&input);
//判断输入的值
switch (input)
{
case 1:
game();//输入1之后进入游戏
printf("扫雷\n");
break;
case 0:
printf("退出游戏\n");
break;
default://输入错误
printf("选择错误,重新选择\n");
break;
}
}while (input);//一直玩的情况,玩完一把接着玩,输入input,是1就接着玩
}
int main()
{
test();
return 0;
}
game.c
#define _CRT_SECURE_NO_WARNINGS 1
#include "game.h"//包含自己的头文件
//初始化棋盘,规格是11*11
void InitBoard(char board[ROWS][COLS], int rows, int cols,char set)
{
for (int i = 0; i
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!
