从全球最大同性交友网站抄了一份不一样的2048小游戏

news/2024/5/19 12:32:15/文章来源:https://blog.csdn.net/wang_yu_shun/article/details/120480533

大家好,我是“前端点线面”,一位新生代农民工,欢迎关注我获取最新前端知识和《前端百题斩》pdf版(包括JS基础篇、浏览器篇、网络篇共计50个章节,5万多字),此外有喜欢划水的老铁们,可以加我进“前端划水群”,一起嗨皮一起划。

今天突发感想想实现一个不一样的2048小游戏,此时我就会直接开干吗?这是不存在的,首先我想到了“全球最大同性交友网站”,上面那么多现成的常规2048小游戏,直接拷贝下来一份,读懂精髓然后在此基础上进行修改岂不更能达到”事半功倍“的效果,说干就干,下面开启了我的猎艳修改之旅。

一、猎艳之旅

登录“交友网站”后,开启了关键词搜索,通过搜索“2048小程序”,发现了一批优秀的代码,一位倩倩美女映入了我的眼帘,这位美女的网址是:https://github.com/windlany/wechat-weapp-2048

17007bc0a6019e4597eb546ff07b451b.png
image-20210925170337640.png

1.1 初始化

偶遇这位美女,第一步肯定是将美女拉过来,然后仔细欣赏一下是否符合自己的需求。

git clone https://github.com/windlany/wechat-weapp-2048.git

美女拉过来了,接下来要怎么处理呢?肯定先要欣赏一波美女喽,下面就有我们帅气的“微信开发者工具”打开一下,看看这个美女到底长啥样,符不符合我们的需求。

2826d69d5145816976320f8248b8594f.png
image-20210925171047138.png

1.2 核心内容理解

run起之后,发现其形象气质完全符合我们的需求,外表达标了,是时候了解一波内涵了,正所谓“外行看热闹,内行看门道”,下面就以内行的眼光看一看是否符合我们的需求。

3bf9d5e67c158496f276702eef30541f.png
image-20210925171522690.png

通过观察其目录结构,很快就能够定位到需要关键的核心内容在/page/2038这个目录下面,这个里面的核心代码就不跟读者一行一行读了,就直接抛出其核心思路吧,毕竟思路捋清楚了,后面就是编码的问题,具体思路可以分为以下三步:

  1. 初始化

初始化阶段即完成对应网格中内容的初始化填充

b4610e16463af05c5bd75d85c676357f.png
image-20210925172517687.png

(1) 从外观上看,其初始化的内容就是一个4*4的网格,其通过标签即可实现;

(2)从数据层面看,其背后存储的就是一个4行4列的二维数组,没值得位置就填空;

(3)初始时会随意挑选两个位置填充上其初始值2(此处是后期我们要动刀的一个位置,记住记住)

  1. 方向判断

初始化之后就需要进行对应的操作了,不能初始化之后咱们啥也不做吧!通过监听对应用户的操作然后进行对应的处理,为了监听用户的操作,需要绑定用户触摸的一系列事件(touchstart、touchmove、touchend),在这些事件触发之后获取对应的坐标位置,进而判断其移动方向,从而才有后续的内容更新环节。

<view bindtouchstart="touchStart" bindtouchmove="touchMove" bindtouchend="touchEnd"></view>
// 触摸刚开始的时候将会去获取手指触摸的位置坐标
touchStart: function(ev) {var touch = ev.touches[0];this.touchStartX = touch.clientX;this.touchStartY = touch.clientY;},
// 当在移动过程中不断获取其手指坐标
touchMove: function(ev) {var touch = ev.touches[0];this.touchEndX = touch.clientX;this.touchEndY = touch.clientY;
},
// 通过对比前后的坐标值,确定其移动的方向(0:上, 1:右, 2:下, 3:左)
touchEnd: function() {var disX = this.touchStartX - this.touchEndX;var absdisX = Math.abs(disX);var disY = this.touchStartY - this.touchEndY;var absdisY = Math.abs(disY);var direction = absdisX > absdisY ? (disX < 0 ? 1 : 3) : (disY < 0 ? 2 : 0);
}
  1. 内容更新合并

