
- 🧛♂️iecne个人主页:点赞关注收藏评论支持哦~
- 💡每天关注iecne的作品,一起进步
- 👉本文收录专栏:【C++游戏引擎】
- 🐳希望大家多多支持🥰一起进步呀!
哈喽大家好,我是iecne,本期为大家带来的是CPP/C++【游戏引擎Easy2D】一篇打通引擎进阶类型,Keycode+MouseCode+Image。包教包会,快来看看吧!
引擎支持 Visual Studio 2013 及以上版本,如果你使用的是较低版本的 VS,那么你需要考虑一下更新你的编译器了
如何根据据Easy2D引擎中Keycode+MouseCode+Image四个类型来展开讲解
本实践旨在通过多个代码的案列,让大家理解和掌握如何使用Easy2D引擎来将这四个基础类型详细的解释并且会运用
目录
【游戏引擎Easy2D】一篇打通引擎进阶类型,Keycode+MouseCode+Image
对于编程而言,初学者最需要的不是技能,而是成就感。
如果你喜欢用 C/C++ 编写自己的小游戏,那么 Easy2D 将是个不错的选择,它大大简化了游戏制作过程,可以帮助你快速开发 Windows 上的 2D 小游戏。
它的特点和它的名字一样,Everything is Easy!
使用简易安装器
运行里面的 install.bat 文件进行安装。
点击此链接进行下载(纯免费)
安装程序会检测您已经安装的 Visual Studio 版本,并根据您的选择将对应库文件解压至 VS 库目录下。
Easy2D 不支持 VS2012 及以下的版本(包括 VC6.0),如果你使用的是低版本的 VS,那你需要尝试一下新版的 Visual Studio 了。
安装环境:
操作系统:Windows 7 及以上操作系统。
编译环境:Visual Studio 2013 (x86 & x64) 及以上版本。
关注点赞收藏评论支持,现在开始我们的旅途
KeyCode 枚举了键盘上几乎所有按键的键值。
对于按键类型的知识,我们可以完完全全的用本文的知识
字母键:
- // 字母 A 键
- KeyCode::A
- // 字母 Z 键
- KeyCode::Z
格式是
KeyCode::那个字母
数字键:
- // 数字 0 键
- KeyCode::Num0
- // 数字 9 键
- KeyCode::Num9
Num各位都知道吧?Number
数字小键盘键:
- // 数字小键盘 0 键
- KeyCode::Numpad0
- // 数字小键盘 9 键
- KeyCode::Numpad9
注意在写的时候,一定要加上小键盘,否则擅长小键盘的朋友会吐槽你的游戏按键坏了的
其他常用键:
- // 回车
- KeyCode::Enter
- // 退出键
- KeyCode::Esc
- // 上下左右键
- KeyCode::Up
- KeyCode::Down
- KeyCode::Left
- KeyCode::Right
- // 空格
- KeyCode::Space
这里引用官网上的例子了,基本就是用英文构造
使用 KeyCode 配合 Input 类可以获取用户按键输入,例如:
- // 获取字母 A 键是否正被按下
- bool isDown = Input::isDown(KeyCode::A);
而Input类我们以后再说
用bool类型创造isDown 然后加上Input::isDown(再加上第一部分)
如何根据据Easy2D引擎中的提取键盘信息来控制精灵,也是图像移动,来传给 Sprite
- #include
-
- using namespace easy2d;
-
- class Man : public Sprite
- {
- public:
- Man()
- {
- // 加载图片
- this->open(L"man.png");
- // 居中显示在屏幕上
- this->setAnchor(0.5f, 0.5f);
- this->setPos(Window::getWidth() / 2, Window::getHeight() / 2);
- }
-
- void onUpdate()
- {
- if (Input::isDown(KeyCode::Up))
- {
- // Man 的 Y 坐标减少 2
- this->movePosY(-2);
- }
- if (Input::isDown(KeyCode::Down))
- {
- // Man 的 Y 坐标增加 2
- this->movePosY(2);
- }
-
- if (Input::isDown(KeyCode::Left))
- {
- // Man 的 X 坐标减少 2
- this->movePosX(-2);
- }
- if (Input::isDown(KeyCode::Right))
- {
- // Man 的 X 坐标增加 2
- this->movePosX(2);
- }
- }
- };
-
- int main()
- {
- if (Game::init())
- {
- // 设置窗口标题和窗口大小
- Window::setTitle(L"Moving Man");
- Window::setSize(640, 480);
-
- // 创建场景
- auto scene = gcnew Scene;
- // 进入该场景
- SceneManager::enter(scene);
-
- // 创建一个 Man 对象
- auto hero = gcnew Man;
- // 将 Man 添加到场景中
- scene->addChild(hero);
-
- Game::start();
- }
- Game::destroy();
- return 0;
- }
如上,精灵图片不提供,各位自己找找哈
点赞关注评论支持,下次找到不迷路
MouseCode 枚举了鼠标的三个按键,分别是:
- // 鼠标左键
- MouseCode::Left
- // 鼠标右键
- MouseCode::Right
- // 鼠标中键
- MouseCode::Middle
使用 MouseCode 配合 Input 类可以获取用户按键输入,例如:
- // 获取鼠标左键是否正被按下
- bool isDown = Input::isDown(MouseCode::Left);
这个和2)差不多,大家自己领悟
点赞关注评论支持,下次找到不迷路
Image 表示图片,程序中使用的每一张图片都对应一个 Image 对象。
每个 Sprite 都包含一个 Image 对象,例如当你创建很多个像下图一样的 Sprite 时,它们包含的 Image 对象其实是同一个。这样做的好处就是节省内存。
Image 的另一个作用就是创建Animation(帧动画),这个部分在动画教程中讲解。
将图片资源复制到内存中需要耗费一定的时间,为了避免在游戏过程中因为加载图片产生卡顿,你可以在游戏开始前调用 Image::preload 函数来提前将游戏中用到的图片加载到内存中。
- Image::preload(L"图片1.png");
- Image::preload(L"图片2.png");
- Image::preload(L"图片3.png");
这个不重要,大家了解一下
这两部分真的和键盘的那一篇十分相关,各位去看看
点赞关注评论支持,下次找到不迷路
如果你想设置 Text 的字体、粗细、字号等等属性,就需要为它创建一个 Font 。
Tips
Font 不是节点,因为它仅仅描述了文本的样式。Font 不能显示在屏幕上,也不能进行旋转之类的操作。
- auto text = gcnew Text(L"Hello Easy2D!");
-
- // 创建一个字体,宋体、字号40、粗体、斜体
- Font font = Font();
- font.family = L"宋体";
- font.size = 40;
- font.weight = Font::Weight::Bold;
- font.italic = true;
- // 也可以用下面的代码创建字体,效果和上面一样
- Font font = Font(L"宋体", 40, Font::Weight::Bold, true);
-
- // 设置字体
- text->setFont(font);

