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

作者 | 八知道也

来源 | 公众号“异步双城”

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

程序员升职记

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

640?wx_fmt=jpeg

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

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

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

640?wx_fmt=gif

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

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

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

640?wx_fmt=jpeg

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

640?wx_fmt=gif

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

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

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

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

640?wx_fmt=jpeg

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

7 Billion Humans

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

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

640?wx_fmt=jpeg

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


往期精彩回顾

我是一个线程

关于老刘和码农翻身

我是一个Java Class

面向对象圣经

函数式编程圣经

TCP/IP之大明邮差

CPU阿甘

我是一个网卡

我是一个路由器

一个故事讲完HTTPs

编程语言的巅峰

Java:一个帝国的诞生

JavaScript:一个屌丝的逆袭

640?wx_fmt=jpeg

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值