2048游戏逻辑(2)---上下左右移动

监听左右上下移动代码

这个版本的暂时没有做手机端的,只做了pc端,后续会优化

上下左右移动

主要解释向左移动:

首先就遇到一个能否左移动的问题,向左移动,就从第一行开始循环,循环到最后一行,在这个循环内部,因为是向左移动,所以最左边的那一列是不参与判断的,所以列数从1开始循环,截止第3列。如果当前这个格的数值如果是0就进行下一步循环,如果不是0,就进行判断,看这格的数值与他左边的那个数字是否相等 或者 他左边的数字是否为0(因为在程序中如果为0就代表这一格为空)满足条件就跳出循环直接返回true. 如果循环完全结束没有符合条件的就返回 false

是够可以左移动

向左移动正式函数:

再看moveLeft函数,这一点有点绕,我想了很久明白了,根绝这个左移动自然就不难写出其他的移动函数,

左移动:

从第一行开始循环,循环内部从

第二列开始循环,判断这一格数字是否为0,如果为空则进入下一列循环,否则就从第一列到目前这列之间开始循环,由于行数是确定的是i行,这个循环里面我用k表示循环里的当前列,如果当前循环列这个格数字不为0,(这里外层有一个判断条件即board[i][j] !== 0,这里一定要搞清楚不要混淆),同时还有一个条件就是i 行的 k 列和i列之间没有障碍,这里通过一个函数来判断,(k<j),只需循环这两列之间的格格,只要这个循环的当前值不登录0说明这两列之间有障碍,返回false,否则返回 true,返回true时候就把board[i][k]=board[i][j]; 同时把board[i][j] =0;

如果当前循环列这个数字与外层循环的那个格格相同的时候,并且这两列之间没有障碍物,数值就相加,即加倍

向左移动函数

这里有一个函数用来判断某行的某一列到另一列之间是否有空间(左移动自然是水平方向)

同一行两列之间有没有缝隙

从某一个位置到另一个位置做一个动画


移动做一个动画效果

其余的上,下,右移动效果自然出现了

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,775评论 0 33
  • 计算机二级C语言上机题库(南开版) 1.m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平...
    MrSunbeam阅读 6,464评论 1 42
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,767评论 18 399
  • 先声明哈:我做的这个也是跟着被人学习的,写文章是为了复习思路,还有巩固一下。总而言之呢,就是为了多理解思路,多折腾...
    酱油_阅读 1,742评论 10 13
  • 感恩父母,感谢他们给予我生命;感恩父母,感谢他们给予我人间最浓的亲情与无尽的爱;感恩救我的人,感谢他给予我第...
    孙池阅读 230评论 0 0