懒骨头(http://blog.youkuaiyun.com/iamlazybone QQ:124774397 青岛)
笔记分好几次完成,可能有的地方转载的不全,请 传送到这里
《Flappy Bird》
关于这个游戏骨头不多说了
直接开始学习吧(山寨不好听)
正好前段时间看了几个DEMO拿这个游戏练练手
开搞!
报环境:
vs2013+cocos2dx3.0beta2
首先下载apk,找到资源文件,裁剪几个图片:
用脚本新建一个空的Cocos2dx项目
新建一个Scene类
#include "cocos2d.h"
#include "Obstacle.h"
class FlyBirdGame :public cocos2d::Layer
{
public:
static cocos2d::Scene* createScene();
virtual bool init();
CREATE_FUNC(FlyBirdGame);
void initUI();
void gameStart(Object* pSender);
void update(float time);
Obstacle* obstacle;
};
#include "cocos2d.h"
#include "FlyBirdGame.h"
#include "resource.h";
USING_NS_CC;
Scene* FlyBirdGame::createScene()
{
auto scene = Scene::create();
auto layer = FlyBirdGame::create();
scene->addChild(layer);
return scene;
}
bool FlyBirdGame::init()
{
if (!Layer::init())
{
return false;
}
initUI();
return true;
}
initUI里是一些UI初始化方法:
// win size
auto winSize = Director::getInstance()->getVisibleSize();
// game bg
auto bg = Sprite::create(bird_bg);
bg->setPosition(winSize.width / 2, winSize.height / 2);
bg->setScale(winSize.width / bg->getContentSize().width, winSize.height / bg->getContentSize().height);
this->addChild(bg);
// start btn
auto startBtn = MenuItemImage::create(bird_start_btn, bird_start_btn_pressed, CC_CALLBACK_1(FlyBirdGame::gameStart, this));
auto menu = Menu::create(startBtn, NULL);
menu->setTag(100);
this->addChild(menu);
// hero
auto hero = Sprite::create(bird_hero);
hero->setPosition(winSize.width / 5, winSize.height*0.8);
hero->setVisible(false);
hero->setTag(200);
this->addChild(hero);
开始游戏按钮绑定的gameStart方法:
void FlyBirdGame::gameStart(Object* pSender)
{
auto btn = this->getChildByTag(100);
btn->setVisible(false);
auto hero = this->getChildByTag(200);
Size win = Director::getInstance()->getWinSize();
obstacle->gameStart = true;
}
隐藏开始按钮,显示小鸟,水管开始移动
还有更新方法:
scheduleUpdate();
void FlyBirdGame::update(float time)
{
obstacle->update();
}<