当判断完方向之后就到了根据方向进行对应内容的更新合并,并产生一个新的随机值进行填充,如下所示:

e2002d4b25b87d110b368205da8f9216.png
image-20210925180131289.png

如上图所示,左图是原始图,右图是向左滑动之后的结果,可以看到滑动之后其结果是将最后一行的内容进行了移动和内容求和,并在空闲区域产生了最小值,基于这个思路,是否可以将合并思路拆解为以下步骤:

(1) 根据方向将二维数组划分为对应方向的一维数组,例如向左移动则每一行就是一个一维数组,数组头是左侧;向上滑动每一列就是一维数组,数组头部就是上侧;

(2)将每个一维数组中内容进行移动——合并——移动,即先将所有有值得内容移动到头部,相邻相等的值相加至前一个,最后再将其合并后内容移动至头部;(程序中的思路拆解的很清楚,感觉做的很棒,点个赞)

(3)所有内容全部更新完毕之后,将选择一个空闲区域产生一个新值进行填充,最终渲染页面进行内容更新。

二、修改之旅

上述已经将该基础2048的所有核心内容介绍完了,那么我们找到这位美女不魔改一下是不是说不过去呀,话不多说,先亮出要修改的位置吧!!

  1. 起始值一定是2吗?为什么不能是3、4、5、6等任意值呢?

  2. 一定要是求和的模式吗?为什么不能从2048依次递减呢?

2.1 模式一

第一种模式就改一下能够支持任意初始值

  1. 既然支持任意值,则必须有一个位置进行输入,此时我们在页面中添加一个input标签用于输入其值;

cea912c1b848fd1753c3adea48109f44.png
image-20210925184748679.png
  1. 有了输入则就要找到对应修改的位置,经过一步步定位,最终找到了其最终修改的位置,然后将该值复制给对应的位置即可。

428f76f7a671457150c68e64b96609e8.png
image-20210925184912636.png
  1. 让我们看看最终的效果

0e15cdd7321143b265acad57cc77f9c5.png
image-20210925185025427.png

2.2 模式二

第二种模式就是除了增加咱们是不是可以选择不断减少的策略呢?下面来看看此种模式实现需要对代码进行如何修改,其实这个模式仅仅只需要在模式一的基础上做很小的改动即可。

  1. 改动点

image-20210925185701391
  1. 最终效果

a733a7684db9e9964ec8ce307251b2b8.png
image-20210925185639997.png

除了上述我想到的两种新玩法,你们还有什么新的玩法呢?分享出来让我们一起嗨皮一波。

三、总结

本次做的事情很简单,就是在大佬原有基础上读懂其代码,然后对其进行相应修改,产生新的模式。通过本次的分享主要学习了以下几点:

  1. 多利用“同性交友网站”,利用其内容可以事半功倍;

  2. 多学习别的的分析问题的思路,如何将复杂的问题拆解为简单的问题并进行解决;

  3. 多看别人的代码,一方面学习其代码书写模式;另一方面学习其如何进行内容的抽象(例如其在进行合并抽象部分);

1b841baa37e5e0fd2716c508fd4a41da.gif

················· 执鸢者简介 ·················

你好,我是执鸢者,毕业于华中科技大学,现在是一名百度前端研发工程师,写有多篇原创文章,分享自己在学习中的点滴收获,近期撰写了《前端百题斩》系列文章,内容包括JS基础篇、浏览器篇、网络篇,共计50个章节,5万多字,该文章已帮助很多小伙伴夯实基础,找到心仪的工作。

金九银十求职季,前端点线面助你一臂之力,为广大求职者朋友们提供免费的简历修改服务,走过路过千万不要错过。

524167d85941be5d2082fbc64a61ac3e.png

识别方二维码加我微信、拉你进交流

da53e0fc929c5ddcbe2384c157a8cc50.png

[1] 五万字前端面试宝典——前端百题斩(上)新鲜出炉

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_751748.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

10个大佬经常逛的小网站,各个爆款!!!

