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

扫雷游戏代码分享(c基础)

hi , I am 36.

代码来之不易👍👍👍

创建两个.c    一个.h

1:test.c

#include"game.h"void game()
{//创建数组char mine[ROWS][COLS] = { 0 };char show[ROWS][COLS] = { 0 };char temp[ROWS][COLS] = { 0 };//初始化数组Iniarr(mine, ROWS, COLS, '0');Iniarr(show, ROWS, COLS, '*');Iniarr(temp, ROWS, COLS, '0');//选择模式mold(mine, ROW, COL);//打印出来/*Minebord(mine, ROW, COL);*/Showbord(show, ROW, COL);//排查int flag = 1;while (flag){/*Minebord(mine, ROW, COL);*/flag = Tell__count(mine, show, temp,ROWS, COLS);Showbord(show, ROW, COL);int x = 0;//判断胜利if (x = Iswin(mine, show, ROW, COL)) break;//是否标记if (flag) 	{Isflag(show, ROW, COL);Showbord(show, ROW, COL);}}if (flag == 0){Minebord(mine, ROW, COL);printf("你输了\n\n\n");Sleep(2000);}else{printf("\nCongratulations!!!\a\a\n");printf("Congratulations!!!\a\a\n");printf("Congratulations!!!\a\a\n");printf("Congratulations!!!\a\a\n");printf("Congratulations!!!\a\a\n");printf("Congratulations!!!\a\a\n");}
}int main()
{//设置种子值srand((unsigned int)time(NULL));Myintub();//介绍menu();//菜单int n = 0;do{scanf("%d", &n);switch (n){case 1:game(); printf("请问是否继续?\n"); menu(); break;case 0:system("cls"); Myintuo(); break;default:system("cls"); printf("该值无效 请重新输入\n"); Sleep(1000); system("cls"); menu(); break;}} while (n);return 0;
}

2: game.h

#pragma once
#define _CRT_SECURE_NO_WARNINGS#define ROW 9
#define COL 9
#define ROWS ROW + 2
#define COLS COL + 2#include<stdio.h>
#include<windows.h>
#include<time.h>void Myintub();void Myintuo();void menu();void Iniarr(char arr[ROWS][COLS], int rows, int cols, int set);void Minebord(char arr[ROWS][COLS], int row, int col);void Showbord(char arr[ROWS][COLS], int row, int col);void mold(char arr[ROWS][COLS], int row, int col);void Ini__my__count(char arr[ROWS][COLS], int row, int col,int n);int  Tell__count(char arr[ROWS][COLS], char show[ROWS][COLS], char temp[ROWS][COLS], int rows, int cols);int  print(char mine[ROWS][COLS], char show[ROWS][COLS], char temp[ROWS][COLS], int rows, int cols,int x, int y);int Iswin(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col);void Isflag(char arr[ROWS][COLS], int row, int col);void Flag1(char arr[ROWS][COLS], int row, int col);void Flag2(char arr[ROWS][COLS], int row, int col);void Flag3(char arr[ROWS][COLS], int row, int col);

3:game.c

