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
代码实现效果
背景为镜像对称,中间三个按钮。点击按钮暂时无响应。
源码
Plane-001代码 https://github.com/DoubleYuanL/Plane-X.git