c++实践--cocos2dx, 2048v1.0

2048游戏逻辑

采用二维数组作为游戏界面的显示,

技术分享

2048游戏逻辑:
【1】生成游戏对象(2个数字)
CreatePerson()
CreatePerson()
【2】更新游戏视图界面
如果胜利就不相应用户输入
if(isWin)
{
	return;
}
if(up)
{ctlfunc()}else if(down)
{ctlfunc()}else if(left)
{ctlfunc()}else if(right)
{ctlfunc()}

---------------------------
随机生成位置CreatePerson()
{
只要数组元素为空就生成,并记录当前坐标位置。
}
移动控制ctlfunc()
{
	//对于第0行不需要移动,已经是最上行了
	for (int y = 1; y < 4; y++)
	{
		for (int x = 0; x < 4; x++)
		{
			person = PersonList[x, y];
			if (person == null)
			{
				//如果当前位置没有对象,则不需要进行任何操作
				continue;
			}
			//如果当前位置有对象,则执行以下代码
			//判断当前位置的前面所有位置是否有对象
			int destPos = -1;
			for (int y1 = y - 1; y1 >= 0; y1--)
			{
				personBefore = PersonList[x, y1];
				if (personBefore != null)
				{
					//如果有,则不再向前找
					if (person.name.Equals(personBefore.name))
					{
						//如果是相同的对象则合并,不再需要移动当前对象
						destPos = -1;
						Destroy(person);
						PersonList[x, y] = null;
						//更新合并后的数字
						personBefore.SendMessage("UpdateLevel");
					}
					break;
				}
				else
				{
					//如果没有,则继续向前找
					destPos = y1;
				}
			}
			if (destPos > -1)
			{
				//完成移动
				//1、更新位置矩阵信息
				PersonList[x, y] = null;
				PersonList[x, destPos] = person;
				//2、更改当前游戏对象的位置
				person.transform.position += new Vector3(0, (y - destPos) * ItCastHelper.YOffset, 0);
			}
		}
	}
	//新生成游戏对象
	CreatePerson();
}

代码结构:

   使用mvc的软件模型,scene和layer的解耦和。

技术分享技术分享


心得:

   cocos引擎确实够强大,可以很好的练习c++,c代码将linux的内核源代码写到了极致。c++代码将cocos同样写成了极品。仔细的拜读源代码,确实可以很优雅地将程序码出来。

结合网上的资源,加上自己的理解,算是自己也写出一个demo。


cmd进入到E:\BaiduYunDownload\6yue\cocos2dx_env\cocos2d-x-3.1\tools\cocos2d-console\bin目录中,
>python cocos.py new wuyq-2048  -p com.wuyq.cn -l cpp -d E:\

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。