挑战2048游戏算法分析

2 篇文章 0 订阅
2 篇文章 0 订阅

2048游戏核心规则:

          一行或者一列的相邻相同数字的块相加,每个方块只参与一次运算,例如某行方块从左往右为2,2,2,4,则向左拖动一次后运算结果为4,4,0,0,(0代表空白块,即没有显示数字的块),而不是6,4,0,0.,记住,每一个非空白块都是2的N次方,如果不是,说明算法有误。

 

 产生新方块的规则:

         每拖动一次(上、下、左、右),都要检查是否有可以进行相加或者移动的方块,如果有进行相加移动,并切在相加移动之后在剩余的几个空白处,随机产生一个2或者4的方块;如果拖动一次没有导致任何的移动或者相加,则不产生新的方块。

 

判断游戏结束的规则:

       在每次拖动后、检查产生新方块,然后判断是否还有空白块,如果有空白块,则游戏未结束。如果没有空白块,则游戏可能已经结束了,记住是可能,不是一定结束了。还需判断是否有可以相加的方块,如果没有,那游戏就真的结束了,如果还可以相加,那就继续吧。

 

2048游戏算法实现:

        相加并移动的算法:以向左移动为例进行分析,例如某行数字为0,2,0,4,则向左移动后,变成了2,4,0,0看起来,像是把非0的数字排到了前庙,0挪到了后面,其实就是这样,算法中也是先用这种方式将非0的方块移动到前端,算法中称此操作为移动紧促。在移动紧促后,然后进行相加,在加法完成后,需要再次移动紧促,到此就完成了一行数据的移动操作,循环各行,执行相同的操作。

 

        对于向右移动,算法中只需要把一行的数字块,从右往左取出,然后执行向左操作类似的移动紧促->相加->移动紧促操作。

 

     对于向上(下)移动,只需要把一列的数字,从上往下(从下往上)取出,执行类型的操作即可。

  以下是游戏界面,下一篇文章我将附上部分代码,敬请关注!

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值