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

【【C语言康复训练-4】】

C语言康复训练-4

head.h

#pragma once
#define ROWS 11
#define COLS 11
#define ROW 9//为什么会在头文件中定义两个 因为1到9是我们想要实现的标准单元
#define COL 9 //但是对于我们幕后调控者,对边角上并不能和其他一样方便操作,所以我们向外拓展了一圈
#define number 10
void menu();
void game();
void initboard(char board[ROWS][COLS], int rows, int cols, char ret);
void displayboard(char board[ROWS][COLS], int row, int col);
void mailei(char board[ROWS][COLS], int row, int col);
void pailei(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col);
int tongji(char board[ROWS][COLS], int row, int col);
void jifa(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col, int x, int y);
void biaoji(char show[ROWS][COLS], int row, int col);

head.c

#define _CRT_SECURE_NO_WARNINGS  1
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include"head.h"int main()
{int input = 0;srand((unsigned int)time(NULL));do{menu();printf("请开始你的选择:\n");scanf("%d", &input);switch (input){case 1:  printf("游戏开始:\n");game(); break;case 0: printf("爱玩玩,不玩滚\n"); break;default: printf("输入非法,请重试\n"); break;}} while (input);return 0;
}

project.c

#define _CRT_SECURE_NO_WARNINGS  1
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include"head.h"void menu()
{printf("*************************\n");printf("*************************\n");printf("*******1.开始游戏********\n");printf("*******0.退出游戏********\n");printf("*************************\n");printf("*************************\n");
}void game()
{//进行任何游戏首先第一步是建立一个表格char mine[ROWS][COLS] = { 0 };//ROWS和COLS代表行和列因为在此处一直用上我们在头文件中定义//这样以后对于行列的修改会更加便利char show[ROWS][COLS] = { 0 };//创建一个显示模块,//在实现扫雷过程中,我们将埋雷与排雷置于两张表格initboard(mine, ROWS, COLS, '0');//初始化埋雷表格,置入字符‘0’initboard(show, ROWS, COLS, '*');//初始化结束,对于玩家来说到这里什么也没有,那么我先写一个显示模块// displayboard(mine, ROW, COL);//地雷模块我们一般显示只是为了确认正确性// displayboard(show, ROW, COL);//显示模块是显示在屏幕上的我们把自己增加的外围去掉用ROW//当初始化完成之后,我们需要真正开始游戏mailei(mine, ROW, COL);//埋雷// displayboard(mine, ROW, COL);displayboard(show, ROW, COL);//display只是为了调试时候方便 最后哪个不好看,自己删去即可//雷埋好了,也显示出来了我们需要去排雷pailei(mine, show, ROW, COL);
}//初始化
void initboard(char board[ROWS][COLS], int rows, int cols, char ret)
{int i = 0;int j = 0;//设定两个数开始循环for (i = 0; i < rows; i++){for (j = 0; j < cols; j++){board[i][j] = ret;//为什么要设置ret 因为我们在初始化显示模块与地雷模块时赋予了不同的值//为了使两个模块在一次初始化中就完成操作}}}
//显示模块
void displayboard(char board[ROWS][COLS], int row, int col)
{//依次打印值喽int i = 0;int j = 0;for (i = 0; i <= row; i++)//第一行打印 数字序列 1到9{printf("%d ", i);}printf("\n");//换行真正意义上打印数字组for (i = 1; i <= row; i++){printf("%d ", i);//每次经过一轮打印一个数字for (j = 1; j <= col; j++){printf("%c ", board[i][j]);}printf("\n");}
}
//埋雷模块
void mailei(char board[ROWS][COLS], int row, int col)
{//我们需要电脑生成随机数。随机生成地雷int x = 0;int y = 0;int count = number;//头文件定义雷的数量是10个while (count)//怎么保证有指定数量的雷呢,这里用count--{x = rand() % row + 1;//指的是1-9y = rand() % col + 1;//rand模块我们需要去game函数中定义if (board[x][y] == '0'){board[x][y] = '1';count--;}}
}
//排雷模块
void pailei(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col)
{int x = 0;int y = 0;int win = 0;char ch = 0;while (win < row * col - number){printf("请输入雷区坐标:\n");//让用户输入坐标scanf("%d%d", &x, &y);//输入坐标我们首先判断是不是无效坐标if (x >= 1 && y >= 1 && x <= row && y <= col){if (mine[x][y] == '1'){printf("你输了\n");displayboard(mine, ROW, COL);break;}else{//此处不是地雷,我们需要激发周围的对象,就像原版扫雷一样,炸开直至看到是地雷的序号//需要我们去递归进行操作jifa(mine, show, row, col, x, y);displayboard(show, row, col);printf("是否标记:Y,不需要标记:N\n");while ((ch = getchar()) != '\n');//剔除掉我们最喜欢摁的回车scanf("%c", &ch);switch (ch){case 'Y':biaoji(show, row, col);break;default:break;}}}else{printf("字符非法,请重新输入:");}}if (win >= row * col - number){printf("扫雷成功");}else{printf("扫雷失败\n");}
}
//统计模块int tongji(char mine[ROWS][COLS], int x, int y)
{//因为我们是字符0,地雷为字符1 ,根据ASICII码值我们得出结论‘1’-‘0’=1return  mine[x - 1][y] +mine[x - 1][y - 1] +mine[x - 1][y + 1] +mine[x][y - 1] +mine[x - 1][y + 1] +mine[x + 1][y - 1] +mine[x + 1][y] +mine[x + 1][y + 1] - 8 * '0';
}
//激发模块
void jifa(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col, int x, int y)
{//激发面对的是如果if (x >= 1 && x <= row && y >= 1 && y <= col){int z = tongji(mine, x, y);if (z == 0){//把附近没有地雷的位置变成字符 “空格”show[x][y] = ' ';int i = 0;//向四周共8个位置递归调用for (i = x - 1; i <= x + 1; i++)//3行{int j = 0;for (j = y - 1; j <= y + 1; j++)//3列{if (show[i][j] == '*'){jifa(mine, show, row, col, i, j);}}}}else{show[x][y] = z + '0';}}
}
//标记模块
void biaoji(char show[ROWS][COLS], int row, int col)
{int x = 0;int y = 0;while (1){printf("请输入要标记的坐标:");scanf("%d%d", &x, &y);if (x >= 1 && x <= row && y >= 1 && y <= col){if (show[x][y] == '*'){show[x][y] = '!';break;}else{printf("输入非法,请重新输入:\n");}}else{printf("输入非法,请重新输入:\n");}}displayboard(show, row, col);
}

相关文章:

【【C语言康复训练-4】】

C语言康复训练-4 head.h #pragma once #define ROWS 11 #define COLS 11 #define ROW 9//为什么会在头文件中定义两个 因为1到9是我们想要实现的标准单元 #define COL 9 //但是对于我们幕后调控者&#xff0c;对边角上并不能和其他一样方便操作&#xff0c;所以我们向外拓展了…...

[DM8] DM-DM DBLINK DPI方式

前言 对于DM与DM之间的DBLINK&#xff0c;三种方式中&#xff0c;使用DPI方式配置上最为方便&#xff0c;ODBC方式需要安装ODBC包并配置ODBC数据源&#xff0c;dmmal方式需要设置MAL_INI数据库参数、配置dmmal.ini文件并需要重启数据库服务。 dpi类型的dblink&#xff0c;达梦…...

创建了一个名为nums_list的vector容器,其中存储了一系列的pair<int, int>

vector<pair<int, int>> nums_list;for (int i 0; i < nums.size(); i) {nums_list.emplace_back(i, nums[i]);}这段代码创建了一个名为nums_list的vector容器&#xff0c;其中存储了一系列的pair<int, int>。代码的逻辑如下&#xff1a;1. 创建一个空的…...

SpringMVC文件上传、文件下载多文件上传及jrebel的使用与配置

一.文件上传 1.导入依赖 <dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3.3</version> </dependency> 2.配置文件上传解析器 在spring-mvc.xml文件中添加文件…...

Leetcode143. 重排链表

力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 给定一个单链表 L 的头节点 head &#xff0c;单链表 L 表示为&#xff1a; L0 → L1 → … → Ln - 1 → Ln请将其重新排列后变为&#xff1a; L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → … 不能只…...

Git 回顾小结

Git是一个免费开源&#xff0c;分布式的代码版本控制系统&#xff0c;版主开发团队维护代码 作用&#xff1a;记录代码内容&#xff0c;切换代码版本&#xff0c;多人开发时高校合并代码内容 Git常用命令 命令作用注意git -v查看Git版本git init初始化本地Git仓库git add 文件…...

响应式布局(3种) + flex计算

响应式布局 1.媒体查询2.使用百分比、rem、vw、vh等相对单位来设置元素的宽度、高度、字体大小等1.rem与em2.vw、vh、vmax、vmin 3.Flexboxflexbox计算题 响应式布局是指同一个页面在不同屏幕尺寸下有不同的布局。 1.媒体查询 媒体查询是最基础的实现响应式的方式 使用media关键…...

Pytorch从零开始实战01

Pytorch从零开始实战——MNIST手写数字识别 本系列来源于365天深度学习训练营 原作者K同学 文章目录 Pytorch从零开始实战——MNIST手写数字识别环境准备数据集模型选择模型训练可视化展示 环境准备 本系列基于Jupyter notebook&#xff0c;使用Python3.7.12&#xff0c;Py…...

inappropriate address 127.0.0.1 for the fudge command, line ignored 时间同步的时候报错

1、安装ntp服务后&#xff0c;启动ntpd正常&#xff0c;但是在查看ntpd服务状态时&#xff0c;有一个红色的报错&#xff0c;报错信息如下&#xff1a; inappropriate address 127.0.0.1 for the fudge command, line ignored 2、解决方法&#xff1a;编辑ntp配置文件&#xf…...

linux并发服务器 —— 项目实战(九)

阻塞/非阻塞、同步/异步 数据就绪 - 根据系统IO操作的就绪状态 阻塞 - 调用IO方法的线程进入阻塞状态&#xff08;挂起&#xff09; 非阻塞 - 不会改变线程的状态&#xff0c;通过返回值判断 数据读写 - 根据应用程序和内核的交互方式 同步 - 数据的读写需要应用层去读写 …...

生信教程|替代模型选择

摘要 由于教程时间比较久远&#xff0c;因此不建议实操&#xff0c;仅阅读以了解学习。 在运行基于可能性的系统发育分析之前&#xff0c;用户需要决定模型中应包含哪些自由参数&#xff1a;是否应该为所有替换假设单一速率&#xff08;如序列进化的 Jukes-Cantor 模型&#xf…...

redis持久化、主从和哨兵架构

一、redis持久化 1、RDB快照&#xff08;snapshot&#xff09; redis配置RDB存储模式&#xff0c;修改redis.conf文件如下配置&#xff1a; # 在300s内有100个或者以上的key被修改就会把redis中的数据持久化到dump.rdb文件中 # save 300 100# 配置数据存放目录&#xff08;现…...

Python 连接 Oracle 详解

文章目录 1 首先&#xff0c;安装第三方库 cx_Oracle2 其次&#xff0c;配置命令 1 首先&#xff0c;安装第三方库 cx_Oracle 参考 CSDN 博客&#xff1a;Python 安装第三方库详解&#xff08;含离线&#xff09; 2 其次&#xff0c;配置命令 import cx_Oracle# 1.数据库连接…...

认识模块化

1. 模块化的基本概念 1.1 什么是模块化 模块化是指解决一个复杂问题时&#xff0c;自顶向下逐层把系统划分成若干模块的过程。对于整个系统来说&#xff0c;模块是可组 合、分解和更换的单元。 1. 现实生活中的模块化 2.编程领域中的模块化 编程领域中的模块化&#xff0c;…...

2023年及以后语言、视觉和生成模型的发展和展望

一、简述 在过去的十年里,研究人员都在追求类似的愿景——帮助人们更好地了解周围的世界,并帮助人们更好地了解周围的世界。把事情做完。我们希望建造功能更强大的机器,与人们合作完成各种各样的任务。各种任务。复杂的信息搜寻任务。创造性任务,例如创作音乐、绘制新图片或…...

OpenLdap +PhpLdapAdmin + Grafana docker-compose部署安装

目录 一、OpenLdap介绍 二、PhpLdapAdmin介绍 三、使用docker-compose进行安装 1. docker-compose.yml 2. grafana配置文件 3. provisioning 四、安装openldap、phpldapadmin、grafana 五、配置OpenLDAP 1. 登陆PhpLdapAdmin web管理 2. 需要注意的细节 内容介绍参考…...

Java | 排序内容大总结

不爱生姜不吃醋⭐️ 如果本文有什么错误的话欢迎在评论区中指正 与其明天开始&#xff0c;不如现在行动&#xff01; 文章目录 &#x1f334;前言&#x1f334;算法整理&#x1f334;两个结论&#x1f334;总结 &#x1f334;前言 本文内容是关于选择排序、冒泡排序、插入排序…...

Go 语言入门指南:基础语法和常用特性解析

什么是Go语言&#xff1f; Go语言是Google开发的一种静态强类型、编译型、并发型&#xff0c;并具有垃圾回收功能的编程语言。它用批判吸收的眼光&#xff0c;融合C语言、Java等众家之长&#xff0c;将简洁、高效演绎得淋漓尽致。 Go语言语法与C相近&#xff0c;但功能上有&a…...

20.添加HTTP模块

添加一个简单的静态HTTP。 这里默认读者是熟悉http协议的。 来看看http请求Request的例子 客户端发送一个HTTP请求到服务器的请求消息&#xff0c;其包括&#xff1a;请求行、请求头部、空行、请求数据。 HTTP之响应消息Response 服务器接收并处理客户端发过来的请求后会返…...

Qemu 架构 硬件模拟器

Qemu 架构 硬件模拟器 Qemu 是纯软件实现的虚拟化模拟器&#xff0c; 几乎可以模拟任何硬件设备&#xff0c; 我们最熟悉的就是能够模拟一台能够独立运行操作系统的虚拟机&#xff0c; 虚拟机认为自己和硬件打交道&#xff0c; 但其实是和 Qemu 模拟出来的硬件打交道&#xff…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机&#xff1a;Ubuntu 20.04.6 LTSHost&#xff1a;ARM32位交叉编译器&#xff1a;arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

【JVM】- 内存结构

引言 JVM&#xff1a;Java Virtual Machine 定义&#xff1a;Java虚拟机&#xff0c;Java二进制字节码的运行环境好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收的功能数组下标越界检查&#xff08;会抛异常&#xff0c;不会覆盖到其他代码…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》

在注意力分散、内容高度同质化的时代&#xff0c;情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现&#xff0c;消费者对内容的“有感”程度&#xff0c;正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中&#xff0…...

React19源码系列之 事件插件系统

事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】

1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件&#xff08;System Property Definition File&#xff09;&#xff0c;用于声明和管理 Bluetooth 模块相…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec&#xff1f; IPsec VPN 5.1 IPsec传输模式&#xff08;Transport Mode&#xff09; 5.2 IPsec隧道模式&#xff08;Tunne…...

大数据学习(132)-HIve数据分析

​​​​&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4…...

python报错No module named ‘tensorflow.keras‘

是由于不同版本的tensorflow下的keras所在的路径不同&#xff0c;结合所安装的tensorflow的目录结构修改from语句即可。 原语句&#xff1a; from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后&#xff1a; from tensorflow.python.keras.lay…...