先添上最终完成效果图
Github链接
https://github.com/happyte/2048,这个是2048的代码仓库,同时我在CSDN上也上传了资源。希望大家指出不足之处。
2048设计思想
1.大家都玩过2048,我们可以认为
4*4
的方块是个矩阵,开始是4*4
的零矩阵。游戏开始在任意地方出现2或4,以后每次出现的数字都是2或者4。然后我们可以上下左右移动,移动的规则是例如向左动,某一行(左移只需要考虑每一行)的数比如是[2,4,0,2]
向左移动,移动后变成[2,4,2,0]
,移动后不允许(每行或者每列,与移动方向有关)两个非0数字之间有0的存在。移动前相邻两个数相同的话会合并,例如[2,2,4,4]
会合并成[4,8,0,0]
。2.移动合并完后,会在所有为0的位置随机挑选出一个位置填上2或者4,记住是先移动合并完后才会随机填上2或者4。
3.有些时候我们发现往某个方向无法移动,例如下面这张情况:
向左和向下都无法移动,向左移动的话每一行移动后还是原来老样子,因为每一行任意相邻两个非0数之间不存在间隔且无法合并。向下移动的话每一列还是原来老样子,因为每一列任意相邻两个非0数之间不存在间隔且无法合并。在无法移动(即移动后还是老样子的情况下)不会在随机0位置处添加随机数2或4。只有移动后改变了矩阵的原来样子且矩阵最小值为0才会在随机0位置出添加随机数2或4。4.有两种情况移动后不会添加随机数2或4,第一种情况是上面这种情况,往一个方向移动没有效果。另外一种是矩阵都为非0数,没有位置添加随机数2或4。
5.