2048小游戏算法解析

数组转换

为了方便理解,我们使用二维数组来进行分析 2048 的算法逻辑。

首先我们简单的了解一下游戏玩法:

简言之,就是通过上、下、左、右移动,使相邻的相同元素进行合并,进而数字相加得到 2048的结果的游戏。

(如果费解的话,可以下载一个2048的游戏体验一下)

注:这里的相邻,指忽略掉两个元素中间的空元素的情况。(下图所示都是相邻情况)

相邻说明

好了,我们来分析一下移动的逻辑处理:

以向右移动为例吧:那我们怎么来处理这种情况呢,我们的算法应该怎么实现呢? (注:空的地方其实是0)

向右移动示意图

我们先判断能否向右移动: (移动条件 1.相邻元素相同 或者 2.当前元素的右侧元素为空)

下面的 board 使我们定义的二维数组。

能否向右移动逻辑

如果,上面的函数返回 false, 则不能够进行移动,如果返回 true, 则我们需要进行下一步

合并操作:

移动情况1
移动情况2

if (board[i][k] == 0) 描述的是 移动情况1

else if (board[i][k] == board[i][j]) 描述的是 移动情况2   两种移动情况需要检测中间块是否包非0元素。

移动后变更数组数据

这就是 2048 小游戏的基本逻辑,其他方向的移动都是这个思路。我这里使用的 js 整理的思路,你也可以按照这个思路转换成你所使用的语言。如有问题,请留言,希望能够对你有所帮助。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 忙…
    何敏_a71f阅读 1,292评论 0 0
  • 我就简单写一下玩街头篮球这款游戏所遭遇的各种经历吧。 就聊聊街头篮球吧,我自认为人缘还不错,平时也不人前人后说闲话...
    脑袋里开party阅读 2,744评论 0 0
  • 我望向天空,朝霞和碧露 人潮和车流 我在你的城市 在没有你的孤单里 我在你的身旁 在失去你的悲伤里 风吹起 梦散去...
    柠檬不加冰king阅读 1,391评论 0 0
  • 时光匆匆, 白驹无形。 你入我一影, 我惜你一生。
    序小木阅读 1,567评论 13 43
  • 熬夜大家都知道对身体不好,可是却是当下生活中许多人经常性的行为,它正在严重影响我们的生活质量。 ...
    fighterwu阅读 2,929评论 0 1

友情链接更多精彩内容