`
Lolitatang
  • 浏览: 3217 次
  • 性别: Icon_minigender_2
最近访客 更多访客>>
社区版块
存档分类
最新评论

小议2048移动算法

 
阅读更多
      不同的人做2048的移动那块的时候都有自己的算法,我把自己的算法跟大家分享一下。以向左移动为例:把数组遍历一遍,但列只需遍历到第三列,由于我一开始把二维数组的初值全赋为0,有数字的不为0,所以首先我们用一条语句if(array[i][j]==0&&array[i][j+1]!=0)来把所有的情况列出来,那一行有一个数字的:0、2、0、0;
0、0、2、0;0、0、0、2;两个数字的:0、2、4、0;0、0、2、4;0、2、0、4;其他情况以此类推。从前往后扫描,从第一个数开始,当然,如果条件不满足的话,也就是if(array[i][j]==0&&array[i][j+1]==0),前后两个都为0,flag++,然后又从第二个开始判断直到找到一个第一个满足条件的,然后这时就要移动了,由于前面可能间隔了几个0,我们就从这一行的第一位开始判断,如果第一位不为0,就把这个数移到第一位,如果第一位不为0,第二位为0的话,就把这个数移到第二位,如果前两位都不为0,第三位为0,第四位不为0的话,那就属于第一种情况了。这样就几乎完成了2048的移动。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics