小小菜之Cocos2d-x游戏开发旅程——项目实例:2048(2)
2015-10-16 20:48
495 查看
2.块的封装
前面已经把游戏场景中的标题、游戏区域及网格都已经创建出来了。
接下来需要对方块进行封装,便于后面的添加、删除、合并
首先创建两个文件Tiled.cpp及Tiled.h
在头文件中让Tiled继承Node,声明一个静态create函数,如下
Tiled.h
然后在cpp中实现
这样,一个Tiled类基本创建好了
接下来,我们要在其中将带有数字的块创建,然后添加到网格中
首先,创建背景层
然后数字层
最后在写一个moveTiled函数,用来改变位置
做完这一切,回到GameScene.cpp中
先在.h文件中引入Tiled.h
创建一个Vector
ok,这样就成功的在网格中创建了一个方块,位置随机。
未完待续。。。
————9秒学院学习日志
前面已经把游戏场景中的标题、游戏区域及网格都已经创建出来了。
接下来需要对方块进行封装,便于后面的添加、删除、合并
首先创建两个文件Tiled.cpp及Tiled.h
在头文件中让Tiled继承Node,声明一个静态create函数,如下
Tiled.h
class Tiled : public Node { public: CREATE_FUNC(Tiled); bool init(); static Tiled * createTiled(int row , int col); void moveTiled(int row , int col); //块的移动 int r , c; //行,列 int number; };
然后在cpp中实现
Tiled * Tiled::createTiled(int row , int col) { Tiled * newTiled = Tiled::create(); newTiled->moveTiled(row ,col); return newTiled; }
bool Tiled::init() { if (!Node::init()) { return false; } return true; }
这样,一个Tiled类基本创建好了
接下来,我们要在其中将带有数字的块创建,然后添加到网格中
首先,创建背景层
//背景层 auto layer_tiled = LayerColor::create(Color4B(250 , 236 , 11 , 0), 190, 190); layer_tiled->setTag(TAG_TILED_BG); layer_tiled->setAnchorPoint(Vec2(0 , 0)); this->addChild(layer_tiled);
然后数字层
//数字层 int temp = rand()%10; this->number = temp > 8 ? 4 : 2; auto layer_number = Label::createWithBMFont("font-issue1343-hd.fnt", StringUtils::format("%d" , number)); layer_number->setPosition(100,105); layer_number->setOpacity(0); layer_tiled->addChild(layer_number , 10); layer_number->setTag(TAG_TILED_NUM); switch (this->number) { case 2: layer_tiled->setColor(Color3B(250 , 236 , 11 )); break; case 4: layer_tiled->setColor(Color3B(251 , 245 , 146 )); break; default: break; }
最后在写一个moveTiled函数,用来改变位置
void Tiled::moveTiled(int row , int col) //块的移动 { this->setPosition(col*190 , row*190); this->r = row; this->c = col; }
做完这一切,回到GameScene.cpp中
先在.h文件中引入Tiled.h
创建一个Vector
int row = random(0 , 3); int col = random(0 , 3); auto newTiled = Tiled::createTiled(row, col); layer_bg->addChild(newTiled); //添加到网格 allTiled.pushBack(newTiled); //添加到集合
ok,这样就成功的在网格中创建了一个方块,位置随机。
未完待续。。。
————9秒学院学习日志
相关文章推荐
- 小小菜之Cocos2d-x游戏开发旅程——项目实例:2048(1)
- Cocos2d-x 3.2 大富翁游戏项目开发-第五部分 单机游戏-级别选择ScrollView
- 【cocos2d-js官方文档】十三、CCSAXParser.js
- 【cocos2d-js官方文档】十二、对象缓冲池
- 【cocos2d-js官方文档】十一、cc.path
- 【cocos2d-js官方文档】十、log
- 【cocos2d-js官方文档】八、cc.game
- 【cocos2d-js官方文档】七、CCFileUtils
- 【cocos2d-js官方文档】六、cc.async
- 【cocos2d-js官方文档】五、Cocos2d-JS v3.0的新Action API
- 【cocos2d-js官方文档】四、基础数据类型
- 【cocos2d-js官方文档】三、Bake功能使用说明
- 【cocos2d-js官方文档】二、资源管理器Assets Manager
- cocos2d-x 3.0 常用对象的创建方式
- cocos2dx - ActionManager内存泄露
- cocos2dx常用宏
- cocos2d之Box2D详细说明 鼠标联合实现
- Cocos2d-x3.2 使用物理引擎进行碰撞检测[转]
- 【复习笔记】 cocos2d-x 2.x 渲染特效实现 一 基础回顾
- Cocos2D-X2.2.3学习笔记12(瞬间动作)