学习cocos2dx练习的2048游戏!练习做完了很久,是跟写的,似懂非懂的,最近感觉又所顿悟。自己就在没看教程的前提下再次写了一次。把源码都放上来了,自己觉得注释清楚了的,有想交流的请留言,请不吝留言狠批,欢迎大家来喷!!!!!!!!!!!
首先创建项目:cocos new TZFE -p com.xxx.tzfe -l cpp -d d:\cocos
首先把demo中部需要的代码删除掉:
bool HelloWorld::init()
{
if ( !Scene::init() )
{
return false;
}
}
也就是这个函数(方法)保留成这样就行,然后编译运行一下,显示的已经是空项目就好了。
新建CardSprite.h和CardSprite.cpp两个文件:承载数字格子用的
CardSprite.h::::文件代码如下:
#ifndef _CARDSPRITE_H_
#define _CARDSPRITE_H_
#pragma once
#include "cocos2d.h"
class CardSprite:public cocos2d::Sprite
{
public:
/*
1.number 显示的数字
2.width 单元格的宽
3.height 单元格的高
4.CardSpriteX 单元格的x轴
5.CardSpriteY 单元格的Y轴
*/
static CardSprite *createCardSprite(int numbers,int width,int height,float CardSpriteX,float CardSpriteY);
virtual bool init();
CREATE_FUNC(CardSprite);
//设置数字
void setNumber(int num);
//获取数字
int getNumber();
private:
//定义数字
int number;
//初始化方法
void enemyInit(int numbers, int width, int height, float CardSpriteX, float CardSpriteY);
//定义显示的数字的控件
cocos2d::Label *lableCardSpriteNumber;
//定义单元格的背景
cocos2d::LayerColor *labyerCardSpriteBG;
};
#endif // !_CARDSPRITE_H_
再完善CardSprite.cpp文件代码如下:
#include "CardSprite.h"
USING_NS_CC;
/*
1.number 显示的数字
2.width 单元格的宽
3.height 单元格的高
4.CardSpriteX 单元格的x轴
5.CardSpriteY 单元格的Y轴
*/
CardSprite *CardSprite::createCardSprite(int numbers, int width, int height, float CardSpriteX, float CardSpriteY)
{
CardSprite *enemy = new CardSprite();
if (enemy&&enemy->init())
{
enemy->autorelease();
enemy->enemyInit(numbers,width, height,CardSpriteX, CardSpriteY);
return enemy;
}
else
{
delete enemy;
enemy = NULL;
return NULL;
}
}
bool CardSprite::init()
{
if (!Sprite::init())
{
return false;
}
return true;
}
//设置数字
void CardSprite::setNumber(int num)
{
number = num;
//判断数字的大小来设置字体的大小
if (number >= 0)
{
lableCardSpriteNumber->setSystemFontSize(40);
}
if (number >= 16)
{
lableCardSpriteNumber->setSystemFontSize(30);
}
if (number >= 128)
{
lableCardSpriteNumber->setSystemFontSize(26);
}
if (number >= 1024)
{
lableCardSpriteNumber->setSystemFontSize(18);
}
//改变单元格颜色
if (number==0)
{
labyerCardSpriteBG->setColor(cocos2d::Color3B(200, 190, 180));
}
if (number == 0)
{
labyerCardSpriteBG-&