阅读本文大概需要 1.8 分钟。


作者 | 八知道也


前几天休假的时候接触了几款挺有意思的小游戏,写出来安利一下,也许能搏同行一笑。



程序员升职记



《程序员升职记》是一款送给宅男们的智力游戏。 在每一层,老板都会派给你一份工作。你可以通过编写小程序自动把工作搞定!一旦你成功了,恭喜!你升职了!


你以为我在玩游戏?其实我在学编程!_学编程


实际上这是一个非常不错的编程启蒙游戏,指令集与汇编类似,作为一个没有学过汇编的弱鸡,这就是我的汇编基础课啦:)


程序的关卡界面长这样,一看就十分硬核,难度阶梯型递增:


简单的加减乘除 -> 斐波那契 -> 去重排序, ......


你以为我在玩游戏?其实我在学编程!_编程游戏_02


随便挑选一关进去瞅瞅,可以看到能利用的主要指令包括:

copyfrom, copyto, add, sub, bump+(相当于++),bump-(相当于--),jump/jump if zero/jump if negative等。和汇编比较类似。


我们能做的就是用拖拽的方式组合不同的处理步骤,左上角的小人会根据你的设计去读取InBox的数据,借助中间的地毯(内存)可用空间缓存中间结果,输出最终结果到OutBox中。


你以为我在玩游戏?其实我在学编程!_学编程_03


当组织好右边的工作流之后,就可以按那个绿色的执行键进行测试,执行键左右两个按键可以进行正逆方向的单步调试,最右边的滑块可以用来控制是否快进。运行起来的效果如下图所示,还是很可爱的。


你以为我在玩游戏?其实我在学编程!_学编程_04


即使最终通过了右上角上级的考核,也不代表你就完美过关了。


因为游戏还会对你的代码长度和耗时进行评估,并且告诉你哪里还有改进空间。


优化诊断和效率诊断有时候不可兼得,真是逼死强迫症啊。


后者更多时对程序设计的考验,但前者有时难以捉摸,由于指令集有限,即使逻辑一样,jump的时机不一样会导致程序长度有那么一两行的差异,总之要达到前者请尽量复用代码。


你以为我在玩游戏?其实我在学编程!_编程游戏_05


游戏还有一个个人欣赏的优点:支持答案以伪代码的形式导入导出,这个特性很体现程序员思维方式,非常有利于爱好者分享讨论自己的解法,已经发现github上有人上传了自己的解法大全,并有几百个star。



7 Billion Humans



比较详细介绍了上面那个游戏,再简短地介绍一下它的续作:7 Billion Humans


和前作最大的不同是移除了input和output,但是引入了并行,同步,随机,变量,循环,条件判断和更复杂高级的计算指令,难度比第一代有所上升,使得寻找同时满足效率和长度的解法愈加困难,运行起来的效果也是更加忙碌。


你以为我在玩游戏?其实我在学编程!_学编程_06


以上游戏Steam均有销售,支持Win和Mac,如有兴趣,请尽量支持正版。





往期精彩回顾

每秒 570000 的写入,如何实现?

这40张图送给单身程序员,情人节请一笑而过!

IDEA一定要懂的32条快捷键

世上最污技术解读,我竟然秒懂了。

Bing挂了!百度又“赢了”

遇到卖茶女,应该如何优雅的回复她

我被程序员坑了600万致公司倒闭,当事人逐条反驳:这锅我不背

一千行MySQL详细学习笔记(值得学习与收藏)

七点建议助您写出优雅的Java代码

你以为我在玩游戏?其实我在学编程!_学编程_07

欢迎关注我的公众号「程序员的成长之路」,阅读更多精彩!