第三节 蛇的建立
这一节我们开始创建关于蛇的类了,先创建一个Snake类,让他继承Node类,为什么不是继承Sprite类呢,要问这里的原因嘛,
请戳http://www.cnblogs.com/anndaming/archive/2012/05/20/2510285.html
Snake.h的代码如下
#ifndef __Snake__Snake__
#define __Snake__Snake__
#include
#include "cocos2d.h"
using namespace cocos2d;
class Snake : public Node{
private:
Sprite* snakenode;
public:
void setNode(Sprite* node);
Sprite* getNode();
CREATE_FUNC(Snake);
virtual bool init();
};
#endif /* defined(__Snake__Snake__) */
```
Snake.cpp的代码如下
#include "Snake.h"
Sprite* Snake::getNode(){
return this->snakenode;
}
void Snake::setNode(Sprite* node){
this->snakenode = node;
this->addChild(snakenode);
}
bool Snake::init(){
return true;
}
```
先实现Snake的create函数,用宏定义CREATE_FUNC();来实现。
好了,我们在Snake里定义一个Sprite类,然后实现他的get和set函数。
我们完成Snake的类之后定义一个SnakeHead类,为什么要定义SnakeHead类呢?,头和身体不一样啊,当然要分开定义了。让SnakeHead类先继承Snake类。
SnakeHead.h代码如下
#ifndef __Snake__SnakeHead__
#define __Snake__SnakeHead__
#include
#include "cocos2d.h"
#include "Snake.h"
USING_NS_CC;
enum Direction {
up = 0,
down = 1,
left = 2,
right = 3,
};
class SnakeHead : public Snake{
private:
Direction direction;
public:
CREATE_FUNC(SnakeHead);
virtual bool init();
SnakeHead();
~SnakeHead();
void setDirec(Direction di);
Direction getDirec();
};
#endif /* defined(__Snake__SnakeHead__) */
```
SnakeHead.cpp代码如下
#include "SnakeHead.h"
bool SnakeHead::init(){
return true;
}
SnakeHead::SnakeHead(){
this->direction = up;
}
SnakeHead::~SnakeHead(){
}
Direction SnakeHead::getDirec(){
return this->direction;
}
void SnakeHead::setDirec(Direction di){
this->direction = di;
}
```
注意到了吧,我们在SnakeHead类里要添加头的方向,即Direction成员,然后实现他的set和get函数,这样的话,通过Head里的Direction成员我们才能知道蛇头应该往哪移动。
好了继续,我们往GameLayer.h里添加两个成员
```
SnakeHead* head;
Vector body;
```
第一个嘛,自然就是蛇头啦,第二个是蛇的身体,贪食蛇中蛇的身体是由很多节点构成的,所以我们用Vector来存储身体节点,Vector的具体用法后面会说
第三节结束


