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

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

  前几天刚刚在学习cocos2d-x,无聊之下自己做了一个类似Diamond dash的消类游戏,今天放到网上来和大家分享一下。我相信Diamond dash这个游戏大家都玩过,游戏的规则是这样的,有一个7*8的棋盘,每个格子中有不同颜色的方块(我这里选取了5种颜色),当点击某一个方块时,如果和这个相连的方块的个数大于等于三个,那么这些相连的方块都会被消去,然后在这些消去的方块上面的方块都会掉下来,补充这些消去的方块,同时,上面的方块掉下来之后在上面就回产生空缺,然后需要随机生成方块来补全上面的空缺,每次消去的得分为2^n,n是连续的方块的个数,游戏计时为1分钟。

        在游戏设计的过程中最主要的是游戏逻辑的设计,这个游戏的逻辑很明确,首先随机生成一个棋盘,棋盘中放随机一种颜色的方块,方块的摆放并没有限制(并不像三消游戏,要求生成的棋盘不能在行中或者列中有相邻的三个颜色相同);随机生成方块的代码如下:


[cpp]
void GameLogic::init() 

    srand((unsigned)time(0)); 
    for (int i=0; i<WIDTH_CNT; i++) 
    { 
        lack[i] = 0; 
        for (int j=0; j<HEIGHT_CNT; j++) 
        { 
            blocks[i][j].moveToY = j; 
            blocks[i][j].color = rand() % colorCount; 
        } 
    } 
    memset( visit, false, sizeof(visit) ); 
    totalScore = 0; 

void GameLogic::init()
{
 srand((unsigned)time(0));
 for (int i=0; i<WIDTH_CNT; i++)
 {
  lack[i] = 0;
  for (int j=0; j<HEIGHT_CNT; j++)
  {
   blocks[i][j].moveToY = j;
   blocks[i][j].color = rand() % colorCount;
  }
 }
 memset( visit, false, sizeof(visit) );
 totalScore = 0;
}

 

        然后当用户点击里面某个方块时,需要计算出和该方块相邻的相同颜色的方块的个数,这里用了深度优先遍历,数出这样的方块的个数,并且用visit标记了这些方块在棋盘中的位置。


[cpp]
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)  

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

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

豫ICP备11007008号-1