学了点COCOS2DX,一直感觉也没什么大意思,所以就找个教程做个小游戏出来,反正国庆在校也没啥事,自娱自乐。
PS;我用的版本是cocos2dx3.2
一、创建项目
cocos new -p com.donttouchwhiteblock.xuran -l cpp -d .
二、创建block类
因为别猜白块里面最重要的一个元素就是“块”,所以我们要为这个元素创建一个类,然后实例化一些方法,以便完成游戏中的诸多行为
首先是gameblock.h文件
#pragma once
#include <iostream>
#include <cocos2d.h>
USING_NS_CC;
class Block:public Sprite
{
public:
static GameBlock* CreateWithArgs(Color3B color, Size size, std::string label, float fontsize, Color3B textcolor);
virtual bool initWithArgs(Color3B color, Size size, std::string label, float fontsize, Color3B textcolor);
void removeblock();
private:
static Vector<GameBlock*> *blocks;
};
头文件里面定义了三个成员函数:
第一个是创建一个block,根据所获取到的参数
第二个是初始化一个新的块根据参数。
第三个是移除一个块
还有创建了一个block指针类型的数组,用于存储我们创建的block的对象。
其次是GameBlock.cpp文件
#include "GameBlock.h"
Vector<GameBlock*> *GameBlock::blocks = new Vector<GameBlock*>();
GameBlock* GameBlock::CreateWithArgs(Color3B color, Size size, std::string label, float fontsize, Color3B textcolor)
{
auto b = new GameBlock();
b->initWithArgs(color, size, label, fontsize, textcolor);
b->autorelease();
blocks->pushBack(b);
return b;
}
void GameBlock::removeblock()
{
removeFromParent();
blocks->eraseObject(this); //删除向量中特定的对象
}
bool GameBlock::initWithArgs(Color3B color, Size size, std::string label, float fontsize, Color3B textcolor)
{
Sprite::init();
setContentSize(size);
setAnchorPoint(Point::ZERO);
setTextureRect(Rect(0,0,size.width, size.height));
setColor(color);
auto l = Label::create();
l->setString(label);
l->setSystemFontSize(fontsize);
l->setColor(textcolor);
addChild(l);
l->setPosition(size.width/2, size.height/2);
return true;
}
有对block数组的初始化,一个块的初始化函数,包括各种参数的设置以及一个创建函数,一个释放删除函数。
三、添加开始条
创建了块对应的类和相应的方法之后,我们就要开始真正的一步一步来做了。首先,别踩白块的游戏在开始的时候是有一条黄色的部分,代表着起点。那么首先就来为我们的游戏添加这个黄色的起点块。
很简单,从HelloWorldScene文件里面添加一个新的函数叫做AddStartLine,函数的实现很简单,就是通过CreateWi