zl程序教程

您现在的位置是:首页 >  后端

当前栏目

【C++游戏引擎Easy2D】基于基础类型学习使用核心Game+Window+Input详解

C++游戏引擎基础学习 详解 基于 类型
2023-09-27 14:19:56 时间

在这里插入图片描述


iecne


🧛‍♂️iecne个人主页:iecne的学习日志
💡每天关注iecne的作品,一起进步
💪学C++必看iecne
本文专栏【C++游戏引擎】.
🐳希望大家多多支持🥰一起进步呀!
iecne


往后看免费提供安装包

✨前言

哈喽大家好,我是iecne,本期为大家带来的是CPP/C++【游戏引擎Easy2D】一篇打通引擎顶级类型,Listener。包教包会,快来看看吧!
引擎支持 Visual Studio 2013 及以上版本,如果你使用的是较低版本的 VS,那么你需要考虑一下更新你的编译器了

任务描述

如何根据据【游戏引擎Easy2D】核心功能Game+Window+Input,学完秒变大神
本实践旨在通过多个代码的案列,让大家理解和掌握如何使用Easy2D引擎来将这四个基础类型详细的解释并且会运用
iecne



Easy2D导读

对于编程而言,初学者最需要的不是技能,而是成就感。
如果你喜欢用 C/C++ 编写自己的小游戏,那么 Easy2D 将是个不错的选择,它大大简化了游戏制作过程,可以帮助你快速开发 Windows 上的 2D 小游戏。
它的特点和它的名字一样,Everything is Easy!


安装 Easy2D

使用简易安装器
运行里面的 install.bat 文件进行安装。
点击此链接进行下载(纯免费,给官方搞成了VIP)
点击下载
安装程序会检测您已经安装的 Visual Studio 版本,并根据您的选择将对应库文件解压至 VS 库目录下。
Easy2D 不支持 VS2012 及以下的版本(包括 VC6.0),如果你使用的是低版本的 VS,那你需要尝试一下新版的 Visual Studio 了。

安装环境:
操作系统:Windows 7 及以上操作系统。
编译环境:Visual Studio 2013 (x86 & x64) 及以上版本。


一、Game 游戏类

1.Game的基本结构

Game 类控制整个游戏的进度和流程,管理所有资源的初始化和释放。
当然,它最主要的功能是初始化游戏、启动游戏和销毁游戏资源:
这个在第一章节就ok过了,标准的开头

// 初始化游戏
if (Game::init())
{
    // 启动游戏
    Game::start();
}
// 游戏结束,销毁资源
Game::destroy();

但是实际上在我们写代码的时候,会在init(中间直接调整整个的窗口,看下面)


2.控制大小

Game::init 函数默认会创建一个 640x480 大小的窗口,初始化时也可以设置窗口的标题和大小:

// 创建标题为 Hello,大小为 1000x800 的窗口
if (Game::init(L"Hello", 1000, 800))
{
    // 初始化成功
}
init(L"文本",X,Y);

具体结构如上


3.控制游戏

点赞关注支持!!!

一).暂停继续

Game 类还可以控制游戏的暂停和继续,游戏暂停后所有的定时器、动画、更新函数都会暂停,只有按钮正常运行,所以你可以在按钮的回调函数中控制游戏暂停。

// 暂停游戏
Game::pause();
// 继续游戏
Game::resume();
// 判断游戏是否正在暂停
bool isPaused = Game::isPaused();

这一部分对待需要制作关卡类需要暂停的朋友十分友好,不需要耗尽心思搞这些了


二).退出

在代码的任何地方调用 quit 函数可以直接让游戏退出:

// 退出游戏
Game::quit();

就是和exit()差不多,一个是面向程序,一个是面向单个游戏


三).时间

Game 类还有一些不建议手动调用的函数,例如 reset 可以重置游戏内部计时:

Game::reset();

二.Window 窗口类

Window 类封装了有关窗口操作的一些函数,例如修改窗口大小等等。

1.常用函数

