鸱鸦嗜鼠网

【游戏引擎Easy2D实战】选择关卡场景示例

【游戏引擎Easy2D实战】选择关卡场景示例

哈喽大家好,游戏引擎我是战选择关iecne,本期为大家带来的卡场是CPP/C++游戏编写 —— 选择关卡场景示例 ,包教包会,景示快来看看吧!游戏引擎

本片文章所用到的战选择关是Easy2D引擎,快点赞收藏关注评论支持以下博主,卡场蟹蟹

// 编译环境:Visual Studio 2019 / Easy2D v2.0.4
// 项目类型:Win32 Console Application


目录

一.主函数说明

在 Win32 程序下使用 Easy2D

二.头文件与函数声明

三.主函数

四.函数

1.创建场景并进入

2.关卡

Jungle 

CHINA

Egypt

3.加载按钮

4.移动关卡面板

5.点击按钮

左LEFT

右RIGHT

五.效果图片

六.总结

想要源代码的景示,请点击作者资源下载,游戏引擎免费哦!战选择关!卡场!景示


 

一.主函数说明

在 Win32 程序下使用 Easy2D

引擎在 Win32 应用程序和 Win32 控制台程序下的游戏引擎代码是一样的,只是战选择关两种模式下主函数的写法不同。

写控制台程序时,卡场只需声明 main 函数就可以:

int main(){ 	return 0;}

写 Win32 程序时,主函数变得有些复杂,但我们可以把它和控制台下的 main 函数一样使用:

int WINAPI WinMain(	HINSTANCE hInstance, 	HINSTANCE hPrevInstance, 	LPSTR lpCmdLine, 	int nCmdShow){ 	return 0;}

虽然引擎支持在控制台程序下工作,但是不推荐这样使用,因为游戏并不需要控制台。


二.头文件与函数声明

#include using namespace easy2d;//---------------------------------------------------------// 函数声明//---------------------------------------------------------void EnterScene();		// 创建场景并进入void InitJungle();		// 加载 Jungle 关卡void InitChina();		// 加载 China 关卡void InitEgypt();		// 加载 Egypt 关卡void InitButton();		// 加载按钮void MovePanel();		// 移动关卡面板void ClickLeft();		// 点击左按钮void ClickRight();		// 点击右按钮//---------------------------------------------------------// 全局变量声明//---------------------------------------------------------Scene*	g_Scene;		// 场景Node*	g_Panel;		// 关卡面板int		g_Level;		// 当前选中的关卡数Button* g_LeftButton;	// 左按钮Button* g_RightButton;	// 右按钮

三.主函数