欢迎和号主【前端点线面】进群盘算法&#xff0c;此外本号干货满满&#xff1a;14个门类&#xff08;100篇原创&#xff09;内容&#xff08;又干又硬&#xff09;、《前端百题斩》pdf&#xff08;助力薪资double&#xff09;、20篇思维导图&#xff08;知识系统化、记忆简单化…

一步步构建大型网站架构

之前我简单向大家介绍了各个知名大型网站的架构&#xff0c;MySpace的五个里程碑、Flickr的架构、YouTube的架构、PlentyOfFish的架构、WikiPedia的架构。这几个都很典型&#xff0c;我们可以从中获取很多有关网站架构方面的知识&#xff0c;看了之后你会发现你原来的想法很可能…

【问底】徐汉彬:大规模网站架构的缓存机制和几何分形学

【导读】徐汉彬曾在阿里巴巴和腾讯从事4年多的技术研发工作&#xff0c;负责过日请求量过亿的Web系统升级与重构&#xff0c;目前在小满科技创业&#xff0c;从事SaaS服务技术建设。 在过去的工作中&#xff0c;徐汉彬从事各类缓存建设和优化&#xff0c;遇到问题无数&#xf…

npm的gh-pages结合github发布repository网站

如果你在使用github而且创建了一个新的仓库&#xff0c;你会发现&#xff0c;在仓库设置里面有结合github pages发布网站的设置&#xff0c;如下所示&#xff1a; 用过github pages都知道它可以做为静态网站来处理比如html和markdown的文件产生预览效果&#xff0c;我之前做过类…

大型网站技术架构(二)架构模式

2019独角兽企业重金招聘Python工程师标准>>> 每一个模式描述了一个在我们周围不断重复发生的问题及该问题解决方案的核心。这样&#xff0c;你就能一次又一次地使用该方案而不必做重复工作。 所谓网站架构模式即为了解决大型网站面临的高并发访问、海量数据、高可靠…

大型网站技术架构(四)网站的高性能架构

2019独角兽企业重金招聘Python工程师标准>>> 网站性能是客观的指标&#xff0c;可以具体体现到响应时间、吞吐量、并发数、性能计数器等技术指标。 1、性能测试指标 1.1 响应时间 指应用执行一个操作需要的时间&#xff0c;指从发出请求到最后收到响应数据所需要的时…

网站安全认证系统的设计变迁

网站在从小到大的发展历程中&#xff0c;安全认证系统是如何变迁的&#xff1f; 下面我们从其发展的几个阶段来分下&#xff1a; 阶段1&#xff1a; 起步&#xff0c;注册用户很少&#xff0c;两台服务器&#xff0c;一台应用服务器&#xff0c;一台数据库服务器。 用户登陆后在…

如何通过IP地址来访问网站

今天我们写极少量的代码&#xff0c;来实现用IP地址来访问一个网站。步骤如下&#xff1a; 打开命令提示符&#xff0c;输入以下代码&#xff1a; &#xff08;这里用CSDN官网https://www.csdn.net/为例&#xff09; 输入代码ping csdn.net /n 5 复制上面正在 Ping csdn.net […

网站推荐——洛谷

粉丝福利 【洛谷】&#xff08;链接在最后&#xff09;是一个我感觉非常良心的网站。自从五月以来&#xff0c;我一直在学习C语言&#xff0c;明年参加CSP大赛&#xff0c;自然少不了刷题。 这个网站我觉得最好的地方&#xff0c;就是它有很多比赛的题库&#xff1a; 有很多…

SEO和SEM策略:建立工作关系

SEO和SEM策略&#xff1a;建立工作关系 原文地址http://www.semorseo.com/1601.html SEO和SEM策略之间的关系将互联网营销的两个方面联系在一起。通过凝聚力&#xff0c;SEO和SEM关系导致更有效的整体策略。许多策略可以利用您的SEO来帮助您的SEM&#xff0c;反之亦然。 创建有…

Java小应用目录快速变网站

