Cocos2d-x 3.1代码跟资源文件下载地址 http://yunpan.cn/ccH7rrMpkPiz2 (提取码:9ab6)
2048这游戏主要需要实现以下几种功能:
1.通过滑动,对图块进行移动
2.滑动结束后在空白的地方绘制一个新的图块
3.显示最高分,当前分
4.失败的判定
1.通过滑动,对图块进行移动
这里最核心的就是第一个功能的实现。这里要先明确2048滑动的原理。
背景是一个4*4的正方形,这里左下角的格子为第0行第0列,右上角的为第3行,第3列
如
2 | |||
2 | 2 | 2 | |
2 | |||
2 | 2 |
向上滑动后
第一步是 第2行的全部向上移动变成了
4 | 2 | 2 | |
2 | |||
2 | 2 |
第二步是第1行的全部向上移动变成了
4 | 2 | 2 | |
2 | |||
2 | 2 |
第三步是第0行的全部向上移动变成了
4 | 2 | 2 | |
4 | |||
2 |
滑动到什么位置
向上滑动 会从第2行的开始计算,因为第3行的已经在最上面了,不会在移动了
先读取第2行第0列 的值,如果是0(表示空)就跳过 第2行第0列......开始判断第2行第1列.
否则 先把第3行第0列的 设为移动目标区域
第2行第0列的开始移动的时候会判断 他的移动目标区域的值 是否跟它的值一样 一样的话 第2行第0列的移动到移动目标区域( 第3行第0列),然后第3行第0列的值变为原来的2倍
如果不一样的话 有2种情况 第一种就是为0,这样的话 第2行第0列的移动到 移动目标区域(第3行第0列),然后第3行第0列的值变为第2行第0列的值
第二种就是非0的图块,这样的话 就判断这个格子跟移动目标区域的格子中间是否有格子
没有就不移动,把这个格子设为本列下一个移动对象的 移动目标区域
有就移动到 移动目标区域 的下一行的格子 然后把这个格子设为本列下一个移动对象的 移动目标区域
2. 滑动结束后在空白的地方绘制一个新的图块
4*4的格子,可以定义一个2维数组,使每个格子都有一个值,格子的值就是其上面显示的图块的值,空格子的值设为0,这样每次移动结束后,读取这个二维数组的值,在里面随机取一个值为0的格子,使其的值随机为2或4
@H_404_261@