2021-04-23-飞机大战-001-游戏开始界面

2021-04-23-飞机大战-001

原始项目介绍

参考2014年不记得当时从哪里得到的源码了,作者使用coocs2d引擎做的一个飞机大战游戏,最近打算学习了解一下这个引擎,因此打算复现学习一下。
原始代码 https://github.com/DoubleYuanL/Plane-X.git
Plane-0是原始代码,源文件和 资源文件均在,
因为暂时没有配置当时的环境,所以没有直接复现跑过(安装了cocos2d-x-4.0,居然不是向下兼容的 ,但想想没必要学习之前的库了,就放弃安装,直接上源码重新复现)。

环境介绍

cocos2d-x-4.0 + vs2019

开始

1:飞机大战开始界面

1.0:SceneStart场景开始界面类的构造

SceneStart头文件
“SceneStart.h”

#ifndef __SceneStart_H__
#define __SceneStart_H__

#include "Util.h"

class SceneStart :public Layer
{
public:
	SceneStart() {};
	~SceneStart() {};

	CREATE_FUNC(SceneStart);	//cocos2d初始函数
	bool init();

	void Start();				//开始按钮
	void About();				//关于按钮
	void Quit();				//退出程序
};
#endif

1.1:背景的添加

存放一般函数位置
Util.h

	static Sprite* addSpriteBackGround(Node* parent, const char* filename, int tag = 0)
	{
		Sprite* sprite = Sprite::create(filename);
		sprite->setAnchorPoint(Vec2(0, 0));
		sprite->setTag(tag);
		
		Texture2D::TexParams tp = { backend::SamplerFilter::LINEAR , backend::SamplerFilter::LINEAR,
			backend::SamplerAddressMode::MIRROR_REPEAT , backend::SamplerAddressMode::MIRROR_REPEAT };
		sprite->getTexture()->setTexParameters(tp);
		
		auto rect = Rect(0, 0, visibleSize.width, visibleSize.height);
		sprite->setTextureRect(rect);
		
		parent->addChild(sprite);		
		return sprite;
	}

创建一个精灵对象,参数:背景文件名(图片形式);
设置精灵的Anchor点为Vec2(0,0),即为精灵的左下坐标,设置tag标记;
设置纹理参数,后两个参数为镜像重复
设置显示区域rect,
添加至当前节点。

1.2:按钮的添加

SceneStart.cpp

	MenuItem* itemStart = MenuItemImage::create(IMAGE_MENU_START_NORMAL,
		IMAGE_MENU_START_SELECT);
	itemStart->setCallback(CC_CALLBACK_0(SceneStart::Start, this));
	MenuItem* itemAbout = MenuItemImage::create(IMAGE_MENU_ABOUT_NORMAL,
		IMAGE_MENU_ABOUT_SELECT, CC_CALLBACK_0(SceneStart::About, this));
	MenuItem* itemQuit = MenuItemImage::create(IMAGE_MENU_QUIT_NORMAL,
		IMAGE_MENU_QUIT_SELECT, CC_CALLBACK_0(SceneStart::Quit, this));

三个按钮功能类似,代码一致;
创建图像按钮,参数:1:未按下图像;2:按下图像;3:回调函数,不需要参数类型。
三个按钮的回调函数可以暂时不写,仅仅声明一个空类即可。

1.3:菜单添加

SceneStart.cpp

	Menu* menu = Menu::create();
	addChild(menu);
	//在这之前声明定义好三个按钮
	menu->addChild(itemStart);
	menu->addChild(itemAbout);
	menu->addChild(itemQuit);
	menu->alignItemsVertically();

创建菜单,添加按键,设置摆放位置。

1.4:全局图片宏定义

存放全局资源文件,头文件等。
Common.h

#ifndef __COMMON_H__
#define __COMMON_H__

#include "cocos2d.h"
#include "cocos-ext.h"
#include <iostream>
#include <string>

using namespace std;
#include "external/tinyxml2/tinyxml2.h"

USING_NS_CC;
USING_NS_CC_EXT;

constexpr auto IMAGE_BACKGROUND = "Background/background.png";

constexpr auto IMAGE_MENU_START_NORMAL = "Button/btn1_normal.png";
constexpr auto IMAGE_MENU_START_SELECT = "Button/btn1_push.png";
constexpr auto IMAGE_MENU_ABOUT_NORMAL = "Button/btn2_normal.png";
constexpr auto IMAGE_MENU_ABOUT_SELECT = "Button/btn2_push.png";
constexpr auto IMAGE_MENU_QUIT_NORMAL = "Button/btn3_normal.png";
constexpr auto IMAGE_MENU_QUIT_SELECT = "Button/btn3_push.png";
constexpr auto IMAGE_MENU_BACK_NORMAL = "Button/btn_back_normal.png";
constexpr auto IMAGE_MENU_BACK_SELECT = "Button/btn_back_press.png";

constexpr auto XML_ABOUT = "About/about.xml";
constexpr auto PLIST_ABOUT = "About/about.plist";
constexpr auto JSON_ABOUT = "About/about.json";

constexpr auto FONTS_FILE = "fonts/Marker Felt.ttf";
constexpr auto FONTS_NUM_FILE = "fonts/num.jpg";

constexpr auto ANI_BOOM = "Plane/PFBoom.plist";
#endif

代码实现效果

2021-04-23-飞机大战-001-游戏开始界面
背景为镜像对称,中间三个按钮。点击按钮暂时无响应。

源码

Plane-001代码 https://github.com/DoubleYuanL/Plane-X.git

上一篇:Spring面试题001


下一篇:JavaSE自学笔记Real_001