1. 简介 快速将一个目录变成静态站点的Java小应用 2. 程序下载 https://github.com/broncho/oss/raw/master/blog/directory-website-1.0.0.jar 3. 依赖环境 JRE 1.6 4. 使用说明 5. 运行 转载于:https://blog.51cto.com/aiilive/2285524

chrome v69 设置网站允许 flash

为什么80%的码农都做不了架构师&#xff1f;>>> **问题描述&#xff1a;**升级 Chrome V69 以后&#xff0c;发现之前通过 Setting -> Content Settings -> Flash -> Allow 列表里添加的允许运行 flash 的网站列表已经没有了&#xff0c;而且也没有了新增…

微软正式发布Azure Storage上的静态网站

微软正式宣布了Azure Storage上的静态网站&#xff0c;提供了从托管在Azure Storage上的HTML、CSS和JavaScript文件提供内容的能力。静态网站包含内容固定的Web页面&#xff0c;同时仍然允许利用JavaScript等客户端代码来创建丰富的用户体验。 有了这个新功能&#xff0c;继用于…

网站推广必备手册:SEO教程:搜索引擎优化入门与进阶(第2版)

网站推广必备手册:SEO教程:搜索引擎优化入门与进阶(第2版)【作  者】吴泽欣 [同作者作品] [作译者介绍] 【丛 书 名】 图灵程序设计丛书 【出 版 社】 人民邮电出版社 【书 号】 9787115213389 【上架时间】 2009-11-19 【出版日期】 2009 年12月 【开 本】 16开 编…

PageAdmin Cms建站系统教程之栏目的添加和管理

PageAdmin建站系统作为国内用户最多的企业级网站建设系统&#xff0c;功能强大&#xff0c;扩展灵活&#xff0c;在国内拥有庞大的用户群体&#xff0c;系统可以免费下载使用&#xff0c;被众多个人站长和网站制作公司用于网站建设和二次开发&#xff0c;上一篇小编讲解了PageA…

asp的网站能封装成app吗_开发平台封装打包app有风险吗!!

封装打包的意思就是指将一个网站、或者是h5封装成一个APP&#xff0c;这是一种“快速开发APP”的方法&#xff0c;但其实这个APP本身是没有代码、没有前端后台的&#xff0c;它的本质还是一个网页&#xff0c;只是我们通过封装的方式给这个网页套一个APP的壳子&#xff0c;让它…

外部表读取速度_影响网站打开速度的因素

为什么网站打开的速度这么慢&#xff1f;一般来说&#xff0c;影响网站打开速度的因素有以下4个方面&#xff0c;SEOer一定要记住哦&#xff01;图片源自网络一、用户有时候&#xff0c;网络打开速度较慢&#xff0c;原因可能来自用户自身。①网络用户所在的网络是否顺畅、带宽…

做网站要服务器和什么软件,做网站的软件有哪些,自己建网站要用到哪些软件?...

做网站的软件有哪些&#xff0c;自己建网站要用到哪些软件&#xff1f;在我们要准备自己建网站的时候&#xff0c;我们要搞清楚做网站要采用哪些软件。相信这是不少做网站的朋友都想知道的&#xff0c;下面小编就给你简单介绍一下。1、Dreamweaver(代码编辑器)&#xff0c;一个…

python模拟登录网站_用python模拟登录网站获取cookies(urllib与requests)

最近在学习使用python爬取网页信息&#xff0c;之前也写了几篇网站爬取以及图文混排爬取到word中的例子&#xff0c;有兴趣的可以在本站搜索python。之前大部分是不需要登录就可以访问的资源&#xff0c;所以使用python爬取的时候不需要登录。但是有些网站的信息&#xff08;比…

网站留言板防重复留言_如何做一个2000年风格复古的个人网站(1)开发环境准备...

先说一下什么是复古的个人网站&#xff1f;让我们把时钟拨回到2000年。就是PC网络开始流程的2000-2005年代。在那个年代&#xff0c;大型网站有刚刚建立起的三大门户网站&#xff1a;网易、新浪、搜狐。还有电子邮箱http://163.net&#xff0c;中华网&#xff0c;E堂等&#xf…