Window 类的常用函数如下:

// 修改窗口大小为 1000x800
Window::setSize(1000, 800);
// 修改窗口标题为 Hello
Window::setTitle(L"Hello");
// 设置鼠标样式为“手指针”
Window::setCursor(Window::Cursor::Hand);
// 获取窗口宽度
float width = Window::getWidth();
// 获取窗口高度
float height = Window::getHeight();
// 获取窗口大小
Size size = Window::getSize();
// 获取窗口标题
String title = Window::getTitle();

2.其他用法

Window 类除了可以设置窗口大小、标题外,还可以设置窗口图标,需要先将 ico 格式图标加入到 VS 资源中,然后调用下面的代码:

// 设置窗口图标为资源 IDR_ICON1 所在的图标
Window::setIcon(IDR_ICON1);

Window 类还封装了弹窗提示的函数,类似于 MessageBox:

// 弹出一个提示窗口
Window::info(L"这是一条提示", L"提示标题");
// 弹出一个警告窗口
Window::warning(L"这是一条警告", L"警告标题");
// 弹出一个错误窗口
Window::error(L"这是一条错误", L"错误标题");

这个类似于EasyX等的MessageBox,与其不同的是一个是让你们选择YESNO等,而这个是专门提示类的


三.Input 输入类

Input 类用来获取用户的鼠标或键盘输入,以实现游戏和用户的简单交互。
例如,判断一个键盘按键是否正在按下:

// 获取字母 A 键是否正被按下
bool isDown = Input::isDown(KeyCode::A);

这个函数同样可以对鼠标按键有效:

// 获取鼠标左键是否正被按下
bool isDown = Input::isDown(MouseCode::Left);

Input 不止可以获取正在按下的状态,还可以判断按键是否刚刚按下、或刚刚抬起:

// 判断字母 A 键是否刚刚按下
bool isPress = Input::isPress(KeyCode::A);
// 判断字母 A 键是否刚刚抬起
bool isRelease = Input::isRelease(KeyCode::A);

Input 类可以直接获取鼠标的当前位置:

// 获取鼠标位置
Point mousePos = Input::getMousePos();

如果你需要获取鼠标在某个方向的移动增量,例如,你想实现在游戏中显示自定义图片的鼠标样式,可能需要先隐藏系统鼠标,然后通过获取鼠标移动增量,来画出一个虚拟鼠标:

// 获取鼠标 X 方向的位移增量
float deltaX = Input::getMouseDeltaX();
// 获取鼠标 Y 方向的位移增量
float deltaY = Input::getMouseDeltaY();
// 获取鼠标滚轮的位移增量
float deltaZ = Input::getMouseDeltaZ();

关于命名

Easy2D 按照以下规律命名函数:

小驼峰式命名法则,第一个单词小写,后面的单词首字母大写,如Window::setTitle
所有函数均按照动词+名语形式命名,如Logger::showConsole
获取对象的属性值:get+属性名,如Node::getWidth
修改对象的属性值:set+属性名,如Node::setPos
获取对象的状态(bool值):is+状态名,如Node::isVisiable


总结

本节课主要是讲解了Easy2D引擎实现的教程,至此该课示例的思想博主已经真真切切彻彻底底分享完了,相信大家对这个逻辑有了一定的理解,大家可以自己动手敲敲代码,感受一下,包教包会。若有任何侵权和不妥之处,请私信于我,定积极配合处理,看到必回!!!

帅的人已然点赞收藏关注,而丑的人还在犹豫,被犹豫了,快三连吧!
原创不易,还希望各位大佬支持一下
点赞,你的认可是我创作的动力!
收藏,你的青睐是我努力的方向!
评论,你的意见是我进步的财富!


iecne
感谢每一个观看本篇文章的朋友,更多精彩敬请期待~( ̄▽ ̄~)~:
iecne的博客_CSDN博客-C++领域博主
若有任何侵权和不妥之处,请私信于我,定积极配合处理,看到必回!!!

iecne