C#实现2048小游戏

最近准备学习游戏开发,所有学习了下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获取的进行紧凑处理

所以程序方法设计是

循环(获取每一列的一维数组)

     紧凑处理(抽方法:参数是一列的一维数组)

     相邻相加(抽方法:参数是紧凑后的一维数组)

      紧凑处理(参数是相加后的数组)

    

但我的代码有些许不太一样(我的第一步紧凑处理直接在循环中将有效值赋值给与一个缓存的一维数组)

循环

      紧凑处理&

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值