分步骤进行上面的操作虽然简洁明了,但是熟悉了相关操作后,上面的代码难免显得有些啰嗦。你可以直接在 Text 的构造函数中传入更多的参数来指定它的字体样式:
- // 在创建文本的同时指定它的字体样式
- auto text = gcnew Text(L"Hello Easy2D!", Font(L"宋体", 40, Font::Weight::Bold));
Tips
没有设置 Text 的字体时,它会自动创建一个默认字体并使用。
多个 Text 可以使用一个 Font,例如下面的代码中 text1 和 text2 使用了同一个 Font 对象。
text1 和 text2 在内部会各自拷贝一份 Font,所以创建文字后再修改 font 不会影响 text1 和 text2。
- Font font = Font(L"", 40); // 系统默认字体、字号40
- auto text1 = gcnew Text(L"Hello", font); // text1 使用 font
- auto text2 = gcnew Text(L"Easy2D", font); // text2 也使用 font
字体这部分实际上可以用图片省略,但是大可不必
记得字体不能乱弄,参考word吧~
Easy2D 按照以下规律命名函数:
- 小驼峰式命名法则,第一个单词小写,后面的单词首字母大写,如
Window::setTitle- 所有函数均按照
动词+名语形式命名,如Logger::showConsole- 获取对象的属性值:
get+属性名,如Node::getWidth- 修改对象的属性值:
set+属性名,如Node::setPos- 获取对象的状态(bool值):
is+状态名,如Node::isVisiable
本节课主要是讲解了Easy2D引擎实现的教程,至此该课示例的思想博主已经真真切切彻彻底底分享完了,相信大家对这个逻辑有了一定的理解,大家可以自己动手敲敲代码,感受一下,包教包会。若有任何侵权和不妥之处,请私信于我,定积极配合处理,看到必回!!!
帅的人已然点赞收藏关注,而丑的人还在犹豫,被犹豫了,快三连吧!
原创不易,还希望各位大佬支持一下
点赞,你的认可是我创作的动力!
收藏,你的青睐是我努力的方向!
评论,你的意见是我进步的财富!

感谢每一个观看本篇文章的朋友,更多精彩敬请期待:iecne的博客_CSDN博客-C++保姆级入门教程领域博主
文章存在借鉴,如有侵权请联系修改删除!