当前位置: 首页 > news >正文

用c语言实现简易c语言扫雷游戏

void test(void)
{int input = 0;do{menu();printf("请选择: >");scanf("%d", &input);switch (input){menu();case 1:printf("扫雷\n");game();break;case 2:printf("退出游戏\n");break;default:printf("输入错误,请重新输入");break;}} while (input);//0退出游戏}
int main(void)
{test();return 0;
}

 1、主函数及游戏开始结束的界面设计

void menu()
{printf("*************************\n");printf("*******  1:开始游戏      *******\n");printf("*******  0:退出游戏      *******\n");printf("*************************\n");}

2、菜单函数

void game()
{char mine[ROWS][COLS] = { 0 };//存雷char show[ROWS][COLS] = { 0 };//存放排查出的雷的信息//初始化棋盘   尽量设计成一样的InitBoard(mine,ROWS, COLS,'0');InitBoard(show,ROWS, COLS,'*');//调试时打印该表,玩的时候可以不打印//打印棋盘DisplayBoard(show, ROW, COL);//布置雷SetMine(mine, ROW, COL);DisplayBoard(mine, ROW, COL);//棋盘雷信息//排查雷FindMine(mine, show, ROW, COL);}

3、游戏模块

        头文件参数封装

#define ROW 9        //棋盘显示区域
#define COL 9#define ROWS ROW + 2//棋盘宽度
#define COLS COL + 2#define EASY_COUNT 20//雷的数量void InitBoard(char board[ROWS][COLS], int rows, int cols, char set);void DisplayBoard(char board[ROWS][COLS], int row, int col);//实际显示的棋盘区域void SetMine(char mine[ROWS][COLS],int row,int col);
void FindMine(char mine[ROWS][COLS], char show[ROWS][COLS],int row,int col);

        初始化棋盘   尽量设计成一样的

void InitBoard(char board[ROWS][COLS], int rows, int cols, char set)
{int i = 0;for (i = 0;i < rows;i++){int j = 0;for (j = 0;j < cols;j++){board[i][j] = set;}}
}

        打印棋盘

void DisplayBoard(char board[ROWS][COLS], int row, int col)//实际显示的棋盘区域
{int i = 0;for (i = 0;i <= col;i++){printf("%d ", i);//打印行列}printf("\n");for (i = 1;i <= row;i++){printf("%d ", i);int j = 0;for (j = 1;j <= col;j++){printf("%c ", board[i][j]);}printf("\n");}}

        布置雷

//布置雷是在棋盘上随机的找10个坐标
//x范围1~9
//y范围1~9
void SetMine(char mine[ROWS][COLS], int row, int col)
{ int count = EASY_COUNT;//80个雷int x = 0;int y = 0;srand((unsigned int)time(NULL));//随机数清空while (count){x = rand() % row + 1;//防止出界y = rand() % col + 1;if (mine[x][y] != '1'){mine[x][y] = '1';//判断是否有雷count--;}}
}

       

 排查雷

void FindMine(char mine[ROWS][COLS],char show[ROWS][COLS],int row,int col)
{int x = 0;int y = 0;int win = 1;while (1){printf("请输入要排查的坐标:");scanf("%d %d", &x, &y);if (x >= 1 && x <= row && y >= 1 && y <= col)//是雷{if (mine[x][y] == '1'){printf("很遗憾,你踩雷了,游戏结束\n");DisplayBoard(mine, ROW, COL);break;}else{int count = GetMineCount(mine, x, y);show[x][y] = count + '0';DisplayBoard(show, ROW, COL);}}else{printf("输入的坐标有误x(1~9),y(1~9) 请重新输入");}//游戏胜利if (win == row * col - EASY_COUNT){printf("恭喜你,排雷成功\n");break;}}
}
统计周围有几个雷

目录

 1、主函数及游戏开始结束的界面设计

2、菜单函数

3、游戏模块

        初始化棋盘   尽量设计成一样的

        打印棋盘

        布置雷

       

 排查雷

法2 统计周围有几个雷


int GetMineCount(char mine[ROWS][COLS], char x, char y)
{int i = 0;int count = 0;for(i = -1;i <= 1;i++){ int j = 0;for (j = -1;j <= 1;j++){count += mine[x + i][y + j] - '0';}}return count;
}

http://www.xdnf.cn/news/1050445.html

相关文章:

  • 解析Buildroot
  • html css js网页制作成品——HTML+CSS+js力学光学天文网页设计(4页)附源码
  • MySQL基础架构
  • 深度学习:PyTorch自动微分模块
  • 【CUDA GPU 支持安装全攻略】PyTorch 深度学习开发者指南
  • AI 社交和AI情绪价值的思考 -延申思考2 -全局记忆
  • MobaXterm首次连接Ubuntu失败
  • Rust语言典型并发模式小结
  • 【Dv3Admin】系统信号机制配置文件解析
  • Photoshop图层蒙版全介绍
  • Go实战项目OneX介绍(2/12):项目功能列表介绍
  • 【编程语言】从C++到Java到Golang,语法特性对比与开发实践指南(基础语法,类型系统,运行机制)
  • 多模态大语言模型arxiv论文略读(123)
  • Go语言--语法基础5--基本数据类型--输入输出(2)
  • GRPO训练布局感知的强化学习多模态文档解析框架-Infinity-Parser
  • HarmonyOSNext性能核弹:用Node-API引爆ArkTS/C++跨语言
  • 贝塞尔曲线的公式推导贝塞尔曲线的公式推导,和 SVG 中 Path 的贝塞尔曲线指令的理解记忆
  • 电感篇---常见作用
  • 2.SQL语句分类
  • css属性:图片使用filter属性使得position: fixed失效的情况
  • C语言状态机:从入门到精通
  • C++ lambda函数
  • 大数据实时风控引擎:Spark Streaming、Kafka、Flink与Doris的融合实践
  • pythonA股实时数据分析(进阶版)
  • 区间交集:区间选点
  • redis序列化
  • 以笔为剑,破茧成蝶
  • 华为云Flexus+DeepSeek征文 | 基于华为云ModelArts Studio平台与Cherry Studio搭建知识库问答助手
  • 手机SIM卡通话中随时插入录音语音片段(Android方案)
  • C++20 核心特性详解:现代C++的进化里程碑