#include"game.h"void Myintub()
{printf("hi, I am 36\n");printf("let us begine \n");Sleep(1500);system("cls");
}void Myintuo()
{printf("hi, I am 36.\n");printf("bye bye \n");Sleep(1500);
}void menu()
{printf("**** 扫雷游戏 ****\n");printf("******************\n");printf("**** 1  play *****\n");printf("**** 0  exit *****\n");printf("**** 扫雷游戏 ****\n");printf("请选择:>");}void Iniarr(char arr[ROWS][COLS], int rows, int cols, int set)
{int i = 0;int j = 0;for (i = 0; i < rows; i++){for (j = 0; j < cols; j++)arr[i][j] = set;}}void Minebord(char arr[ROWS][COLS], int row, int col)
{int i = 0;int j = 0;printf("*** 扫雷游戏 ******\n");for (j = 0; j <= row; j++){printf("%d ", j);}printf("\n");for (i = 1; i <= row; i++){printf("%d ", i);for (j = 1; j <= col; j++)printf("%c ", arr[i][j]);printf("\n");}printf("*** 扫雷游戏 ******\n");
}void Showbord(char arr[ROWS][COLS], int row, int col)
{int i = 0;int j = 0;printf("\n*** 扫雷游戏 ******\n\n");for (j = 0; j <= row; j++){printf("%d ", j);}printf("\n");for (i = 1; i <= row; i++){printf("%d ", i);for (j = 1; j <= col; j++)printf("%c ", arr[i][j]);printf("\n");}printf("\n*** 扫雷游戏 ******\n");
}void mold(char arr[ROWS][COLS], int row, int col)
{printf("**** 扫雷游戏 ****\n");printf("**** 0  简单 *****\n");printf("**** 1  中等 *****\n");printf("**** 2  困难 *****\n");printf("**** 扫雷游戏 ****\n");int n = 0;int flag = 0;do{flag = 0;printf("请选择难度:>");scanf("%d", &n);system("cls");switch (n){case 0:Ini__my__count(arr, ROW, COL, n); break;case 1:Ini__my__count(arr, ROW, COL, n); break;case 2:Ini__my__count(arr, ROW, COL, n); break;default: printf("该值无效 请重新输入\n"); flag = 36; break;}} while (flag);
}void Ini__my__count(char arr[ROWS][COLS], int row, int col,int n)
{//雷的个数int a = 0;a = (n + 1) * 10;//创建坐标int x = 0;int y = 0;while (a){x = rand() % row  + 1;y = rand() % col  + 1;if (arr[x][y] == '0'){arr[x][y] = '1';a--;}}//判断/*for (x = 0; x < row + 2; x++){for (y = 0; y < col + 2; y++)printf("%d %d %c\n",x, y, arr[x][y]);}*/}int Tell__count(char mine[ROWS][COLS], char show[ROWS][COLS], char temp[ROWS][COLS], int rows, int cols)
{int x = 0;int y = 0;int flag = 0;do{printf("请输入排查坐标:>");scanf("%d %d", &x, &y);if (x == 36 && y == 36){flag = 1;Minebord(mine, ROW, COL);}else if (x < 1 || x>9 || y < 1 || y>9){printf("请输入合法值\n");flag = 1;}else if (show[x][y] != '*'&& show[x][y] != '?'&& show[x][y] != '$'){printf("该坐标已被排查,请重新输入\n");flag = 1;}elseflag = 0;} while (flag);return print(mine, show,temp, rows, cols, x, y);}int  print(char mine[ROWS][COLS], char show[ROWS][COLS], char temp[ROWS][COLS], int rows, int cols, int x, int y)
{//若是雷返回0if (mine[x][y] == '1')		return 0;//不是雷返回1//打印个数else{int i = 0;int j = 0;temp[x][y] = '1';//创建计数变量int count = 0;for (i = -1; i <= 1; i++)for (j = -1; j <= 1; j++)if (mine[x + i][y + j] == '1')count++;if (count != 0){show[x][y] = count + '0';return 1;}else{show[x][y] = ' ';for (i = -1; i <= 1; i++){for (j = -1; j <= 1; j++){if (x + i <= 9 && x + i >= 1 && y + j <= 9 && y + j >= 1 && temp[x + i][y + j] == '0'){print(mine, show, temp, rows, cols, x + i, y + j);}}}return 1;}}}int Iswin(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col)
{int i = 0;int j = 0;int a = 0;int b = 0;for (i = 1; i <= row; i++){for (j = 1; j <= col; j++)if (mine[i][j] == '1')a++;}for (i = 1; i <= row; i++){for (j = 1; j <= col; j++)if (show[i][j] == '*')b++;}if (a == b)return 36;else return 0;
}void Isflag(char arr[ROWS][COLS], int row, int col)
{int n = 0;do{printf("\n*****************\n");printf("请问是否标记操作?\n");printf("***0   exit    **\n");printf("** 1   $       **\n");printf("** 2   ?       **\n");printf("** 3   *       **\n");printf("请选择:>");scanf("%d", &n);switch (n){case 0:	system("cls");break;case 1:Flag1(arr, row, col); break;case 2:Flag2(arr, row, col); break;case 3:Flag3(arr, row, col); break;default:printf("该值无效\n请重新输入:>"); break;}} while (n);}void Flag1(char arr[ROWS][COLS], int row, int col)
{printf("请输入坐标:>");int x = 0;int y = 0;scanf("%d %d", &x, &y);if (arr[x][y] == '*'){arr[x][y] = '$';Showbord(arr, row, col);}
}void Flag2(char arr[ROWS][COLS], int row, int col)
{printf("请输入坐标:>");int x = 0;int y = 0;scanf("%d %d", &x, &y);if (arr[x][y] == '*'){arr[x][y] = '?';Showbord(arr, row, col);}
}void Flag3(char arr[ROWS][COLS], int row, int col)
{printf("请输入坐标:>");int x = 0;int y = 0;scanf("%d %d", &x, &y);if (arr[x][y] == '$' || arr[x][y] == '?'){arr[x][y] = '*';Showbord(arr, row, col);}}

相关文章:

扫雷游戏代码分享(c基础)

hi , I am 36. 代码来之不易&#x1f44d;&#x1f44d;&#x1f44d; 创建两个.c 一个.h 1&#xff1a;test.c #include"game.h"void game() {//创建数组char mine[ROWS][COLS] { 0 };char show[ROWS][COLS] { 0 };char temp[ROWS][COLS] { 0 };//初始化数…...

基于vue框架的的社区居民服务管理系统8w86o(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;居民,楼房信息,报修信息,缴费信息,维修进度 开题报告内容 基于Vue框架的社区居民服务管理系统开题报告 一、研究背景与意义 随着城市化进程的加速&#xff0c;社区居民数量激增&#xff0c;社区管理面临着前所未有的挑战。传统的社区…...

一分钟快速熟悉makedown

Markdown 是一种轻量级标记语言&#xff0c;广泛用于编写文档、撰写博客、创建 README 文件等。它的语法简单易学&#xff0c;能够快速生成格式化的文本。以下是 Markdown 的一些常用语法和示例&#xff1a; 1. 标题 Markdown 支持六级标题&#xff0c;使用 # 符号表示。 # …...

P8649 [蓝桥杯 2017 省 B] k 倍区间:同余,前缀和,组合数,区间个数

题目描述 给定一个长度为 NN 的数列&#xff0c;A1,A2,⋯ANA1​,A2​,⋯AN​&#xff0c;如果其中一段连续的子序列 Ai,Ai1,⋯Aj(i≤j)Ai​,Ai1​,⋯Aj​(i≤j) 之和是 KK 的倍数&#xff0c;我们就称这个区间 [i,j][i,j] 是 KK 倍区间。 你能求出数列中总共有多少个 KK 倍区…...

产业与学术相互促进,2024年OEG海上能源博览会助力全球能源可持续发展

10月30日至31日&#xff0c;2024年OEG海上能源全产业链博览会在上海跨国采购会展中心成功举办。本次大会系全球海洋工程与高端装备领域的年度国际交流盛会——第十一届全球FPSO&FLNG&FSRU大会&#xff0c;同期举办第七届亚洲海洋风能大会。本次大会暨博览会由上海船舶工…...

【GDB调试】智慧中控项目的调试

一.在执行的智慧中控项目的时候&#xff0c;喊语音模块唤醒(小欣小欣)的时候遇到了&#xff1a;Segmentation fault 段错误 二.遇到段错误&#xff0c;一般是以下情况&#xff1a; “Segmentation fault”&#xff08;段错误&#xff09;是Linux系统中常见的程序异常终止信号。…...

《一本书讲透 Elasticsearch》京东评论采集+存储+可视化全 AI 实现

经常和出版社编辑老师交流读者的反馈。毕竟是小众书籍&#xff0c;豆瓣评分的人并不多。 而京东作为主要读书销售渠道&#xff0c;非常有必要整合一下京东读者评论&#xff0c;看看读者们都说了什么&#xff0c;以便后续的改进&#xff01; 一条条的翻看非常不方便&#xff0c;…...

uniapp中webview全屏不显示导航栏解决方案

uniapp官网文档地址&#xff1a;https://uniapp.dcloud.net.cn/api/window/window.html#getappwebview <template><view class"index"><u-navbar :is-back"true" title"标题"" :title-width"650"></u-navb…...

Dear ImGui 使用VS2022编译为静态库

Dear ImGui 是一个无臃肿的 C++ 图形用户界面库。它输出优化的顶点缓冲区,您可以在支持 3D 管道的应用程序中随时渲染这些缓冲区。它速度快、可移植、与渲染器无关且自成一体(无外部依赖项)。 Dear ImGui 旨在实现快速迭代,并让程序员能够创建内容创建工具和可视化/调试工具…...

5G 现网信令参数学习(3) - RrcSetup(1)

目录 1. rlc-BearerToAddModList 1.1 rlc-Config 1.1.1 ul-AM-RLC 1.1.2 dl-AM-RLC 1.2 mac-LogicalChannelConfig 2. mac-CellGroupConfig 2.1 schedulingRequestConfig 2.2 bsr-Config 2.3 tag-Config 2.4 phr-Config 2.5 skipUplinkTxDynamic 3. physicalCellG…...

PHP实现身份证OCR识别API接口

随着社会的发展&#xff0c;身份认证需求不断增长&#xff0c;这与身份证OCR识别技术的发展密切相关。在当今社会&#xff0c;各个领域都需要进行身份认证。传统的人工手动录入身份证信息费时费力&#xff0c;速度慢且容易出错&#xff0c;体验不佳。而身份证 OCR 识别技术通过…...

关于 Qt+Osg中使用背景图HUD受到后绘制几何图形顶点颜色影响 的解决方法

若该文为原创文章&#xff0c;转载请注明出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/143607816 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、Op…...

[CKS] K8S AppArmor Set Up

最近准备花一周的时间准备CKS考试&#xff0c;在准备考试中发现有一个题目关于AppArmor Pod操作权限的问题。 ​ 专栏其他文章: [CKS] Create/Read/Mount a Secret in K8S-CSDN博客[CKS] Audit Log Policy-CSDN博客 -[CKS] 利用falco进行容器日志捕捉和安全监控-CSDN博客[CKS] …...

redis笔记-数据结构

zset zset一方面它是一个 set&#xff0c;保证了内部value 的唯一性&#xff0c;另一方面它可以给每个 value 赋予一个 score&#xff0c;代表这个 value 的排序权重。 zset的底层是由字典和跳表实现。 字典主要用来存储value和score的对应关系。跳表这个数据结构主要用来提…...

webpack的常见配置

Webpack 是一个现代 JavaScript 应用的模块打包工具&#xff0c;用于将项目中的多个文件和依赖打包成浏览器可以识别的文件&#xff0c;通常是一个或多个 JavaScript、CSS 或其他静态资源的 bundle&#xff08;将多个模块或文件合并成一个或几个文件的过程&#xff0c;这些合并…...

text-embedding-ada-002;BGE模型;M3E模型是Moka Massive Mixed Embedding;BERT

目录 text-embedding-ada-002 一、模型概述 二、模型功能 三、模型特点 四、模型应用 五、模型优势 BGE模型 一、模型背景与特点 二、模型性能与表现 三、模型迭代与发展 M3E模型是Moka Massive Mixed Embedding 一、基本信息 二、技术特点 三、应用场景 四、性能…...

WebRTC 环境搭建

主题 本文主要描述webrtc开发过程中所需的环境搭建 环境&#xff1a; 运行环境&#xff1a;ubuntu 20.04 Node.js环境搭建 安装编译 Node.js 所需的依赖包: sudo apt-get update sudo apt-get install -y build-essential libssl-dev 下载 Node.js 源码: curl -sL htt…...

FastHTML快速入门:http方法,CSS文件和内联样式,其他静态媒体文件位置

HTTP方法 FastHTML通过函数名与HTTP方法进行匹配。到目前为止&#xff0c;我们定义的URL路由都是针对HTTP GET方法的&#xff0c;这是网页最常见的方法。 表单提交通常作为HTTP POST发送。在处理更动态的网页设计时&#xff0c;也就是所谓的单页应用&#xff08;SPA&#xff0…...

项目管理和研发管理中的痛点及其解决方案

在现代企业中&#xff0c;研发管理和项目管理面临着多重挑战&#xff0c;包括资源配置不当、沟通不畅、目标不明确、进度控制困难等。这些痛点不仅影响项目的顺利推进&#xff0c;还可能导致企业在市场竞争中处于劣势。尤其是在资源配置不当方面&#xff0c;企业往往难以合理分…...

机器学习(基础1)

数据集 sklearn玩具数据集 数据量小&#xff0c;数据在sklearn库的本地&#xff0c;只要安装了sklearn&#xff0c;不用上网就可以获取 sklearn现实世界数据集 数据量大&#xff0c;数据只能通过网络获取&#xff08;为国外数据集&#xff0c;下载需要梯子&#xff09; skle…...

我谈维纳(Wiener)复原滤波器

Rafael Gonzalez的《数字图像处理》中&#xff0c;图像复原这章内容几乎全错。上篇谈了图像去噪&#xff0c;这篇谈图像复原。 图像复原也称为盲解卷积&#xff0c;不处理点扩散函数&#xff08;光学传递函数&#xff09;的都不是图像复原。几何校正不属于图像复原&#xff0c…...

怎么看真假国企啊?怎么识别假冒国企的千层套路?

一、怎么看真假国企啊&#xff1f; 1.使用具有迷惑性的名称&#xff1a;假冒国企往往在名称中使用“中国”、“中”、“国”等字样&#xff0c;或与知名国企名称相似的字号&#xff0c;以增加其可信度。 2.注册资本虚高&#xff1a;为了显示实力&#xff0c;假冒国企可能会在…...

C#中break和continue的区别?

在C#编程语言中&#xff0c;break和continue是两个用于控制循环流程的关键字&#xff0c;但它们的作用和用途有所不同。 break关键字 break关键字用于立即终止它所在的最内层循环或switch语句&#xff0c;并跳出该循环或switch块。程序执行将继续进行循环或switch语句之后的下一…...

Linux部署nginx访问文件403

问题描述&#xff1a;在linux服务器上通过nginx部署&#xff0c;访问文件403 新配置了一个用户来部署服务&#xff0c;将部署文件更新到原有目录下&#xff0c;结果nginx访问403 原因&#xff1a;没有配置文件的读写权限&#xff0c;默认不可读写&#xff0c;nginx无法访问到文…...

华为OD机试 - 数字排列 - 深度优先搜索dfs算法(Python/JS/C/C++ 2024 C卷 200分)

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试真题&#xff08;Python/JS/C/C&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;私信哪吒&#xff0c;备注华为OD&#xff0c;加入华为OD刷题交流群&#xff0c;…...

Scrapy爬取heima论坛所有页面内容并保存到数据库中

前期准备&#xff1a; Scrapy入门_win10安装scrapy-CSDN博客 新建 Scrapy项目 scrapy startproject mySpider03 # 项目名为mySpider03 进入到spiders目录 cd mySpider03/mySpider03/spiders 创建爬虫 scrapy genspider heima bbs.itheima.com # 爬虫名为heima &#…...

Kafka参数了解

Kafka配置参数完整说明 1. 基础配置 参数名说明推荐值参考值broker.idbroker的唯一标识符每个节点唯一的整数1delete.topic.enable是否允许删除topictruetruelistenersbroker监听地址SASL_PLAINTEXT://host:9092SASL_PLAINTEXT://172.24.77.15:9092advertised.listeners对外发…...

sql专题 之 where和join on

文章目录 前言where介绍使用过滤结果集关联两个表 连接外连接内连接自然连接 使用inner join和直接使用where关联两个表的区别总结 前言 从数据库查询数据时&#xff0c;一张表不足以查询到我们想要的数据&#xff0c;更多的时候我们需要联表查询。 联表查询我们一般会使用连接…...

day12:版本控制器

版本控制 使用到的命令&#xff1a; ls -al查看当前目录下的文件及文件夹mkdir新建目录rm -rf递归强制删除文件夹 一、安装配置 1、下载地址 Git 2、初始配置 #用户名 git config --global user.name "自定义用户名" #邮箱&#xff08;公司的联系方式--追责&…...

第四十一章 Vue之初识VueX

目录 一、引言 1.1. vuex的概念 1.2. vuex使用场景 1.3. 优势 二、创建演示项目 2.1. 构建项目步骤 2.2. 项目最终生成结构 2.3. 创建项目文件 2.3.1. App.vue 2.3.2. Son1.vue 2.3.3. Son2.vue 三、创建一个空仓库 3.1. 安装vuex 3.2. 新建仓库 3.3. 挂载仓库…...