刚刚已经讲了主函数哈

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int){ 	if (Game::init(L"关卡选择", 480, 720))	{ 		// 设置节点默认中心点		Node::setDefaultAnchor(0.5f, 0.5f);		// 创建场景并进入		EnterScene();		Game::start();	}	Game::destroy();	return 0;}

游戏开始->结束


四.函数

重点部分哈

1.创建场景并进入

void EnterScene(){ 	// 创建一个空场景	g_Scene = gcnew Scene;	// 设置当前关卡为 0	g_Level = 0;	// 创建背景图对象	auto background = gcnew Sprite(L"res/LS00.png");	// 背景图居中显示	background->setPos(Window::getSize() / 2);	// 缩小背景图	background->setScale(1.0f, 1.0f);	// 将图片添加到场景中	g_Scene->addChild(background);	// 三个关卡图片合并为 panel 节点	g_Panel = gcnew Node();	g_Scene->addChild(g_Panel);	// 加载关卡图片	InitJungle();	InitChina();	InitEgypt();	// 添加按钮	InitButton();	// 进入场景	SceneManager::enter(g_Scene);}

2.关卡

Jungle 

void InitJungle(){ 	// 创建图片	auto JungleImage = gcnew Sprite(L"res/LS13.png");	JungleImage->setScale(1.5f, 1.5f);	JungleImage->setPosY(Window::getHeight() / 2 - 60);	// 创建文字	auto JungleText = gcnew Sprite(L"res/LS10.png");	JungleText->setScale(1.5f, 1.5f);	JungleText->setPosY(Window::getHeight() - 195);	// 图片居中	JungleImage->setPosX(Window::getWidth() / 2);	JungleText->setPosX(JungleImage->getPosX());	// 将两个精灵添加到 panel 节点	g_Panel->addChild(JungleImage);	g_Panel->addChild(JungleText);}

CHINA

void InitChina(){ 	// 创建图片	auto ChinaImage = gcnew Sprite(L"res/LS14.png");	ChinaImage->setScale(1.5f, 1.5f);	ChinaImage->setPosY(Window::getHeight() / 2 - 30);	// 创建文字	auto ChinaText = gcnew Sprite(L"res/LS11.png");	ChinaText->setScale(1.5f, 1.5f);	ChinaText->setPosY(Window::getHeight() - 195);	// 图片居中	ChinaImage->setPosX(Window::getWidth() / 2 + Window::getWidth());	ChinaText->setPosX(ChinaImage->getPosX());	// 将两个精灵添加到 panel 节点	g_Panel->addChild(ChinaImage);	g_Panel->addChild(ChinaText);}

Egypt

void InitEgypt(){ 	// 创建图片	auto EgyptImage = gcnew Sprite(L"res/LS15.png");	EgyptImage->setScale(1.5f, 1.5f);	EgyptImage->setPosY(Window::getHeight() / 2 - 30);	// 设置文字位置	auto EgyptText = gcnew Sprite(L"res/LS12.png");	EgyptText->setScale(1.5f, 1.5f);	EgyptText->setPosY(Window::getHeight() - 195);	// 图片居中	EgyptImage->setPosX(Window::getWidth() / 2 + Window::getWidth() * 2);	EgyptText->setPosX(EgyptImage->getPosX());	// 将两个精灵添加到 panel 节点	g_Panel->addChild(EgyptImage);	g_Panel->addChild(EgyptText);}

3.加载按钮

void InitButton(){ 	// 创建开始按钮	auto startBtn = gcnew Button;	startBtn->setScale(1.5f, 1.5f);	// 设置按钮图片	startBtn->setNormal(gcnew Sprite(L"res/LS07.png"));	// 设置按钮被选中时的图片	startBtn->setSelected(gcnew Sprite(L"res/LS08.png"));	// 设置按钮禁用时的图片	startBtn->setDisabled(gcnew Sprite(L"res/LS09.png"));	// 设置按钮位置	startBtn->setPos(Window::getWidth() / 2, Window::getHeight() - 120);	// 添加开始按钮	g_Scene->addChild(startBtn);	// 创建左选按钮	g_LeftButton = gcnew Button;	g_LeftButton->setScale(1.5f, 1.5f);	g_LeftButton->setNormal(gcnew Sprite(L"res/LS01.png"));	g_LeftButton->setSelected(gcnew Sprite(L"res/LS02.png"));	g_LeftButton->setDisabled(gcnew Sprite(L"res/LS03.png"));	g_LeftButton->setPosX(g_LeftButton->getWidth() / 2);	g_LeftButton->setPosY((Window::getHeight() - g_LeftButton->getHeight()) / 2);	g_LeftButton->setEnable(false);	g_Scene->addChild(g_LeftButton);	// 点击左按钮执行 ClickLeft 函数	g_LeftButton->setClickFunc(ClickLeft);	// 创建右选按钮	g_RightButton = gcnew Button();	g_RightButton->setScale(1.5f, 1.5f);	g_RightButton->setNormal(gcnew Sprite(L"res/LS04.png"));	g_RightButton->setSelected(gcnew Sprite(L"res/LS05.png"));	g_RightButton->setDisabled(gcnew Sprite(L"res/LS06.png"));	g_RightButton->setPosX(Window::getWidth() - g_RightButton->getWidth() / 2);	g_RightButton->setPosY((Window::getHeight() - g_RightButton->getHeight()) / 2);	g_Scene->addChild(g_RightButton);	// 点击右按钮执行 ClickRight 函数	g_RightButton->setClickFunc(ClickRight);}

4.移动关卡面板

void MovePanel(){ 	// 创建目标点	auto point = Point(-Window::getWidth() * g_Level, 0);	// 创建移动动画	auto action = gcnew MoveTo(0.5f, point);	// 停止 panel 的所有动画	g_Panel->stopAllActions();	// 执行新动画	g_Panel->runAction(action);}

5.点击按钮

左LEFT

void ClickLeft(){ 	// level 为 1 时,禁用左选按钮	if (g_Level == 1)	{ 		g_LeftButton->setEnable(false);	}	// 按下左选按钮后,把右选按钮启动	g_RightButton->setEnable(true);		// level 减一	g_Level--;		// 移动 panel	MovePanel();}

右RIGHT

void ClickRight(){ 	// level 为 1 时,禁用右选按钮	if (g_Level == 1)	{ 		g_RightButton->setEnable(false);	}	// 按下右选按钮后,把左选按钮启动	g_LeftButton->setEnable(true);	// level 加一	g_Level++;	// 移动 panel	MovePanel();}

五.效果图片

9d17721a70f74ab2aeb78eac94df058e.png

 


六.总结

本节课主要是讲解了Easy2D引擎实现的选择关卡场景示例,至此选择关卡场景示例的思想博主已经真真切切彻彻底底分享完了,相信大家对这个逻辑有了一定的理解,大家可以自己动手敲敲代码,感受一下

包教包会,帅的人已然点赞收藏关注,而丑的人还在犹豫,被犹豫了,快三连吧!


想要源代码的,请点击作者资源下载,免费哦!!!

求求了


  感谢每一个观看本篇文章的朋友,更多精彩敬请期待:iecne的博客_CSDN博客-C++保姆级入门教程领域博主

文章存在借鉴,如有侵权请联系修改删除!dd8b4788b2554df4bec4b8202395cad2.gif

 

 

 

未经允许不得转载:鸱鸦嗜鼠网 » 【游戏引擎Easy2D实战】选择关卡场景示例