Cocos别踩白块儿案列1
Cocos 版本3.10
1.游戏介绍:
《别踩白块儿》是由 Umoni Studio (Umoni Entertainment Limited 的前身)”制作的一款休闲益智游戏。游戏于2014年4月16日上线App Store。并在全球40多个国家、地区免费游戏榜登顶榜首,超过一百个国家或地区排名前十,5月份荣登全球游戏下载总榜(iOS + Android)第一宝座,游戏上线3个月累计下载达1亿。
背景设定
别踩白块儿,这就是这个游戏的一个规则,很简单吧?谁都可以会玩,但并不是谁都能玩得很好噢。 你呢?你玩得怎么样?
《别踩白块儿 Don't Tap The White Tile》,这就是这个游戏的一个规则,我们只需要不断踩着黑色方块前进即可,很简单吧?谁都可以会玩,但并不是谁都能玩得很好噢,你呢?快来挑战看看吧!经典模式,以最快的速度到达终点。
街机模式,你有能力得多少分就得多少分,没有任何限制,这也是最具挑战性的一个模式。
限时模式,在30秒内看你能走几步。
极速模式,没有最高速限制的街机模式, 挑战你的极限接力模式,规定时间内完成50块儿,然后会有更多时间去完成另外的50块儿。
◈ 超过35种好玩的模式(持续添加中…)。
◈ 简单易玩,老少咸宜。
◈ 几十种颜色主题,支持同时多颜色主题。
◈ 美妙的钢琴音效,支持自定义播放列表。
◈ 顺畅的游戏体验。
◈ 支持社交网络分享,随时炫耀成绩。
自从越南的的独立游戏开发者——Dong Nguyen花了几个晚上为游戏界打了一针鸡血后,《疯狂的小鸟》(Flappy Bird)带来的极简游戏风暴就一直没停歇过,事实上这股风暴根本停不下来。各种版本的《2048》热潮还没过去,微博上又火了一款《别踩白块儿》。这名字怎么听着都让人摸不着头脑,但看到各种晒成绩单的朋友,笔者也忍不住下载了游戏试试,一起来看看这款iOS和安卓通吃的超简约游戏有什么过人之处。
虽然玩法听起来不复杂,但这类反应力游戏都是易学难精(你已经忘了《Flappy Bird》是怎么虐你的了吗?),尤其是画面不断下落的街机模式,非常难!第一次能过100分可以说明你的反应力超出常人的强大了。《别踩白块儿》的游戏时间每局在10秒到1分钟之间,可谓是又一个见缝插针的好帮手,尤其是在等车,排队时,必备一个不错的!另外最新版本的《别踩白块儿》可以将成绩分享到微博,看看你和朋友到底谁更强大。
2.创建Block类:
1.新建一个Black类:
打开头文件Block。H
然后使用cocos2d的命名空间:
让后我们来写一个类,类的名字叫Block让他继承自Sprite,
#ifndef __WitheBlock_Block__
#define __WitheBlock_Block__
#include<cocos2d.h>
#include<iostream>
USING_NS_CC;
class Block :public Sprite {
public:
static Block*createWithArgs(Color3B color, Size, std::string label, float fontSize, Color4BtextColor);
virtual bool initWithArgs(Color3B color, Size, std::string label, float fontSize, Color4BtextColor);
};
#endif
之后我们写一个初始化的方法:指定是虚函数,初始化应该传递进来几个参数,首先我们要考虑一个颜色值,还有大小,然后是一个字符,指定字符还要指定字符的颜色。
然后我们还要写一个静态的创建的方法,把参数复制上去,
public:
static Block* createWithArgs(Color3B color,Size size,std::string label,float fontSize,Color4B textColor);
virtual bool initWithArgs(Color3B color,Size size,std::string label,float fontSize,Color4B textColor);
之后我们就要实现这些方法,在cpp中:
首先执行父类的初始化方法:
Sprite::init();
最后加上return true; 肯定创建成功。
Block* Block::createWithArgs(Color3B color,Size size,std::string label,float fontSize,Color4B textColor)
{
auto b = new Block();
b->initWithArgs(color,size,label,fontSize,textColor);
b->autorelease();
return b;
}
5—那么我们每创建一个block都需要把他们记录下来,我们记录下来我们使用
一个数组:这里我们由看到了Vector 问:同学们还记得我们之前的介绍吗?他是一个队列。
然后在cpp文件中对他进行一个初始化:
我们从这里来对他们进行了初始化,然后我们每创建一个都会把他放在blocks里面,可以方便外界来访问他所有的块,pushback我们把b放进来。
我们再写一个方法就是说在外界我们再给他一个方法把他给移除掉,
virtual bool initWithArgs(Color3B color,Size size,std::string
void removeBlock();
然后在cpp中:
void Block::removeBlock(){
removeFromParent();//从它的父节点中删除这个节点本身。如果节点是孤立的,那么什么也不会发生。
blocks->eraseObject(this);// 抹去;擦除
}
43.内容大小,44.从左下角开始对齐45设置他的颜色和大小,之后我们需要添加一个文本,设置文本,字体大小,颜色,53,设置他的位置。
这样我们就配置好了一个方块。
3.下一节我们学习添加开始行
打开cpp文件,把不要的代码都删掉:
分析案列,开始行是一个黄色的行,那么我们来写一个方法,在.h中
然后我们来实现这个方法:
然后我们在初始化的地方先执行一下这个方法,,init
通过观察,那么开始行是要在水平方向填充满整个区域的,因此我们需要获取屏幕的大小。
然后在init方法厘米我们写这个
接下来我们来添加这个块,首先我们要引入头文件,
思考2:我们发现这个Size是报错,为什么?
报错的原因是因为访问不到,原因是因为我们没有引入命名空间。然后我们还要引入头文件,这个头文件就是我们自己定义的。
然后我们打开cpp文件,
添加一个块等于Black 需要传进来一个颜色,黄色,宽度是铺满,高度是4,不要显示字符串,字符颜色黑色。
添加进来。
void HelloWorld::addStartLine() {
auto b = Block::createWithArgs(Color3B::YELLOW, Size(visibleSize.width, visibleSize.height / 4), "", 20, Color4B::BLACK);
gameLayer->addChild(b);
//b->setLineIndex(0);
}
运行一下,可以看到开始行的效果:
4.:添加结束行:
1.打开helloworld.cpp 来写一个方法,
然后我们来添加这样一个方法,结束行是绿色的方框。
然后我们在前面,把前面的startline替换
运行看一下效果: