数组转换

为了方便理解,我们使用二维数组来进行分析 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 整理的思路,你也可以按照这个思路转换成你所使用的语言。如有问题,请留言,希望能够对你有所帮助。

html2048游戏算法逻辑,2048小游戏算法解析相关推荐

  1. Python小游戏——Pygame制作2048小游戏

    pygame之2048小游戏 初学python,发现看网上的python理论太过枯燥. 哎嘿~~干脆直接弄个小游戏叭,一边学习,一边写代码. 备注: 1.很多地方我尽量注解,方便大家观看. 2.完整代 ...

  2. java编写2048小游戏

    java版2048小游戏 java编写2048小游戏 java编写2048小游戏 // An highlighted block /*** */ package games;/*** @author ...

  3. html css js实现快递单打印_JS与HTML、CSS实现2048小游戏(六)

    在前面的五篇文章中,小编带大家完成了网页版2048小游戏的基本游戏逻辑.但是在游戏结束的gameover()方法中咱们只是简单的通过alert来弹出一些信息,这样的话只能出现下图的效果.这样的游戏,不 ...

  4. 2048小游戏js实现

    摘要 2048小游戏,采用原生js的dom操作,做的比较粗糙,目的是练习原生js的常用操作.游戏功能与界面均为他人设计,本demo具体代码实现由本人独立实现. 样式 demo功能: 常见的2048游戏 ...

  5. c语言2048代码linux,C语言实现2048小游戏(示例代码)

    2048 一.设计思路 1.游戏规则 想要制作游戏,首先需要了解游戏的规则,下面就来介绍2048的游戏规则 2048游戏共有16个格子,初始时初始数字由2或者4构成. 手指向一个方向滑动,所有格子会向 ...

  6. 2048小游戏编写思路

    有点难 关键知识点 下面请各位读者先学习一下该游戏中涉及到的几个关键知识点,有了这些必备条件,我们才好讲解 2048 游戏的设计思路. 1) 改变文本颜色 2048 游戏设置的格子边框颜色为湖蓝色,其 ...

  7. java2048ai,2048小游戏ai设计

    感谢我的朋友许博瑀,他一定要赞助我个域名,于是网站改为以下地址: >>>>>>>>>>>>>>>>> ...

  8. 程序设计-在校整理-06 最常公共子序列与子串+2048小游戏+KNN简单实例

    [在校整理-06 最常公共子序列与子串+2048小游戏+KNN简单实例](注:仅供参考学习使用) 一.课题内容和要求 1.问题描述 1.1最长公共子序列与子串 1.2 2048小游戏 1.3 K-NN ...

  9. html+css+js适合前端小白的实战全解(超详细)——2048小游戏(三)

    续上一小节,我们回到newgame()这个函数,我们之前只做了init()内函数,相当于一个初始化操作 现在,我们需要再随机两个两个生成数字. 随机生成数字在这个游戏里会经常出现,用户移动一步,也会产 ...

最新文章

  1. java 泛型多重限制_Java泛型:有界类型参数中的多重继承
  2. [YTU]_2437 (C++ 习题 比较大小-类模板)
  3. 关于研究生申请的心态:submitted之后就等一下结果,不要着急
  4. SpringSecruity整合Oauth2 详解(一)
  5. 【剑指offer】数字在排序数组中出现的次数
  6. NOIP2001-普及组复赛-第2题-最大公约数和最小公倍数问题
  7. 是什么造成了数据库的卡顿
  8. Rpm另类用法加固Linux安全
  9. 谁负责本单位的各部门计算机,关于加强计算机校园网管理的若干认识
  10. 等价类划分法-案例剖析-设计测试用例
  11. 关于投票活动主办方对于微信上投票怎样刷票及微信投票怎样查刷票
  12. 【deepin 20.1】终端的介绍
  13. Unity多人游戏集合
  14. 关于使用Cytoscape软件合并多个网络图
  15. 新闻列表中,常用的文字超出后显示省略号..
  16. 提示未登录,点确认,跳到登陆页
  17. 基于JAVA家装建材网计算机毕业设计源码+系统+mysql数据库+lw文档+部署
  18. nslookup blog.csdn.net Can't resolve blog.csdn.net
  19. vscode设置#define定义宏
  20. GD32F4xx CAN接口使用

热门文章

  1. python动画精灵_如何使用Adafruit的CircuitPython创建动画精灵
  2. 民航局:春运期间10个大型机场将延长国内航班运行时间
  3. python 利用百度推广API接口,每日调整关键词价格,关键词点击率大于10%的进行降低价格和点击率小于4%进行增加价格
  4. 计算机技术与软件考试含金量,软考含金量高吗?有考的价值吗?
  5. startup_stm32f407xx.s
  6. 美签 计算机 敏感专业,美国签证:14个最容易被check的敏感专业
  7. 深度剖析E680G开发三.移植OPIE操作系统(上)
  8. C++ Primer Plus 自学第五章结尾编程10题
  9. 长征系列运载火箭连续103次发射成功
  10. python 视频转场_Python 带你高效创作短视频