【C语言】扫雷【附源码】
温馨提示:这篇文章已超过400天没有更新,请注意相关的内容是否还可用!
欢迎来到英杰社区
https://bbs.csdn.net/topics/617804998
一、扫雷游戏规则
尽快找到雷区中的所有不是地雷的格子,而不许踩到地雷。点开的数字是几,则说明该数字旁边的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"); } -
主函数 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; } -
游戏函数 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() 函数:
- 用于显示棋盘的当前状态,包括地雷和已经排查的区域。
- 打印出棋盘的行号和列号,以及对应位置的字符。
- 参数 row 和 col 表示棋盘的行数和列数。
void DisplayBoard(char board[Rows][Cols], int row, int col) { int i = 0; int j = 0; printf("---------- 扫雷 -----------\n"); for (i = 0; i
-
- 这个函数用于显示游戏的菜单界面,提供了两个选项:开始游戏和退出游戏。
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!



