1. 具体干了件什么事情
    要实现如图所示的小游戏。
    规则是有16个格子,初始时会有两个格子上安放了两个数字,每次可以选择上下左右其中一个方向去滑动,每滑动一次,所有的数字方块都会往滑动的方向靠拢外,系统也会在空白的地方随即出现一个数字方块,相同数字的方块在靠拢,相撞时会相加。不断的叠加最终拼凑出8192这个数字就算成功。如果没有了空白的地方,也没有了相同的数字可以靠拢,相撞就游戏失败。

  2. 技术难点。
    2.1如图的展示,需要做到有滑动效果,相消的效果,
    2.2移动原理,还有判断数组相消,游戏结束,游戏胜利

  3. 怎么破解技术难点
    3.1滑动效果可是使用css的样式transform: translate(x,y);这个样式具有移动效果,我们可以把所以的数字块都定位到数字盘的最左上角,为了方便,我们把这个点称之为坐标原点(0,0),那么图中数字块64所在的坐标就为(3,3),由于我们使用的数字盘,和数字块都是矩形规则的,这里我先用的是写死的宽高从(0,0)–>(3,3)体现到样式上的距离就是(3*120px,3*120px),我定位这个数字块用的是transform: translate(3*120px,3*120px);由于我使用的是vue所以就更方便了,我只要准备好数据,这些重复性的工作就交个vue了,我使用了一个数组来装这个16个数字块,使用<span>标签来包裹每一个数字块,通过遍历数组来完成定位代码如下。

    3.2数字相消的效果可以使用es6的animate函数,我们其实只是做了个数字块在两毫秒内放大1.3倍然后又缩小回原始尺寸,这样给用户的感觉就是进行了合并,代码如下图所示。

    3.3数字块移动,我们给数字块设置了如下数据结构{x:x, y:y, num:num, id:id, color:color},其实数字块的位置就是x,y的值,数字块的移动就相当于改变其x,y的值,我就拿一个方向作为例子,其他方向类似,我们按下上箭头,那么处理逻辑是先从y=0这排开始,也就是y=1这排有能够和y=0这排合并的合并,能下移的下移,然后是y=2,y=3,可是我们在新增数字块的时候x,y值是随机一个不存在的数字块坐标,这也就意味着数字中的不是有序的,我们需要首先根据y来进行排序,用排完序的和y-1排的进行比较处理,也就是说为了避免数组越界,我们排序的时候要去掉y=0这一层的,当检测到y-1为空时我们让当前数字块前进一步,并且继续和下一排做比较,如果检测到y-1不为空时,就看看他们的数值是否相同,相同则让下一排成2,本身数字块消失(这里面有个小坑,有的数字块可能面临两次操作,所以我额外记录了一个属性,用来判断当前数字块是否已经被处理过),涉及到的代码逻辑如下。


    3.4判断游戏是否成功,这个比较好实现,在每次移动的时候都去判断一次是不是有数字块的值达到了8192。
    3.5判读游戏是否失败,这个也是循环整个数组,首先判读数组是不是已经有16块了,其次判读还存不存在相邻的两个数字块的数字相同,如果满足16块且没有相同数字块相邻则判断游戏失败,关键代码如下。

  4. 下篇博客需要完善的事项有
    4.1游戏数字块的移动采用矩阵方式
    4.2背景音乐的添加
    4.3游戏算法的优化

  5. 项目源码

基于vue编写的2048小游戏相关推荐

  1. java 2048游戏_JAVA2048游戏 本课程设计是基于java语言的2048小游戏设计 联合开发网 - pudn.com...

    JAVA2048游戏 所属分类:游戏 开发工具:Java 文件大小:789KB 下载次数:4 上传日期:2020-11-23 10:57:11 上 传 者:滴滴滴大萌 说明:  本课程设计是基于jav ...

  2. 基于 Vue 制作一个猜拳小游戏

    目录 前言: 项目效果展示: 对应素材: 代码实现思路: 实现代码: 总结: 前言: 在工作学习之余玩一会游戏既能带来快乐,还能缓解生活压力,跟随此文一起制作一个小游戏吧. 描述: 石头剪子布,是一种 ...

  3. 用C++编写的2048小游戏

    随便写写的一个小游戏 这个小游戏算是原理比较简单的一个.用了curses库进行开发.顺便熟悉了一下git的相关操作. 实际写起来还是有一些小bug的,现在改正了一些. 源码请看这里:https://g ...

  4. 全志V853开发板移植基于 LVGL 的 2048 小游戏

    LVGL 开发实战 移植基于 LVGL 的 2048 小游戏 这一节将以一个已经编写好的 lvgl 小游戏 2048 描述如何将已经编写完成的 lvgl 程序移植到开发板上. 这里使用的 2048 小 ...

  5. c++2048小游戏编写

    一.序言 最近编写了一个小游戏,叫作2048,用到了面向对象的知识. 二.头文件与准备 #include<bits/stdc++.h> #include<windows.h> ...

  6. java编写2048小游戏

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

  7. 基于c++EGE图形库编写的五子棋小游戏

    基于c++EGE图形库编写的五子棋小游戏 EGE图形库 新手推荐使用 EGE(Easy Graphics Engine),是windows下的简易绘图库,是一个类似BGI(graphics.h)的面向 ...

  8. C语言编写2048小游戏

    该博文为原创文章,未经博主同意不得转载,如同意转载请注明博文出处 本文章博客地址:https://cplusplus.blog.csdn.net/article/details/104992424 2 ...

  9. 2048小游戏编写思路

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

最新文章

  1. python代码怎么写出色_如何写出更具有Python风格的代码,五分钟教会你!
  2. 基于鲁棒图进行概念架构设计
  3. css IE下执行的样式,其他浏览器忽略
  4. 判断是否为微信环境下打开的网页
  5. docker 不包含依赖 打包_Docker容器技术(概念篇)
  6. 数据挖掘: 频繁项集挖掘(购物篮问题)
  7. 计算机专业直接工作简历,2017计算机专业工作简历
  8. SpringMVC 解决中文乱码的过滤器
  9. Several ports (8080, 8009) required by Tomcat v9.0 Server at localhost are already in use.解决方案
  10. 堪称神器的命令行工具系列——curl
  11. Integer与int的种种比较你知道多少?
  12. Ubuntu 18.04 安装 NVIDIA 显卡驱动超详细步骤
  13. 提升方法AdaBoost你真的懂吗
  14. 多变量微积分笔记18——连通区域
  15. linux系统软路由软件,使用Linux+Zebra构建软路由系统
  16. 【炼数成金 NOSQL引航 一 】 进入NoSQL世界;NoSQL与SQL的战争
  17. vulnhub:Who Wants To Be King: 1
  18. 投屏类H5应用开发分析
  19. DL | TensorRT将Tensorflow模型转换为uff格式 报错Unable to locate package uff-converter-tf
  20. 周志明jvm第三版笔记-第一部分:第一章 走进java

热门文章

  1. TUSCANY SCA JAVA (二) 入门
  2. 2016中国软件行业发展趋势及网络化发展分析【图】
  3. MATLAB仪表表盘数字识别解析
  4. pushstate 和 popstate的用法详解
  5. 传输线理论(一)传输线参量
  6. 【python 处理亿级数据】使用 Pandas 处理亿级数据
  7. STM32F103C8T6移植uCOS基于HAL库
  8. 【CANopen】CANopen总线讲解
  9. 为什么有些人钱花了而赚不到钱呢?
  10. python爬虫(6)——Selenium的使用