深度剖析扫雷游戏的各个知识点(1)

哈喽,小伙伴,大家好,今天我来水一篇文章。害,也不算真的水吧,这次带大家深度剖析初次写扫雷游戏程序时还未接触到的知识点。废话不多说,直接进入正题


 不知小伙伴们是否还记得当时我说过扫雷游戏我们是以多个文件的方式进行制作,为了能让大家更好的回忆起来,玩出了尘封许久的三张图

那么为什么要通过多个文件的方式写这个扫雷游戏呢?

多文件方式写程序可以让我们的思路更加清晰,至于说游戏做到一半突然不知道做到了哪一步。

那么如何通过多文件的方式写游戏或者说小程序呢?

首先是我们的主文件

主文件(1号文件)里面通常包含一个简单游戏的菜单以及一些主要的运行程序

创建方式:我们一开始学c语言创建时的方式

函数的头文件

为了方便称呼,我们将函数的主体文件称为2号文件,其头文件称之为2号.h文件

2号.h的文件中通常存放函数句子,无任何执行语句(也可以说2号.h文件是函数的转接器)

如图

那么为什么说2号.h文件如同转接器呢,仅通过这张图,我们并不能很明显的看出,因此我们来看一下扫雷游戏的图

从扫雷游戏的图中,我们可以看出

void Initboard(char arr[ROWS][COLS], int rows, int cols, char put);
void display(char arr[ROWS][COLS], int row, int col);
void SetMine(char arr[ROWS][COLS], int row, int col);
FindMine(char mine[ROWS][COLS], char show[ROWS][COLS], int row,int col);

以及这些代码

#define ROW 9
#define COL 9
#pragma
#define ROWS ROW+2
#define COLS COL+2
#define EASY_COUNT 10//雷的个数

#include<stdlib.h>
#include<time.h>
#include<stdio.h>

都是我们在2号文件中所要执行的,如果说没有在这个头文件里头编译,那么效果其实和我们一开始学的c程序没有头文件——#include<stdio.h>是一样的。

那么如何将自己写的这个头文件包含在自己写的2号文件内呢?

如何创建一个全新的头文件

鼠标右击源文件,点击添加,点击新建项 

在下面这一栏输入你所创建的函数名和后缀名,点击添加即可。

添加完成后,即可在里面写语句。

温馨提示,在头文件内写的句子除#define开头的句子及小部分句子外都要添加“;”

那么如何创建自己所要函数名的源文件呢

操作也是和创建头文件的方式一样,只是在写后缀名的时候要写成 .c(当然这也是取决于你所用的语言,如使用c++写的程序,后缀名就是 .cpp) 

那么创建号函数的源文件后,我们应该在这个文件写什么以及如何包含自己创的头文件呢?

如图

头文件的包含:我们自己写的头文件需要用 " " 包含

那么这和<>包含有什么区别呢,别急这个一会给你讲清楚

那么我们来讲讲在函数文件里写什么,通过上面这张图,大家应该很清楚了,这个文件里头就是写执行的语句,如add函数,我需要它帮我算出两个数的和,并且返回两个数的和,因此只需要写return x+y;即可。

那么头文件使用 " "和<>到底有什么区别呢,以及什么时候用 " "什么时候用<>呢?

区别:自己所创建的头文件只能" ",无法使用<>,那么使用了<>包含了自己创建的头文件,发生的错误是咋样的呢?

大家请看

编译器会显示无法打开源文件,这是为什么呢?因为这个头文件是我们自己创的,不是编译器自带的。而stdio.h是编译器自带的。

那么 " "和<>包含头文件有什么区别呢?

区别:" "包含头文件时,编译器会在自己存放所有头文件的“库”里面查找一遍,这也就是为什么上图会出无法打开头文件"add.h"的原因,而像stdio.h这类编译器自带的头文件,若使用 " ",编译器则会在自己的“库”里头查找一翻,确定有这个头文件后再继续执行下面的语句,会浪费一些时间,因此我们通常会使用<>包含编译器自带的头文件,这样可以让编译器识别出这是自带的头文件,省去了查找头文件的时间,提高了程序运行的效率。

那么总结一下吧

本篇文章的内容重点在于如何创建函数文件、函数头文件、函数文件里写什么语句以及使用 " "和<>包含头文件的区别。


那么今天的内容就先到这了。喜欢我的文章就麻烦各位的小手给我点点关注,支持我一下,谢谢啦!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/595979.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构初阶:顺序表和链表

线性表 线性表 ( linear list ) 是 n 个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使 用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串 ... 线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的, 线性…

