最近准备学习游戏开发,所有学习了下c#并且用c#写了一个2048小游戏,现在将这款游戏的核心算法给总结一下。
先对游戏的基本规则:1:游戏是一个4*4的矩阵
2:用户可以上下左右移动
3:每次移动后会在空的地方随机生成2或者4,但是移动后没有变化则不生成。
核心逻辑代码
2048基本的功能只有两个
1 移动(上下左右)
2 随机生成2或者4
上下左右都是差不多,只说明上移动
实现思想:使用二维数组来表示4*4的矩阵,二位数组里面的值是矩阵表示的值,我们想要上移动就需要获取每一列的值(一维数组),并且将每一列中的数据进行紧凑处理:
例如:0 2
2 → 2
2 2
2 0
接下来将紧凑处理的数据进行相邻的相加:
例如:2 4
2 → 0
2 2
0 0
再做一边紧凑处理
例如:4 4
0 → 2
2 0
0 0
这一列就完成了,然后循环每一列进行相同的处理。
所以总结一下分四步
1 二位数组获取每一列的一维数组
2 将1获取的一维数组紧凑处理
3 将2获取的进行相邻的相加
4 将3获取的进行紧凑处理
所以程序方法设计是
循环(获取每一列的一维数组)
紧凑处理(抽方法:参数是一列的一维数组)
相邻相加(抽方法:参数是紧凑后的一维数组)
紧凑处理(参数是相加后的数组)
但我的代码有些许不太一样(我的第一步紧凑处理直接在循环中将有效值赋值给与一个缓存的一维数组)