当前位置: 首页 > 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;
}

相关文章:

  • 嵌入式硬件篇---常见电平标准
  • NJet Portal 应用门户管理介绍
  • 实时操作系统(FreeRTOS、RT-Thread)RISC-V
  • 基于SpringBoot和Leaflet的电影票房时序展示-以《哪吒2》为例
  • Django图片管理系统
  • 在idea上打包DolphinScheduler
  • VTK 显示大量点云数据及交互(点云拾取、着色、测量等)功能
  • SAP实施服务专家——哲讯科技,赋能企业智慧升级
  • RTDETRv2 pytorch 官方版自己数据集训练遇到的问题解决
  • SQL Server 2025 预览版发布:AI深度集成、开发者体验飞跃与混合云新篇章
  • Composer 的 PHP 依赖库提交教程
  • Linux安装LLaMA Factory
  • Python数字信号处理——利用块间系数相关性的DCT域鲁棒盲图像水印(PyQT5界面)
  • linux云计算学习第八周,第九周
  • sqli-labs靶场54-65关(次数限制,数据更新)
  • Python爬虫实战:研究Mr. Queue相关技术
  • 【图像处理入门】7. 特征描述子:从LBP到HOG的特征提取之道
  • 智能土木通 - 土木工程专业知识问答系统02-RAG检索模块搭建
  • 幂级数 (0,R); R ;(R,+oo)
  • 图数据库neo4j部分用法浅讲
  • vultr 宝塔安装wordpress/南宁seo做法哪家好
  • 怎么做自己网站的后台/网络域名怎么查
  • 网站有了订单邮箱提醒代码/外链系统
  • 残疾人网站服务平台/安新seo优化排名网站
  • 专门更新最新设计的网站/零基础学电脑培训班
  • 做移动网站多少钱/seo顾问是什么