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

用C语言写的一个扫雷小游戏

头文件

调用头文件和声明函数

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <time.h>
#include <stdlib.h>#define ROW 9
#define COL 9#define ROWS ROW+2
#define COLS COL+2#define EASY_CONT 10//声明函数
//初始化棋盘函数
void InitBoard(char board[ROWS][COLS], int rows, int cols, char mark);
//打印棋盘函数
void Displayboard(char board[ROWS][COLS], int rows, int cols);
//布置雷
void SetMine(char mine[ROWS][COLS],int row,int col);
//排雷
void FindMine(char mine[ROWS][COLS],char show[ROWS][COLS],int row,int col);

游戏主体

#include "game.h"//初始化棋盘
void InitBoard(char board[ROWS][COLS], int rows, int cols, char mark)
{for (int i = 0; i < rows; i++){for(int j = 0; j < cols; j++){board[i][j] = mark;}}
}//打印棋盘
void Displayboard(char board[ROWS][COLS], int row, int col)
{printf("--------------扫雷游戏---------------\n");for (int i = 0; i <= row; i++){printf("%d ",i);}printf(" \n");for (int i = 1; i <= row; i++){printf("%d ",i);for (int j = 1; j <= col; j++){printf("%c ",board[i][j]);}printf(" \n");}printf("--------------扫雷游戏---------------\n");
}//布置雷
void SetMine(char mine[ROWS][COLS], int row, int col)
{int cont = EASY_CONT;while (cont){int x = rand() % 9 + 1;int y = rand() % 9 + 1;if (mine[x][y] == '0'){mine[x][y] = '1';cont--;}}
}//计算雷的个数
int GetMineCount(char mine[ROWS][COLS], int x, int y)
{return (mine[x - 1][y - 1] + mine[x - 1][y] + mine[x - 1][y + 1] +mine[x][y - 1] + mine[x][y + 1] +mine[x + 1][y - 1] + mine[x + 1][y] + mine[x + 1][y + 1] - 8 * '0');
}//排雷
void FindMine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col)
{int x = 0, y = 0;int win = 0;while (win<row*col-EASY_CONT){printf("请输入扫描坐标:");scanf("%d %d", &x, &y);if (x >=1 && x<= row && y >= 1 && y <= col){if (mine[x][y] == '1'){printf("GAME OVER~~~~~\n");Displayboard(mine, ROW, COL);break;}else{int cont = GetMineCount(mine, x, y);show[x][y] = cont + '0';win++;Displayboard(show, ROW, COL);}}else{printf("//其他区域为安全区域,请输入排查区域//\n");}}if (win == row*col - EASY_CONT){printf("此区域以安全,排雷成功\n");Displayboard(mine, ROW, COL);}
}

界面和玩法

菜单和选项

#include "game.h"void menu()
{printf("************************************\n");printf("************1.开始游戏**************\n");printf("************0.退出游戏**************\n");printf("************************************\n");printf("************************************\n");
}int 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);
}int main()
{int input = 0;srand((unsigned int)time(NULL));do{menu();printf("请选择:");scanf("%d", &input);switch(input){case 1:game();break;case 0:printf("退出游戏\n");break;default:printf("非法输入,请重新输入\n");break;}} while (input);return 0;
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Composition API实现逻辑复用
  • ​探讨元宇宙和VR虚拟现实之间的区别​
  • Matlab课程设计——手指静脉识别项目
  • 项目名称:C语言在线学习平台(README)
  • nginx配置文件说明
  • 一文掌握Prometheus实现页面登录认证并集成grafana
  • 小程序图片下载保存方法,图片源文件保存!
  • 用python去爬取小说网址的小说保存到本地全过程
  • 【接口自动化_09课_大量响应报文处理及加解密、签名处理】
  • Kafka系列之:Kafka存储数据相关重要参数理解
  • Nginx 不转发请求 IP
  • tinymce富文本支持word内容同时粘贴文字图片上传 vue2
  • Framework源码面试之Handler面试集合
  • Laravel+swoole 实现websocket长链接
  • Netty Websocket
  • 【RocksDB】TransactionDB源码分析
  • in typeof instanceof ===这些运算符有什么作用
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • JavaScript HTML DOM
  • Laravel5.4 Queues队列学习
  • PHP的Ev教程三(Periodic watcher)
  • PHP的类修饰符与访问修饰符
  • Quartz实现数据同步 | 从0开始构建SpringCloud微服务(3)
  • Redux 中间件分析
  • SpingCloudBus整合RabbitMQ
  • Spring Boot MyBatis配置多种数据库
  • uni-app项目数字滚动
  • ViewService——一种保证客户端与服务端同步的方法
  • 从零搭建Koa2 Server
  • 缓存与缓冲
  • 基于游标的分页接口实现
  • 技术:超级实用的电脑小技巧
  • 使用Gradle第一次构建Java程序
  • 数组的操作
  • 网页视频流m3u8/ts视频下载
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • 昨天1024程序员节,我故意写了个死循环~
  • ​数据结构之初始二叉树(3)
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • (+4)2.2UML建模图
  • (LLM) 很笨
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (利用IDEA+Maven)定制属于自己的jar包
  • (转)jQuery 基础
  • (转)德国人的记事本
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • .md即markdown文件的基本常用编写语法
  • .MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复
  • .NET Core 通过 Ef Core 操作 Mysql
  • .NET连接MongoDB数据库实例教程
  • .Net实现SCrypt Hash加密
  • .NET中的Exception处理(C#)
  • 。Net下Windows服务程序开发疑惑
  • /proc/stat文件详解(翻译)