【第十七篇】使用BurpSuite实现客户端控制绕过(实战案例)

某些应用程序依赖客户端提交到服务器的数据进行操作&#xff0c;但用户可以完全控制客户端。 典型案例&#xff1a;0元购甚至账户增值等。 如图&#xff0c;点击添加购物车时抓包&#xff0c;修改价格参数为1&#xff1a; 单击放行之后再取消拦截&#xff0c;购物车界面价格发…

90天玩转Python—04—基础知识篇:Python编程基础:标识符、保留字、注释、多行语句、print输出以及模块导入详解

90天玩转Python系列文章目录 90天玩转Python—01—基础知识篇:C站最全Python标准库总结 90天玩转Python--02--基础知识篇:初识Python与PyCharm 90天玩转Python—03—基础知识篇:Python和PyCharm(语言特点、学习方法、工具安装) 90天玩转Python—04—基础知识篇:Pytho…

C++——特殊类设计

目录 前言 一&#xff0c;请设计一个不能被拷贝的类 二&#xff0c;请设计一个只能在堆上创建对象的类 2.1 思路一&#xff1a;构造函数私有 2.2 思路二&#xff0c;析构函数私有 三&#xff0c;请设计一个只能在栈上创建对象的类 四&#xff0c;请设计一个只能创建一个…

Cortex-M7 内存映射

1 前言 如图1所示&#xff0c; Cortex-M7最大支持4GB的内存寻址&#xff0c;并对内存映射(memory map)做了初步的规定&#xff0c;将整个内存空间划分为了多个内存区域(region)。每个内存区域有着既定的内存类型(memory type)和内存属性(memory attribute)&#xff0c;这两者决…

使用 msys2 sshd为 windows 搭建 ssh 服务器

文章目录 概要整体架构流程技术名词解释MSYS2openSSH服务器 技术细节安装 MSYS2 环境安装openSSH配置、启动SSH 小结和扩展 概要 SSH服务器在Linux下的搭建一般的文章讨论的比较多了。在Windows下&#xff0c;我们常用Windows的Linux子系统来搭建ssh服务器。那有没有更好更简洁…

SV学习笔记(五)

文章目录 线程的使用程序和模块什么是线程线程的概念澄清 线程的控制fork并行线程语句块fork…joinfork…join_any等待所有衍生线程停止单个线程停止多个线程停止被多次调用的任务 线程的通信写在前面event事件通知的需求semaphore旗语mailbox信箱三种通信的比较和应用 参考资料…

无人机/飞控--ArduPilot、PX4学习记录(4)

这是一篇碎碎念&#xff0c;零零碎碎的记录了小组准备竞赛的过程&#xff0c;写的挺乱&#xff0c;仅供本人记录学习历程和参考。 本章主要完成的目标&#xff1a;调试地面站 GPS、加速度校准&#xff1b;试飞并炸机 目录 地面站(QGC)安装(*未完成) 地面站Mission Planner 1.…

深度学习理论基础(六)Transformer多头注意力机制

目录 一、自定义多头注意力机制1. 缩放点积注意力&#xff08;Scaled Dot-Product Attention&#xff09;● 计算公式● 原理 2. 多头注意力机制框图● 具体代码 二、pytorch中的子注意力机制模块 深度学习中的注意力机制&#xff08;Attention Mechanism&#xff09;是一种模仿…

Pillow教程09:图片格式(png,jpg,ico等)批量转换+批量修改图片尺寸

---------------Pillow教程集合--------------- Python项目18&#xff1a;使用Pillow模块&#xff0c;随机生成4位数的图片验证码 Python教程93&#xff1a;初识Pillow模块&#xff08;创建Image对象查看属性图片的保存与缩放&#xff09; Pillow教程02&#xff1a;图片的裁…

rust 面向对象编程特性、模式与模式匹配、高级特征

面向对象编程OOP 学习了结构体、枚举&#xff0c;它们可以包含自定义数据字段&#xff0c;也可以定义内部方法&#xff0c;它们提供了与对象相同的功能。 面向对象的四大特征&#xff1a;封装、继承、多态 通过pub标记为公有的结构体&#xff0c;在其他模块中可以访问使用这…

Java数据结构队列

队列(Queue) 概念 队列的使用 注意&#xff1a;Queue是个接口&#xff0c;在实例化时必须实例化LinkedList的对象&#xff0c;因为LinkedList实现了Queue接口。 import java.util.LinkedList; import java.util.Queue;public class Test {public static void main(String[]…