这游戏玩通关了绝对能月薪上万

因为能独立玩通关这款游戏的人,要么是一名优秀的程序员,要么已经具备了优秀程序员的编程能力,转行做程序员的话,月薪绝对轻松过万。

这是一款模拟编程的手机游戏,名叫「人力资源机器」(英文名 Human Resource Machine)。由于关卡难度递进的很合理,所以也可以作为一门学习编程(有点类似汇编)的课程来玩。

我们先来感受下这诡异的情节和画风:

诡异的情节和画风

接下来,我来做个简短的介绍,帮助「完全不会编程」又想学编程的同学入个门先。

游戏最基本的玩法是:每次执行 「inbox」命令时,小人会取出左侧 INBOX 中最上面的一个方块放在手中,每次执行「outbox」命令时,小人会把手中的方块放到右边的 OUTBOX(输出)上。玩家需要按照任务的要求,把所有 INBOX 中的值一个个经程序正确处理后,输出到 OUTBOX 中去。

游戏场景布局说明图

实现方式如上图所示,将「命令语句」中的多个命令按一定的顺序拖入到「程序主体」中,完成后按下「执行」按钮,这些命令就会以「从上到下」的顺序一步步执行(注意函数体前面的 01、02、03…… 这些数字我们在程序中称为「行号」)。如果执行的结果(即,放在「输出」带上的方块)不满足任务的要求,老板就会给出相应的提示,此时可以按下「停止」按钮,重新调整「程序主体」后,再次尝试执行。

上图中间有标号的地板区域为临时中转区,通过「copyfrom」(把某个格子的方块复制到手中)、「copyto」(将手中的方块复制一份到某个格子中去)语句可以在这块区域存放程序临时的计算结果,这个区域有点类似电脑「CPU寄存器」和「内存地址」。

对于零编程基础的玩家来说,想玩通关这个游戏,需要了解以下三个概念:

程序中的因果轮回

由于我们人类能感知时间的流逝,所以我们有「因果认知论」,前一秒发生的某件事会导致下一秒某件事情的发生,我们把前面的事件称为「因」,后面的事件称为「果」

「因果决定论」在计算机程序中的表现形式就是「if 条件语句」。例如,把本文的标题用「程序」表达出来,就是下面这段代码:

if( 能把游戏玩通关 ) {
  那么就能成为程序员;
}
if( 是程序员 ){
  那么就能月薪过万;
}

这个游戏中有两个 if 条件语句,它们分别是 「jump if zero」(如果为「零」则跳转至)、「jump if neg」(如果为小于零的「负数」则跳转至)。其中的「jump」(跳转至)既可以跳转到当前语句之前(过去的时间),也可以跳转至当前语句之后(未来的时间)。

当跳转至当前语句之前(过去)时,程序会按照「行号」(即,时间线)继续从上到下执行,那就可能会再次执行到之前的「jump」语句,从而实现了一个「循环」重复的效果。我们也可以把它理解成「轮回」。

电脑和人类相比,有两个明显的优势,一个是超快的运算速度和能力,另一个就是「能重复地、循环地甚至是永无止境地做某件事情」,就像希腊神话中那个不断把石头从山脚下搬到山顶上的「西西弗斯」一样。

在一般的编程语言中,会有专门的 forwhile 语句来实现循环的功能,但在这个游戏中,我们需要借助「jump」来模拟实现,所以说这个游戏更像一门简易的汇编语言

引用

如果前面介绍的都看懂了,那应该能顺利玩到「第 29 关 仓库楼层」,到这一关之后,针对「copyfrom」和「copyto」命令,出现了一个新的特性:地址引用。

copyfrom 命令的引用开关

如图所示,点击「copyfrom」命令结尾的开关后,语句会在 copyfrom 10copyfrom [10] 两种形式之间切换。

这两种形式的区别是,copyfrom 10 表示将地板上,下标为 10 的格子上的方块复制到手中;copyfrom [10] 表示找到地板上下标为 10 的格子上的方块的数字后,再次在地板上找到下标为这个数字的格子上的方块复制到手中。我们也可以这样理解:**copyfrom [10] 等效于 copyfrom (copyfrom 10) **。

在一般的编程语言中,会有一类数组类型的数据,可通过[] 中括号运算符来引用对应下标的数组元素。例如以下代码的含义是:

a = [1,2,3];
b = a[0];

把一个有 3 个元素的数组赋值给变量 a,把变量 a 所指向的数组的下标为 0 (编程语言中数组的下标从 0 开始,它指向数组的第一个元素)的数字赋值给变量 b,所以 b 实际上等于 1。

零编程基础同学请注意,以上等于号「=」与数学中的「=」含义是不同的,在程序代码中一个「=」号叫做「赋值」(即,把「右边的值」赋给「左边的变量」),两个等于号「==」才是「等于」的意思。

算法

当游戏中的王五跳楼之后,游戏难度上升到了最高层级,即使你已经很清楚所有命令的使用方法,但要完成关卡的任务却绝非易事,需要超强的逻辑分析和推演能力才行。

这其中还会涉及到程序「算法」方面的知识,在编程领域有很多优秀的算法由早期的计算机大神们总结而来(可以看下这个「插入排序算法」的视频了解下什么是算法,这个也是本游戏最后一题的解法),而这些知识点许多普通程序员也没能掌握好。

// JavaScript 插入排序算法参考
function insertion(input) {
  for(var i = 1, len = input.length; i < len; i++) {
    for(var j = i; j > 0; j--) {
      if(input[j] < input[j - 1]) {
        input[j] = [input[j - 1], input[j - 1] = input[j]][0];
      }
    }
  }
  return input;
}

我单独列这条出来,就是想告诉编程爱好者们,千万不要灰心和气馁,只要保持兴趣和持续地学习,终究都能够掌握。

当然,如果实在是很想通关,又觉得身体被掏空力不从心的话,可以给「猫哥学前班」留言,我会把我的解题思路和答案发出来给大家参考。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,968评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,601评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,220评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,416评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,425评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,144评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,432评论 3 401
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,088评论 0 261
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,586评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,028评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,137评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,783评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,343评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,333评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,559评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,595评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,901评论 2 345

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,522评论 25 707
  • 星星在私语 凉风漫过草坪 我在梦中被哭泣惊醒 小儿五岁 在腋下说 肚子疼 他的肚皮手感很好 像发好的面团 他的...
    云淡风轻之蓝阅读 197评论 5 11
  • 医学英语术语学考试结束了,复习了老师上课讲的所有,回顾了所谓的重点,相信了考试前所说的:同学们这次考试没有填空题~...
    四月兔00阅读 1,016评论 0 0
  • 无论是中式装修还是欧式装修,亦或是最近主流的简式装修,橱柜都是厨房装修的重头戏,今天我们就好好聊聊什么样的橱柜才是...
    翻滚的潘潘阅读 597评论 0 2