cocos2d-x 消类游戏,类似Diamond dash 设计(2)
continue;
if ( !visit[x][y] && blocks[x][y].color == blocks[i][j].color)
{
ret += dfs(x, y);
}
}
return ret;
}
int GameLogic::dfs(int i, int j)
{
int ret = 1;
visit[i][j] = true;
for (int p=0; p<4; p++)
{
int x = i + dir[p][0];
int y = j + dir[p][1];
if (x >= WIDTH_CNT || x < 0)
continue;
if (y >= HEIGHT_CNT || y < 0)
continue;
if ( !visit[x][y] && blocks[x][y].color == blocks[i][j].color)
{
ret += dfs(x, y);
}
}
return ret;
}
接下去是把标记的这些方块消去,这是游戏中比较难的一个地方,因为要实现方块移动的一个效果,我是这样实现的:每个方块掉落的位置和它下面消掉的方块个数有关,记录每个方块下面消去的游戏个数,然后当前位置减去这个个数就是该方块需要移动到的位置,并且记录这个位置。
[cpp]
void GameLogic::blocksCancel()
{
for (int i=0; i<WIDTH_CNT; i++)
{
for (int j=0; j<HEIGHT_CNT; j++)
{
if ( visit[i][j] )
{
lack[i] ++;
}
else
{
blocks[i][j].moveToY = j-lack[i];
blocks[i][j-lack[i]].color = blocks[i][j].color;
}
}
}
}
void GameLogic::blocksCancel()
{
for (int i=0; i<WIDTH_CNT; i++)
{
for (int j=0; j<HEIGHT_CNT; j++)
{
if ( visit[i][j] )
{
lack[i] ++;
相关新闻>>
- 发表评论
-
- 最新评论 更多>>
您可能感兴趣的文章
- cocos2d-x android游戏使用自己的字体
- cocos2d-x学习笔记(22)--地图的使用2(TMX) --Z-Order、AnchorPoi
- cocos2d_x+lua ------触屏事件
- cocos2d-x Jni c++ java互调 并且相互刷新UI控件最简单例子(下
- Cocos2d-x Box2d笔记 :关节的使用 mouseJoint和PrismaticJoint
- 给黑莓程序添加快捷键
- cocos2d-x 3.0 rc0 + flappybird 学习心得
- cocos2d-android——触摸事件
- M8系统开发手记(2)
- cocos2d-x 2.0.3 设置高清模式注意事项(cocos2d-x 2.0.3 设置高