Flappy 2048

2014-03-20

Game, Web, JavaScript

前几天,玩到了一个令人印象深刻的游戏——2048。游戏以其规则之简单、变化之丰富,红遍全球。

当然,作为一个触手怪技术宅,看到好玩的东西,总是想黑(hack)一下的。GitHub上的各路高手纷纷出招,斐波纳契版、3D版、甲乙丙丁版……各种fork版本横空出世。

终于有一天,某位同学忍不住了,吐槽道“这些游戏究竟多杀时间啊,一个Flappy Bird还不够,又来个2048……不对,还不止一个!”

想到Flappy Bird和2048都是最近流行的小游戏,异常机制机智的我就做出了这个——Flappy 2048


游戏的逻辑其实非常简单。“鸟”方块以固定的步长前行,在垂直方向上被重力向下拉、依靠跳跃产生的速度向上飞。而障碍物,整个游戏环境中只有两组、四个,它们交替、循环地出现。为了改善手感,重力会得到额外的、与“鸟”的速度相关的修正,使上升更灵敏而下降相对缓慢。

考虑到“鸟”的步长恒定,所谓的分数其实就是鸟的位置——没错,分数(score)是一个分数(fraction)。这大大简化了游戏内部的逻辑。而为了在游戏后期增加难度,游戏的刷新率是随分数增加而加快的。

游戏的另一简化之处在于,游戏不会暂停或结束,“鸟”撞到了“墙”之后,得分的整数部分会被清零。由于得分的小数部分仍然保留,障碍物的位置不会改变,游戏会继续下去。只要玩家让“鸟”飞起来就能重新上手,就像某口香糖一样,根-本-停-不-下-来!

落实到代码,略显粗暴,直接在原框架里一拆一补完事,从想法产生到第一版上线只用了个把小时。但愿2048原作者不会鄙视我如此折磨他的代码……从他发的推特看来,我多虑了:)


我还制作了几个有趣的版本:赛车版治疗颈椎版由你来放方块的角色互换版偶尔放水版……以及……恶意卖萌版

你也可以定制自己的版本