扫雷游戏代码分享(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. 代码来之不易👍👍👍 创建两个.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 };//初始化数…...
基于vue框架的的社区居民服务管理系统8w86o(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。
系统程序文件列表 项目功能:居民,楼房信息,报修信息,缴费信息,维修进度 开题报告内容 基于Vue框架的社区居民服务管理系统开题报告 一、研究背景与意义 随着城市化进程的加速,社区居民数量激增,社区管理面临着前所未有的挑战。传统的社区…...
一分钟快速熟悉makedown
Markdown 是一种轻量级标记语言,广泛用于编写文档、撰写博客、创建 README 文件等。它的语法简单易学,能够快速生成格式化的文本。以下是 Markdown 的一些常用语法和示例: 1. 标题 Markdown 支持六级标题,使用 # 符号表示。 # …...
P8649 [蓝桥杯 2017 省 B] k 倍区间:同余,前缀和,组合数,区间个数
题目描述 给定一个长度为 NN 的数列,A1,A2,⋯ANA1,A2,⋯AN,如果其中一段连续的子序列 Ai,Ai1,⋯Aj(i≤j)Ai,Ai1,⋯Aj(i≤j) 之和是 KK 的倍数,我们就称这个区间 [i,j][i,j] 是 KK 倍区间。 你能求出数列中总共有多少个 KK 倍区…...
产业与学术相互促进,2024年OEG海上能源博览会助力全球能源可持续发展
10月30日至31日,2024年OEG海上能源全产业链博览会在上海跨国采购会展中心成功举办。本次大会系全球海洋工程与高端装备领域的年度国际交流盛会——第十一届全球FPSO&FLNG&FSRU大会,同期举办第七届亚洲海洋风能大会。本次大会暨博览会由上海船舶工…...
【GDB调试】智慧中控项目的调试
一.在执行的智慧中控项目的时候,喊语音模块唤醒(小欣小欣)的时候遇到了:Segmentation fault 段错误 二.遇到段错误,一般是以下情况: “Segmentation fault”(段错误)是Linux系统中常见的程序异常终止信号。…...
《一本书讲透 Elasticsearch》京东评论采集+存储+可视化全 AI 实现
经常和出版社编辑老师交流读者的反馈。毕竟是小众书籍,豆瓣评分的人并不多。 而京东作为主要读书销售渠道,非常有必要整合一下京东读者评论,看看读者们都说了什么,以便后续的改进! 一条条的翻看非常不方便,…...
uniapp中webview全屏不显示导航栏解决方案
uniapp官网文档地址: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接口
随着社会的发展,身份认证需求不断增长,这与身份证OCR识别技术的发展密切相关。在当今社会,各个领域都需要进行身份认证。传统的人工手动录入身份证信息费时费力,速度慢且容易出错,体验不佳。而身份证 OCR 识别技术通过…...
关于 Qt+Osg中使用背景图HUD受到后绘制几何图形顶点颜色影响 的解决方法
若该文为原创文章,转载请注明出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/143607816 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、Op…...
[CKS] K8S AppArmor Set Up
最近准备花一周的时间准备CKS考试,在准备考试中发现有一个题目关于AppArmor Pod操作权限的问题。 专栏其他文章: [CKS] Create/Read/Mount a Secret in K8S-CSDN博客[CKS] Audit Log Policy-CSDN博客 -[CKS] 利用falco进行容器日志捕捉和安全监控-CSDN博客[CKS] …...
redis笔记-数据结构
zset zset一方面它是一个 set,保证了内部value 的唯一性,另一方面它可以给每个 value 赋予一个 score,代表这个 value 的排序权重。 zset的底层是由字典和跳表实现。 字典主要用来存储value和score的对应关系。跳表这个数据结构主要用来提…...
webpack的常见配置
Webpack 是一个现代 JavaScript 应用的模块打包工具,用于将项目中的多个文件和依赖打包成浏览器可以识别的文件,通常是一个或多个 JavaScript、CSS 或其他静态资源的 bundle(将多个模块或文件合并成一个或几个文件的过程,这些合并…...
text-embedding-ada-002;BGE模型;M3E模型是Moka Massive Mixed Embedding;BERT
目录 text-embedding-ada-002 一、模型概述 二、模型功能 三、模型特点 四、模型应用 五、模型优势 BGE模型 一、模型背景与特点 二、模型性能与表现 三、模型迭代与发展 M3E模型是Moka Massive Mixed Embedding 一、基本信息 二、技术特点 三、应用场景 四、性能…...
WebRTC 环境搭建
主题 本文主要描述webrtc开发过程中所需的环境搭建 环境: 运行环境: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方法进行匹配。到目前为止,我们定义的URL路由都是针对HTTP GET方法的,这是网页最常见的方法。 表单提交通常作为HTTP POST发送。在处理更动态的网页设计时,也就是所谓的单页应用(SPA࿰…...
项目管理和研发管理中的痛点及其解决方案
在现代企业中,研发管理和项目管理面临着多重挑战,包括资源配置不当、沟通不畅、目标不明确、进度控制困难等。这些痛点不仅影响项目的顺利推进,还可能导致企业在市场竞争中处于劣势。尤其是在资源配置不当方面,企业往往难以合理分…...
机器学习(基础1)
数据集 sklearn玩具数据集 数据量小,数据在sklearn库的本地,只要安装了sklearn,不用上网就可以获取 sklearn现实世界数据集 数据量大,数据只能通过网络获取(为国外数据集,下载需要梯子) skle…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...
SCAU期末笔记 - 数据分析与数据挖掘题库解析
这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...
UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...
12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...
前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...
全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...
Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
