C语言实现扫雷游戏

2023-05-16

话不多说直接淦代码,代码都有详细注释:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <Windows.h>
#define ROW 9
#define LIN 9
#define ROWS 11
#define LINS 11
#define MINE_COUNT 10
//1.菜单
void menu() {
	printf("------------------------扫雷小游戏--------------------------\n\n");
	printf("*************************1.play*****************************\n");
	printf("*************************2.exit*****************************\n");
	printf("------------------------------------------------------------\n");
}
//2.初始化棋盘
void InitBoard(char arr[ROWS][LINS], int row, int lin, char c) {
	for (int i = 0; i < row; i++) {
		for (int j = 0; j < lin; j++) {
			arr[i][j] = c;
		}
	}
}
//3.打印内部棋盘,用于作者开发时参考
//void Show_board(char arr[ROWS][LINS], int row, int lin) {
//	for (int i = 0; i < row; i++) {
//		for (int j = 0; j < lin; j++) {
//			printf("%c ", arr[i][j]);
//		}
//		printf("\n");
//	}
//}
//4.设置雷的数量
void Setmine(char arr[ROWS][LINS]) {
	int mine_num = MINE_COUNT;
	while (mine_num > 0) {
		int x = rand() % 9 + 1; 
		int y = rand() % 9 + 1;
		if (arr[x][y] == '0') {
			arr[x][y] = '1';
			mine_num--;
		}
	}
}
//5.打印棋盘
void Noticeboard(char arr[ROWS][LINS]) {
	for (int i = 0; i < ROW+1; i++) {
		printf("%d ", i);
	}
	printf("\n");
	for (int i = 1; i <= LIN; i++) {
		printf("%d ", i);
		for (int j= 1; j <= LIN; j++) {
			printf("%c ", arr[i][j]);
		}
		printf("\n");
	}
}
//6.计算用户输入的位置周围的雷的个数
int Getmess(char arr[ROWS][LINS], int x, int y) {
	return arr[x - 1][y - 1] + arr[x - 1][y] + arr[x - 1][y + 1] 
		+ arr[x][y - 1]+ arr[x][y + 1]
		+ arr[x + 1][y -1] + arr[x + 1][y] + arr[x + 1][y + 1]-8*'0';//char转为int
}
void Startgame(char board[ROWS][LINS], char My_board[ROWS][LINS]) {
	printf("请输入横坐标+空格+做坐标\n");
	int x = 0;
	int y = 0;
	int step = 0;//用户的步数
	while (step < ROW * LIN - MINE_COUNT) {//用户走的步数:棋盘总数-雷的数量
		(void)scanf("%d %d", &x, &y);
		if (x <= 9 && x >= 1 && y <= 9 && y >= 1) {
			if (My_board[x][y] == '1') {
				//踩雷了
				printf("boom!游戏结束!!\n");
				Noticeboard(My_board);
				break;
			}
			else {
				int num = Getmess(My_board, x, y);
				//printf("有%d个雷\n", num);
				board[x][y] = num + '0';//int转为char
				system("cls");
				Noticeboard(board);
				step++;
			}
			printf("请输入横坐标+空格+做坐标\n");
		}
		else {
			printf("输入有误!重新输入:\n");
		}
	}
	printf("你真厉害!你赢了~\n");
}
void game() {
	//设置两个雷区;
	char board[ROWS][LINS];//用户看到的棋盘
	char My_board[ROWS][LINS];//内部棋盘
	InitBoard(board, ROWS, LINS, '?');//初始化棋盘
	//Show_board(board, ROWS, LINS);
	InitBoard(My_board, ROWS, LINS, '0');//初始化棋盘
	Setmine(My_board);//设置雷
	//Show_board(My_board, ROWS, LINS);
	Noticeboard(board);//打印棋盘
	Startgame(board, My_board);//开始游戏
}
int main() {
	srand((unsigned int)time(0));//设置随机数
	while (1) {
		menu();//打印菜单
		int choice;
		printf("请输入选择:\n");
		(void)scanf("%d", &choice);//用户输入
		if (choice == 1) {
			printf("play\n");
			Sleep(500);
			system("cls");
			game();
		}
		else if (choice == 2) {
			printf("exit\n");
			break;
		}
		else {
			printf("您的输入有误请重新输入:\n");
		}
	}
	return 0;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言实现扫雷游戏 的相关文章

  • 【FPGA】基于状态机实现自动售货机模拟

    文章目录 一 售货机功能二 售货机状态分析及模块划分三 代码实现四 上板验证 一 售货机功能 此自动售货机模拟基于EP4CE6F17C8开发板实现 xff0c 用按键 xff0c led灯 xff0c 数码管表示各个输入输出 功能 xff1
  • 【FPGA】中值滤波处理BMP图片

    文章目录 一 中值滤波二 BMP图片格式三 功能实现1 代码设计思路2 shift IP核3 代码实现 四 结果测试参考博客 一 中值滤波 中值滤波法是一种非线性平滑技术 xff0c 它将每一像素点的灰度值设置为该点某邻域窗口内的所有像素点
  • C++常用库

    以下是常用的 C 43 43 库的分类和列表 xff1a 1 标准库 iostream xff1a 提供输入和输出函数 xff0c 如 96 cout 96 和 96 cin 96 string xff1a 提供字符串类型和操作函数 xff
  • ideal使用maven时候发生org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException

    第一次使用maven创建web项目 xff0c 在访问servlet时发生错误 原因是maven默认是用的是tomcat6而项目的jdk为1 8 xff0c 二者并不支持 所以需要将maven的tomcat版本换为tomcat7或更高 在项
  • vue 项目 axios 响应拦截器 统一判断401 (登录)过期

    背景 xff1a 为了模拟token 过期 xff0c 专门把token 设置错误 xff0c 为401 界面 把axios 官网里的 复制到拦截器里 放置到request js 里 在响应器里进行判断4 5 状态码错误 以下为代码 引入a
  • 异常和异常的处理方式

    异常 1 概述 异常是一些用来封装错误信息的对象 它由异常的类型 提示信息 报错的行号提示三部分组成 2 异常的继承结构 3 异常的处理方式 当程序中遇到了异常 通常有两种处理方式 捕获或者向上抛出 当一个方法抛出异常 调用位置可以不做处理
  • A1&AlienGo--通过realsense-viewer调用相机

    使用机器狗时 xff0c 有时需要通过NX 树莓派上的系统来查看调用相机 xff0c 可以通过realsense提供的realsense viewer来查看 但是机器狗自带的视觉程序会开机自启占用相机 xff0c 所以首先需要杀掉这个进程
  • 空管大数据分析平台——COSMOS

    产品简介 COSMOS是由ALTYS公司开发的专用于CNS ATM领域的一个灵活自适应航空大数据分析解决方案 xff0c 它将航空运输业带入了数字时代 系统利用飞机和地面CNS ATM系统以及其他航空系统生成的海量数据信息 xff0c 为用
  • 雷达采集卡/雷达信号采集单元 HPx-200

    产品简介 HPx 200是一款基于PCI的高性能雷达采集卡 雷达信号采集单元 xff0c 它可以捕获并处理一个到两个模拟或8比特的数字一次雷达视频 该卡可与板级支持库一起使用来采集基本的雷达信号 xff0c 或者与SPx程序库一起使用来满足
  • 雷达模拟器 SPx Radar Simulator

    产品简介 SPx Radar Simulator可产生模拟雷达视频数据 xff0c 还可以获得地形高程数据 xff0c 并利用这些数据计算模拟雷达回波 用户可自定义静态及动态目标 xff0c 将模拟雷达信号源置于某个静态位置或自定义运动轨迹
  • 无人机拉力测试台螺旋桨的正确安装方式

    在使用无人机拉力测试台测试螺旋桨的拉力 扭矩和效率时 xff0c 怎样正确安装螺旋桨才能得到最准确的测试结果 xff1f 下图示意了螺旋桨的正确安装方式 xff1a 这个测试台装置的背后理论 xff0c 经过实验验证由于测试台本身造成的障碍
  • 无人机设计过程中的计算和假设

    当我们想要设计一架新的无人机时 xff0c 首先要确定我们要设计一架什么样的无人机 xff0c 例如多大的起飞重量 几个旋翼 续航时间等 无人机工程过程通常作为 设计循环 运行 xff0c 指的是设计过程的循环性质 构建无人机的第一个版本依
  • 如何计算电机极数和无刷电机的Kv值?

    介绍 如果您正在制造无人机 遥控车或任何使用无刷直流 BLDC 电机的机器 xff0c 您可能会遇到电机极数和电机Kv值的概念 这两个参数对于表征您的电机和估计其性能都很有帮助 在本文中 xff0c 我们将介绍这些指标的含义 如何计算和衡量
  • 无人机拉力测试台:15kg级-Flight Stand 15

    产品简介 Flight Stand 15测试台是多年无人机动力系统开发经验和经历数千个用户使用反馈不断优化的成果 该测试台对无人机电机和螺旋桨的拉力 xff0c 扭矩 xff0c 转速 xff0c 电流 xff0c 电压 xff0c 温度
  • 教你编写Python抢购代码

    想买mate40 xff0c 但总是抢不到 xff0c 所以想试着能不能写个脚本代码 第一步 xff1a 把想要抢购的商品加进购物车 xff0c 注意 xff1a 脚本是对购物车内全部商品进行下单操作 xff0c 所以不够买的商品最好先从购
  • Linux C/C++UDP通信实现

    文章目录 一 UDP通信流程二 代码实现1 服务器2 客户端 一 UDP通信流程 二 代码实现 1 服务器 代码如下 xff08 示例 xff09 xff1a span class token macro property span cla
  • 无人机拉力测试台:75kg级-1780系列

    产品简介 1780系列测试台是专为无人机设计师的简化测试需求而设计 xff0c 同时配有易于使用的支持手动控制功能的操作软件 xff0c 并支持设计师使用定制的预编写脚本实现自动化测试 测量结果完成后可以实时保存并导出到 CSV格式文件 试
  • 无人机拉力测试台:5kg级-1580测试台

    产品简介 1580测试台对无人机动力系统的无刷电机和螺旋桨进行测试 xff0c 测量高达5kgf的拉力和2Nm的扭矩 xff0c 以及电压 xff0c 电流 xff0c 功率 xff0c 电机转速 xff0c 振动和效率 该测试台大大减少了
  • 共轴双旋翼无人机动力测试解决方案

    前言 与传统的多旋翼无人机架构相比 xff0c 共轴式多旋翼无人机具有结构紧凑 上下旋翼反转扭矩相消和良好的操控性等优势 xff0c 同时可以为整机提供更大的动力 xff0c 尤其在直升机领域 xff0c 共轴双旋翼的设计受到了越来越多军工

随机推荐

  • 航空数据链协议解析与仿真测试

    航空数据链概述 航空数据链通信是指飞机和地面站系统之间一种数字通信技术 该技术通过使用互连路由器和终端系统的航空电信网络 ATN xff0c 以及作为空中 地面数据链技术的VHF数字链路模式2 VDL mode 2 VDL2 来实现管制员与
  • 无人机拉力测试台研制&测试过程中的9个关键技术点

    随着近年来无人机行业的飞速迭代发展 xff0c 越来越多的相关从业人员选择使用拉力测试台来测试并优化无人机的动力系统 xff0c 本文尝试从无人机拉力测试台的研制和使用角度来阐述无人机拉力测试中的9个关键技术点 1 电磁干扰方面的考虑 测试
  • 无人机动力系统优化测试平台-15kg级-Flight Stand 15

    产品简介 通过Flight Stand 15测试台对电机和螺旋桨的拉力 xff0c 扭矩 xff0c 转速 xff0c 电流 xff0c 电压 xff0c 温度 xff0c 空速 xff0c 螺旋桨效率和电机效率的测量帮助您精准地描述和评估
  • 无人机飞行控制实验平台

    无人机在研制过程中需要不断地进行飞行测试 xff0c 而测试的过程不是万无一失的 xff0c 飞行过程中发生任何错误都有可能会导致无人机的损毁或破坏 xff0c 更严重地甚至会造成外界伤害 基于此我们推出了无人机的三旋转自由度 3 DOF
  • ADS-B教学实验方案

    ADS B教学系统是为了让学生学习ADS B原理 ADS B系统组成 ADS B信号处理技术 可以通过ADS B教学系统进一步研究分析ADS B位置的精度 准确性 稳定性 实时性 xff0c 设计基于ADS B的空中碰撞告警系统 xff0c
  • ROS系列:工作空间及功能包创建

    前言 分享一下ROS开发的基础教程 xff0c 全部自己手敲 xff0c 希望能帮到正在学习的你 ROS在WIKI上也有教程 xff0c 个人觉得太过臃肿 xff0c 可以简化点 xff0c 毕竟大家都赶着投胎 xff0c 哈哈哈哈哈 一
  • java UDP DatagramSocket接收不到数据

    今天联系这个通信 xff0c 接收端总是接收不到数据 xff01 排除代码本身有可能出现的错误 xff0c 比如地址 xff0c 数据宝包 我称它为数据宝宝 xff09 等等自己粗心的错误后还是不行 xff0c 我查看各种方法 xff0c
  • Python与爬虫有什么关系?

    爬虫一般是指网络资源的获取 xff0c 因为python的脚本特征 xff0c Python易于配置 xff0c 对字符的处理也非常灵活 xff0c 加上python有丰富的网络抓取模块 xff0c 所以两者经常联系在一起 接下来我们可以详
  • C++中struct和class的区别

    1 C 43 43 中struct和class的区别 C 43 43 中的struct其实是为了与C的兼容性而留下来的 C 43 43 的struct和class其实大部分都是相同的用法 xff0c 基本上可以用class做的事都可以用st
  • L298N驱动步进电机,有stm32代码亲测可用

    1 1 步进电机相关概念 相数 xff1a 产生不同对极N S磁场的激磁线圈对数 xff0c 常用 m 表示 例如 xff1a 二相四线电机 xff0c 就有两对极N S磁场的激磁线圈 xff0c 四个线圈 上图可知 xff0c A 43
  • C++成员初始化

    C 43 43 成员分为 xff1a 一般变量 xff0c const修饰变量 xff0c 引用类型成员 xff0c static成员 xff0c const staic成员 同static const xff0c 自定义类型对象 clas
  • HTTP协议解析

    目录 1 HTTP协议的概念 2 HTTP协议格式 3 HTTPS 1 HTTP协议的概念 在我们之前学习网络的过程中 xff0c 我们知道了目前主流网络分层模型共分为5层 xff0c 分别是物理层 xff0c 数据链路层 xff0c 网络
  • cmake编译opencv开源项目报错问题

    最近使用cmake在编译一个配置了opencv环境的c 43 43 开源项目时遇到如下问题 CMake Warning at D opencv4 OpenCVConfig cmake 176 message Found OpenCV Win
  • Ubuntu系统换源

    简单介绍一下源 xff0c 源就是一个大仓库 xff08 类似应用商店 xff09 xff0c 系统下载软件需要从这个仓库下载 xff0c 因为Ubuntu默认源是国外的 xff0c 所以在下载东西的时候会出现下载速度很慢的情况 xff0c
  • 字符串的简单介绍和字符串的大小比较

    以前就写过一篇关于String的文章 xff0c 今天再来写一篇 xff0c 更加深入了解一下String类 x1f550 1 String类的定义 x1f551 2 String类的创建 x1f552 3 字符串的大小比较 1 之前在C语
  • 数据结构1

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
  • 洛谷P5740 【深基7.例9】最厉害的学生

    题目描述 现有 N N le 1000 N N 1000 名同学参加了期末考试 xff0c 并且获得了每名同学的信息 xff1a 姓名 xff08 不超过 8 个字符的仅有英文小写字母的字符串 xff09 语文 数学 英语成绩 xff08
  • C语言创建链表并输出

    代码如下 define CRT SECURE NO WARNINGS include lt stdio h gt include lt assert h gt include lt string h gt include lt stdlib
  • 游戏搬砖是什么意思?

    网络游戏搬砖是指在各网络游戏中 xff0c 玩家把花大量时间 精力赚的钱转手为游戏买各种东西 搬砖原本是一个汉语词语 xff0c 意思是原指搬运砖块 xff0c 在网络语中 xff0c 搬砖引申为工作辛苦 重复机械 赚钱不多的工作 在一些方
  • C语言实现扫雷游戏

    话不多说直接淦代码 代码都有详细注释 define CRT SECURE NO WARNINGS include lt stdio h gt include lt time h gt include lt stdlib h gt inclu