这篇文章是一个从0到1的教程,这样小白也可以在magic change和在线发布你的合成西瓜!
关注我的头条号,分享更多技术学习文章。我是一个从事开发多年的老web前端程序员。前段时间我花了一个月的时间整理了一份最适合2020年学习的干货web前端学习。各种框架整理出来,交给每一个前端合作伙伴。
想要获取,可以关注我的头条号,后台私信我:前端,免费获取。
最近突然流行一个叫“合成西瓜”的游戏!看来大家真的吃瓜太多了。这个小游戏很受欢迎!
当然,游戏本身很有趣,玩起来也很简单。它是俄罗斯方块,2048和水果忍者的组合,控制水果的下落。同样的两个果实会合成一个更大的果实,然后消除它,发出溅射的效果。
玩了一段时间,不忍心看到朋友圈的照片,开始思考怎么考高分。对于程序员来说,最简单的方法就是直接改造程序。
刚好在知乎上刷到一个相关问题“有没有小游戏《合成大西瓜》的源代码?”
那我们开始工作吧
先是去GitHub搜索源代码,发现源代码已经曝光,然后下载了一个源代码到本地,摩拳擦掌。
浏览源代码后,如果发现只是魔变的一些基本功能,不要太简单!
这是我的魔变定制加成版,轻松获得千万积分!可以在线玩:https://dadaxigua.liyupi.com/
让我们一起打造属于自己的魔变合成西瓜吧!
主要分为以下几个步骤:
下载源代码并在本地运行。魔变和原理分析在线发布。1.下载源代码并在本地运行。先从GitHub下载源代码(地址在文末):
下载代码后,我们得到一个目录结构,如下所示:
可以看出整个代码目录并不复杂,是基于cocos2d游戏引擎开发的。我们只需要知道几个重要的文件:
Index.html,整个项目的主页面,project.js,项目的核心代码,游戏逻辑都在这里。settings.js,工程配置文件的res目录下,存放着图片、音频等资源。我们先试着在本地运行一个小游戏。
如果直接双击index.html,就无法运行游戏,这是很多同学遇到的“99%卡死”问题。因为直接双击网页文件,访问协议是file,不是http,会造成部分资源不可用。
缺少文件。
因此,我们需要在本地构建一个web服务器来支持http协议访问。
最简单的方法是使用serve工具。使用起来只需要三个步骤,完成的步骤可以直接跳过:
安装节点和npm节点是服务器端运行Js代码的引擎;Npm是一个依赖包管理工具,可以轻松安装工具和代码类库。进入节点中文网nodejs.cn/download/,
下载… Node.js会自动安装npm。安装成功后,输入命令行cmd,输入命令判断npm是否安装成功:npm -v copy code输出版本号,
然后安装成功:安装serve工具一行:npm运行serve复制代码进入源代码目录(这里我是大西瓜),启动serve: serve复制代码成功后,
打开浏览器访问localhost:5000 即可!动手魔改及原理在魔改前,我们要先认清游戏过程,然后根据自己要修改的内容去找对应的文件,再做修改。
游戏的过程是:点击鼠标=水果下落=水果碰撞=计算分数=展示分数
下面列举几种简单的魔改方式,包括改游戏分数、替换游戏图片、无敌模式、控制水果生成、由大水果合成小水果、让水果更Q 弹等。
(部分创意源于B 站UP GJhuxiao,给大佬跪了!)
1. 改分数拿到源代码后,怎么最快的定位要修改哪里呢?
通过分析游戏过程,发现改分数有两种实现方式,在计算分数阶段修改,或者直接修改最后要展示的分数。
再简单浏览下项目里的各个文件,发现project.js 就是影响游戏逻辑的核心文件。
那么很简单,直接在project.js 中搜索代码。分数对应的英文单词是'score' ,添加分数的英文单词是'addScore',搜搜看能不能找到线索。
果然,很快就发现了,分数是由default.score 变量作为统计值的,有这么一行代码:
a.default.score +=this.fruitNumber + 1显然,'+1' 是参与分数计算的,那我只要把基数'1' 改为自己定义的数字即可~
//extraScore 可以自己改为任意值a.default.score +=this.fruitNumber + extraScore当然也可以在进入游戏前让用户自己输入!我在project.js 开头加入了这样一段代码:
//让用户输入分数加成let extraScore;let extraScoreStr='';//输入有效数字才进入游戏while (isNaN(extraScore)) { extraScoreStr=prompt('请输入分数加成数字', '1').trim(); extraScore=parseInt(extraScoreStr);}效果如下:
当然,这种方式玩游戏更多地是晒个圈,希望别影响大家的乐趣~
通过这种方式,代码中的所有变量和配置,理论上都可以支持让用户来输入。可以通过新增一个菜单页面来实现,有大佬已经做出来了,效果很好,瑞思拜!
2. 改图片改图片应该是目前乐趣最大的魔改了吧!我看到了很多有趣的创意,合成B 站硬币、合成大胸、合成xx 等等。
但其实,改图片的原理非常简单!
直接在res 资源目录下,找到原有的图片,然后用相同名称、相同格式、相同尺寸的图片进行替换即可!
我帮大家整理了图片替换表哦,帮助提升替换效率,地址如下:
魔改大西瓜可替换的素材:https://docs.qq.com/sheet/DS0d2VVVJYmpvZ0pZ
3. 无敌模式无敌模式是指水果堆积到顶部、超出线条,游戏依然不会结束。
既然游戏会结束,那么必定有一个判断游戏结束的逻辑,也就是条件表达式。
那就在代码中搜索'end'(结束),果然找到了下面这串判断逻辑,运算结果为true 则游戏结束,为false 则继续。
这里B 站UP GJhuxiao 哥提供了非常好的思路,增加一个条件判断,而不是修改原有判断逻辑,极大地方便大家修改!
4. 控制水果生成能不能控制下一个水果是什么呢?比如每次都出现大西瓜。
当然,同样的思路,先找到水果生成的逻辑在代码的哪个位置。通过搜索'fruit'、'create' 等关键字,定位到了这段代码:
这段代码的功能是,根据当前的水果决定下一个水果。
逻辑看起来很复杂,但其实就是,前5 个水果的生成是固定的,类似新手教程,总不能刚开始就给大水果吧!
当生成第几个水果(用createFruitCount 统计)之后,开始随机生成水果。
每一个水果都对应一个数字序号(下标),由小到大依次是0-9,葡萄到西瓜。因此刚开始是两次createOneFruit(0),即生成两次葡萄,后面就是随机生成葡萄(0)到西红柿(5)。
那如果想要生成第一个水果,怎么办?
第一个水果是葡萄,对应序号0,那直接搜索createOneFruit(0) 不就成了!
直接找到对应代码,可以把0 修改成其他数字~
5. 大水果合成小水果大水果合成小水果听起来很有趣,即可以把游戏“倒着玩”,两个西瓜合成椰子,最终合成葡萄即胜利!
如果把水果膨胀理解为“升级”,那说白了,就是反转下水果的升级顺序。这里的代码不是很好定位,主要是先找到水果的合成逻辑,
可以通过搜索边界值(比如 9)、或者关键词LevelUp 的方式找到下面代码,将'+1' 变为'-1' 即可!
每次合并水果,升级改为降级。
当然,只改这里肯定是有问题的,B 站的UP GJhuxiao 也犯了一个小小小小的错误,就是没有处理边界值。
原本当合成大西瓜后,会有特殊逻辑,比如闪光特效。在顺序反转后,我们要把边界值由9 改为0。同时记得修改一下初始生成的水果,应该是大西瓜而不是小葡萄啦!
6. 让水果更Q 弹现在的水果好像没什么弹性,怎么让它们像果味香浓、Q 弹多汁的旺仔QQ 糖一样弹性十足呢?
这就涉及到物理引擎层面的修改,由于我本人对cocos2d 不熟悉,以下依然是B 站的UP GJhuxiao 的实现方式。
在生成水果的函数中,可以看到cc.PhysicsCircleCollider,就是控制水果下落行为的物理引擎。
由于整个游戏是基于cocos2d 开发,我们可以看看官方API 文档中,该物理引擎有哪些参数,很快就找到了弹性系数:
然后去修改物理引擎的参数即可,此处设置为0.9。
别看数值改动不大,设置0.9 后,水果就已经能飞起来了。如果你乐意,想要让它一飞冲天也是可以的!
记得打开无敌模式,否则一下就GameOver 了!
还可以看看cocos2d 有什么其他的参数,试着修改一下,也许会发现新的创意和惊喜哦~
作者:程序员鱼皮链接:https://juejin.cn/post/6923047027475644430来源:掘金
标题:合成大西瓜怎么魔改(合成大西瓜魔改怎么做)
链接:https://www.52hkw.com/news/rj/57961.html
版权:文章转载自网络,如有侵权,请联系删除!