小议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的移动。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值