游戏中除了开始和结束的栏,当然还要有普通的黑白块行拉。
1. 声明addNormalLine函数
在HelloWorldScene.h文件中声明addNormalLine函数
//添加普通的黑白块栏
void addNormalLine(int lineIndex);
因为游戏中我们要触摸普通黑白块儿,所以我们添加了一个lineIndex参数,是为了方便后面的触摸逻辑。
2. 实现addNormalLine函数
来看一下我们具体如何实现addNormalLine函数
//添加普通的黑白块栏
void HelloWorld::addNormalLine(int lineIndex)
{
Block *b;
int blackIndex = rand()%4;
for(int i=0; i<4; i++)
{
b = Block::createWithArgs(blackIndex == i ? Color3B::BLACK : Color3B::WHITE, Size(visibleSize.width/4-1,visibleSize.height/4-1), "", 20, Color4B::BLACK);
b->setPosition(i*visibleSize.width/4, lineIndex*visibleSize.height/4);
b->setLineIndex(lineIndex);
addChild(b);
}
}
我们随机产生一个黑色块标记blackIndex,如果blackIndex刚好等于i,就显示为黑块,否则显示为白块。所以,我们能得到每一行都有一个黑块。并且都每一行都标记了lineIndex,方便后续的触摸事件。
3. 添加lineIndex的相关函数
既然要得到和设置lineIndex的指,那么就要有相关的函数。在Block.cpp中来具体实现
void Block::setLineIndex(int index)
{
this->lineIndex = index;
}
int Block::getLineIndex()
{
return this->lineIndex;
}
4. 添加startGame函数
我们另外写了一个函数,来实现开始游戏
//开始游戏
void HelloWorld::startGame()
{
addStartLine();
addNormalLine(1);
addNormalLine(2);
addNormalLine(3);
}
在这函数里面,添加了游戏黄色栏,然后添加了三栏普通黑白块栏。
运行项目后,效果如下: