贝蒂快扫雷~(C语言)

2024-02-26 1211阅读

温馨提示:这篇文章已超过391天没有更新,请注意相关的内容是否还可用!

  贝蒂快扫雷~(C语言)

✨✨ 欢迎大家来到贝蒂大讲堂✨✨

🎈🎈养成好习惯,先赞后看哦~🎈🎈

所属专栏:C语言学习

贝蒂的主页:Betty‘s blog


引言:

          扫雷相信大家小时候到玩过吧,那我们通过目前已学的知识,自己实现一个扫雷小游戏呢,答案自然是肯定的。

         本章你可能会用到的知识:

         1. 数组的使用:小小数组,给贝蒂坐下

         2. 随机数的生成:贝蒂的捣蛋小游戏

1. 游戏要求 

1. 玩家可以通过菜单选择玩游戏和退出游戏。

2. 默认棋盘为9×9的格子。

3. 默认雷的个数为10。

4可以排查雷

 (1) 如果位置不是雷,就显⽰周围有⼏个雷,并且循环展开。

 (2)如果位置是雷,就炸死游戏结束

 (3)把除10个雷之外的所有⾮雷都找出来,排雷成功,游戏结束

 (4)玩家可以对认为是雷的位置进行可能是雷或肯定是雷的标记。 

2. 游戏分析

1. 我们要在9×9的棋盘上操作,自然使用数组模拟,并且我们先假设0代表无雷,1代表雷

2. 玩家选择一个格子排查,如果没雷,将显示周围八个格子雷的个数。

贝蒂快扫雷~(C语言)

   

  • 为了解决可能得数组越界问题,所以尝试在外围增加“一圈”。

    贝蒂快扫雷~(C语言)

    1. 但是我们不可能把这个棋盘布置的信息给玩家看,所以要创建两个数组,一个数组(mine)负责布置雷的信息,一个数组(show)负责展现给玩家看。

    2. 如果玩家排查的位置没有雷,我们将显示周围雷的个数,为了不与布置雷的信息冲突,所以将无雷改为‘0’,有雷改为‘1’。

    3. 玩家棋盘初始全为‘*’,代表未排查。

    贝蒂快扫雷~(C语言)

    贝蒂快扫雷~(C语言)

    3. 多文件操作

             为了方便代码的管理和保证游戏实现逻辑的清晰性,我们将采用多文件管理的模式。

            (1)创建头文件game.h,包含所有头文件(其他源文件只需引用它即可),以及所有游戏功能的展现。

            (2)创建源文件game.c,负责所有功能的具体代码实现。

            (3)创建源文件main.c,负责展现游戏实现的总体逻辑。

    4.  简易菜单的实现

      4.1功能

    1.玩家可以通过选择1进入游戏,0退出游戏。

    2.选错的话提醒玩家,重新选择。

      4.2代码实现 

        为了完成这些目标,我们可以简单的do-while,switch结构实现。

         代码如下:

    void menu()
    {
    	printf("****************************\n");
    	printf("*******    1. play    ******\n");
    	printf("*******    0. exit    ******\n");
    	printf("****************************\n");
    }
    int main()
    {
    	int input = 0;
    	srand((unsigned int)time(NULL));//设置时间种子
    	do
    	{
    		menu();//简易菜单的实现
    		printf("请选择:>");
    		scanf("%d", &input);
    		switch (input)
    		{
    		case 1:
    			system("cls");//清空屏幕,头文件
    			game();
    			break;
    		case 0:
    			printf("退出游戏\n");
    			break;
    		default:
    			printf("选择错误,重新选择\n");
    			break;
    		}
    	} while (input);//选0结束游戏
    	return 0;
    }

    5. 游戏功能实现

      5.1 预定义信息

    #define ROW 9//棋盘的行
    #define COL 9//棋盘的列
    #define ROWS ROW+2//扩展后的行
    #define COLS COL+2//扩展后的列
    #define MINES 10//雷的个数
    #include
    #include
    #include

      5.2 初始化棋盘

       (1)要求

    1. mine棋盘初始化为全‘0’。

    2. show棋盘初始化为全‘1’。

        (2)实现
    void InitBoard(char board[ROWS][COLS], int rows ,int cols, char set)
    {
    	int i = 0;
    	for (i = 0; i  
    

    贝蒂说:“因为在game.c中实现游戏的具体功能,所以千万不要忘了在game.h中声明哦~”

     5.3 打印棋盘

        (1)要求

    1. 打印出棋盘中的元素。

    2. 利用---,|模拟出棋盘框。

    3. 显示出每行,每列的序号。

        (2)实现 
    void DisplayBoard(char board[ROWS][COLS], int row, int col)
    {
        printf("-----------------扫雷游戏----------------\n");
        for (int i = 0; i = 1 && x = 1 && y 
VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]