代码编织梦想

前几天朋友圈突然被一个小游戏 “羊了个羊” 刷屏了,出于好奇我也打算小玩一把试试,结果没想到上头了。。。

游戏的玩法非常简单,类似 “消消乐”,从一堆方块中找到相同图案的 3 个方块并消除即可。

 

但没想到,就是这个操作无比简单的小游戏,难住了大家,很多同学无论如何都过不了第二关!(当然,也包括我 🐶)

 

不过作为一名程序员,我玩了几次就发现不对劲了。。。

方块的生成是完全随机的,而且越玩到后面的层数方块的范围就越小、可选的方块就越少。在这两个条件下,这个游戏真的有没有解很难说,真就变成了一个运气游戏(据说通关率不足 0.1 %)。

 

不过作者很良心,给了大家逆天改命的机会,看广告可以使用道具和复活。唉,不过明知道通关的概率微乎其微,我还是没忍住,又玩了几十把,因为总觉得自己可能是那个 “天之骄子”。这个游戏之所以能爆火,除了营销套路之外,最主要的还是拿捏了用户的心理吧。
 

 

但是,玩游戏的过程中,我也没闲着,我在思考这个游戏是怎么开发出来的、可能用了什么算法之类的。

当我被游戏虐的心累了之后,我决定自己做一个能通关的 “羊了个羊”,就叫它 “鱼了个鱼” 吧!

熬夜肝了几个小时,游戏的雏形就做出来了,这两天又打磨了一下,才正式上线,并且把所有代码完全开源了!

在线游戏地址:https://yulegeyu.cn

开源地址:https://github.com/liyupi/yulegeyu

进入主页,可以选择多种不同的难度:
 

 

还可以自定义难度,比如设置槽位的数量,设置每层的块数等等:
 

 

玩法和羊了个羊类似,不过这里我加了 4 种道具,每种道具都可以无限使用(不用看广告哈哈):
 

 

因为时间有限,一人全役,做的不是很精致,但是完全足够满足一下通关的欲望了哈哈。

最后再简单说一下这个游戏的实现原理吧,主要有 4 个点:

  1. 游戏全局参数:做游戏的同学都知道,游戏中会涉及很多参数,比如槽位数量、层数等等。我们要将这些参数抽取成统一的全局变量,供其他变量使用。从而做到修改一处,游戏自动适配。还可以提供页面来让用户自定义这些参数,提高游戏的可玩性。

  2. 网格:为了让块的分布相对规整、并且为计算坐标提供方便,我将整个游戏画布分为 24 x 24 的虚拟网格,类似一个棋盘。一个块占用 3 x 3 的格子。

  3. 随机生成块:包括随机生成方块的图案和坐标。首先我根据全局参数计算出了总块数,然后用 shuffle 函数打乱存储所有动物图案的数组,再依次将数组中的图案填充到方块中。生成坐标的原理是随机选取坐标范围内的点,坐标范围可以随着层级的增加而递减,即生成的图案越来越挤,达到难度逐层加大的效果。

  4. 块的覆盖关系:怎么做到点击上层的块后,才能点下层的块呢?首先要给每个块指定一个层级属性。然后有两种思路,第 1 种是先逐层生成,然后每个格子里层级最高的块依次判断其周围格子有没有块层级大于它;第 2 种是在随机生成块的时候就给相互重叠的块绑定层级关系(即谁覆盖了我?我覆盖了谁?)。这里我选择了第 2 种方法,感觉效率会高一些。

当然,以上只是我的实现方式,未必是最好的,但是完全能够满足游戏的功能诉求了。

欢迎大家体验~

在线游戏地址:https://yulegeyu.cn

开源地址:https://github.com/liyupi/yulegeyu

开源代码网站_yjreset的博客-爱代码爱编程_开源代码查询网站

!!!github!!!codepen!!!码云 (1)到sourceforge上查找相关代码; (2)到google code上面查找具体的代码; (3)到apache网站上寻找java的相关代码; (4)直接到开源项目网站上面寻找代码; (5)到csdn等网站下载代码,偶尔会有意外的收获; (6)到图书出版社下

Mit Mini Cheetah开源代码开发环境搭建-爱代码爱编程

MIT Mini Cheetah–开源代码仿真环境搭建 摘要 2019年以来,关于四足机器人的报道越来越多,我比较关注的是MIT mini cheetah。Mini Cheetah的外表是很可爱的,它长约0.4米,重约20磅,外形比较接近人们养的小狗,让人看了就心生欢喜。不过它可爱的外表下却有着普通机器人望尘莫及的性能,它不但可以进行后空翻,还可以高速

魔改一波合成大西瓜!代码已开源~-爱代码爱编程

周末了,总是忍不住想放飞下自己。于是就试玩了一会大西瓜合成的小游戏,结果愣是停不下来,有点上头啊。 这小游戏很有特点啊,界面第一次打开的时候只有 loading,竟然没有广告,良心了。说白了,这款小游戏就是俄罗斯方块、2048、水果忍者的结合体(可不只是题主说的 2048 的翻版),通过控制水果的下落,两个相同的水果碰撞到一块的时候就会合成更大的

羊车门问题python程序_用Python实现羊车门问题-爱代码爱编程

羊车门问题可能有些人没听说过,给大家科普一下:有3扇关闭的门,一扇门后面藏着汽车,其余门后面是山羊,只有主持人知道每扇门后面是什么。参赛者可以选择一扇门,在开启他之前,支持人会开启另一扇门,露出门后面的山羊,然后允许参赛者更换自己的选择。请问参赛者更换选择与不更换选择猜中汽车的几率各是多少? 整体代码: from random import*

handsomeblog开源啦~_识时务者-hjj的博客-爱代码爱编程

文章目录 HandsomeBlog开源啦~首先在HandsomeBlog文件夹下执行Git Bash命令行执行 git init 初始化本地仓库执行 git add . 将所有代码放到本地暂存区域,等待上传。执行 git commit -m "此次上传的说明"执行 git remote add origin "https://gitee.com/h

奇舞周刊第 464 期:我被 pgx 及其背后的 rust 美学征服_奇舞周刊的博客-爱代码爱编程

记得点击文章末尾的“ 阅读原文 ”查看哟~ 下面先一起看下本期周刊 摘要 吧~ 奇舞推荐 ■ ■ ■  我被 pgx 及其背后的 Rust 美学征服 我无意发现了 pgx 这样一个使用 Rust 来撰写 postgres extension 的集成工具,在深入地了解其文档并写了几百行代码后,我立刻就被那种直击心灵的简约之美冲破了防