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

cocos2d-x 消类游戏,类似Diamond dash 设计前几天刚刚在学习cocos2d-x,无聊之下自己做了一个类似Diamonddash的消类游戏,今天放到网上来和大家分享一下。我相信Diamonddash这个游戏大家都玩过,游戏的规则是这样的,有一个7*8的棋盘,每个格子中有不同颜色的方块(我这里选取了5种颜色),当点击某一个方块时,如果…

大家好,欢迎来到IT知识分享网。

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

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

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标记了这些方块在棋盘中的位置。

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;
}




        接下去是把标记的这些方块消去,这是游戏中比较难的一个地方,因为要实现方块移动的一个效果,我是这样实现的:每个方块掉落的位置和它下面消掉的方块个数有关,记录每个方块下面消去的游戏个数,然后当前位置减去这个个数就是该方块需要移动到的位置,并且记录这个位置。

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::makeUpBlocks()
{
	srand((unsigned)time(0));
	for (int i=0; i<WIDTH_CNT; i++)
	{
		for (int j=HEIGHT_CNT-lack[i]; j<HEIGHT_CNT; j++)
		{
			blocks[i][j].color = rand() % colorCount;
		}
	}
}

最后在下一次点击之前,别忘了把状态恢复到初始状态。

游戏截图如下图:

这是运行之前的截图

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

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

时间到,游戏结束:

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

最近在研究另外的一个游戏,三消游戏,逻辑比这略复杂。

我提供这个游戏的win32 pc版下载:

地址如下:

点击打开链接

如果需要源代码,请到我的主页 http://www.scolarart.com/article/?p=25 下载

请尊重博主的劳动成果, 转载请注明出处: http://www.scolarart.com/article/?p=25

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/32960.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信