【C语言】扫雷【附源码】

04-10 1898阅读

欢迎来到英杰社区【C语言】扫雷【附源码】https://bbs.csdn.net/topics/617804998

一、扫雷游戏规则

【C语言】扫雷【附源码】

       尽快找到雷区中的所有不是地雷的格子,而不许踩到地雷。点开的数字是几,则说明该数字旁边的8个位置中有几个雷,如果挖开的是地雷,则会输掉游戏。

二、代码思路:

  • 宏定义:

    • Row 和 Col 定义了棋盘的行数和列数。
    • Rows 和 Cols 分别定义了棋盘数组的行数和列数,多出来的两行两列是为了在棋盘的四周留出空白区域。
    • EASY 定义了简单难度下的地雷数量。
    • 函数原型:

      • InitBoard():初始化棋盘函数原型,用于在程序的其他地方实现初始化棋盘的功能。
      • DisplayBoard():打印棋盘函数原型,用于在程序的其他地方实现打印棋盘的功能。
      • SetMine():布置地雷函数原型,用于在程序的其他地方实现布置地雷的功能。
      • FindMine():找地雷函数原型,用于在程序的其他地方实现找地雷的功能。
      • 菜单函数 menu():

        •  这个函数用于显示游戏的菜单界面,提供了两个选项:开始游戏和退出游戏。 
          void menu() {
          	printf("*****************************\n");
          	printf("*****************************\n");
          	printf("***********1.play************\n");
          	printf("***********0.exit************\n");
          	printf("*****************************\n");
          	printf("*****************************\n");
          	printf("*****************************\n");
          }

          【C语言】扫雷【附源码】

        • 主函数 main():

          • 在 main() 函数中,首先声明了一个整型变量 input,用于接收用户的输入选项。
          • 进入一个 do-while 循环,这个循环会一直执行,直到用户选择退出游戏(输入 0)。
          • 在循环内部,首先调用 menu() 函数显示菜单界面,然后通过 scanf() 函数获取用户的选择,并存储在 input 变量中。
          • 使用 switch 语句根据用户的选择执行相应的操作:
            • 如果用户选择 1,则调用 game() 函数开始游戏。
            • 如果用户选择 0,则打印消息表示退出游戏。
            • 如果用户输入其他数字,则提示用户重新选择。
          • 循环条件是 input != 0,即只要用户不选择退出游戏,就会一直循环显示菜单。
            int main()
            {
            	srand((unsigned int)time(NULL));
            	int input = 0;
            	do {
            		menu();
            		printf("请选择:");
            		scanf("%d", &input);
            		switch (input) {
            		case 1:
            			game();
            			break;
            		case 0:
            			printf("退出游戏");
            			break;
            		default:
            			printf("输入错误请重新输入");
            			break;
            		}
            	} while (input);
            	return 0;
            }

            【C语言】扫雷【附源码】

          • 游戏函数 game():

            • 这个函数负责实现扫雷游戏的核心逻辑。
            • 首先声明了两个二维字符数组 mine 和 show,用于存储扫雷棋盘的地雷分布情况和显示给玩家的棋盘情况。
            • 调用 InitBoard() 函数初始化两个棋盘。
            • 调用 SetMine() 函数设置地雷的位置。
            • 调用 DisplayBoard() 函数显示初始的棋盘给玩家。
            • 最后调用 FindMine() 函数开始游戏,排查地雷并更新显示给玩家的棋盘。
              void game() {
              	char mine[Rows][Cols];
              	char show[Rows][Cols];
              	InitBoard(mine, Rows, Cols, '0');
              	InitBoard(show, Rows, Cols, '*');
              	DisplayBoard(mine, Row, Col);
              	DisplayBoard(show, Row, Col);
              	SetMine(mine, Row, Col);
              	//DisplayBoard(mine, Row, Col);
              	FindMine(mine, show, Row, Col);
              }
            • InitBoard() 函数:
              • 用于初始化棋盘,将棋盘的每个格子都设置为指定的字符 set。
              • 参数 rows 和 cols 分别表示棋盘的行数和列数。
                void InitBoard(char board[Rows][Cols], int rows, int cols, char set) {
                	int i = 0;
                	int j = 0;
                	for (i = 0; i  
                 
                
                • DisplayBoard() 函数:

                  1. 用于显示棋盘的当前状态,包括地雷和已经排查的区域。
                  2. 打印出棋盘的行号和列号,以及对应位置的字符。
                  3. 参数 row 和 col 表示棋盘的行数和列数。
                  void DisplayBoard(char board[Rows][Cols], int row, int col) {
                  	int i = 0;
                  	int j = 0;
                  	printf("----------  扫雷 -----------\n");
                  	for (i = 0; i 
VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]