cocos2d-x 消类游戏,类似Diamond dash 设计(2)

来源:未知 责任编辑:责任编辑 发表时间:2013-11-15 19:48 点击:

            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学习笔记(19)--label 、label atlas
  • cocos2d-x学习笔记(23)--地图的使用3--CCTMXLayer
  • Cocos2d-x学习(一):HelloWorld
  • cocos2dx在xcode下开发,编译到android上(2)
  • cocos2d 设置屏幕默认方向
  • Cocos2d-x 2.0 之 Actions “三板斧” 之一
  • cocos2d-x学习笔记(22)--地图的使用2(TMX) --Z-Order、AnchorPoi
  • cocos2d-x学习笔记(18)--游戏打包(windows平台)
  • cocos2d-x学习笔记(16)--spritesheet(精灵表单)
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1