2020-06-17
今天小编为大家带来人力资源机器(Human Resource Machine)新手心得攻略:

程序结束判定
不知道大家留意没,这个游戏的编程是没有终止命令的,而绝大多数任务都是靠循环的,那到底怎么样才算程序的结束呢?通过头机关,不难发现,代码走完了,程序就结束了,这个符合直觉对吧。但那些无法跳到底的程序呢,我觉得是靠触发inbox来实现的,当使用inbox时,如果输入队列为空,则程序跳出。这里就产生了一个问题,如果inbox离循环入口太远,那输出最终结果后,又得多运行几个动作才能到达inbox(null),增加总步数,如无必要,此处可优化。
程序结果的审核
一般最常见的错误是程序中意外的空手操作或类型不匹配,比如空手outbox、空手加减、空格子读取、字母加减数字等。其次,是错误输出值不符合要求,这里需要展开。
1.你往往会发现只要输出一个错误结果,程序就会报错“程序*输出某值,而你输出某值”,所以我们觉得,这个数值一定是预先算过的,就等着看你给错了哪个,这种猜想多数情况下是成立的。
2.但还有稍不常见的错误,当你执行完毕按需输出后,程序报错“虽然你正确输出,但我能给出一个反例”,这种情况是你不完全理解题干,程序里出现某些特例不能兼顾的地方,或者投机取巧,仅仅为满足当前输入序列去产生特定的输出序列。我估计,系统在测试完当前给出的序列后,在后台对备用的所有序列都做了测试,行不通的就报错并在下次抛出这个序列。然而,系统有一个总步数评分系统,游戏作者主观上当然是希望它的备用序列在同一程序下跑分要一样,生成序列时可能用到一些理论或专业工具进行评估,但这或许还会遗留一些差异,或者说BUG,或许可以利用这些差异进行优化。
3.还有更不常见的错误,如 loop{ ... ; outbox; .... ; inbox; ... }。“你输出了所有*的值,但输出结果过多”(如1,2,3,4, 1,3,5,7, 1)。前面提到程序结束是以inbox(null)为标志的,所以在inbox前慎用outbox。
跳转出固有思维
jump,或者我更喜欢称为goto,是程序实现条件判断、循环、子程序等的关键,高级语言中的goto、if、for、while、case、function等统统通过jump和它两个不成器的条件跳转兄弟来完成。汇编语言之所以灵活高效,跟这些“无条件”跳转指令不能说没有关系,虽然以高级语言的角度。用goto乱跳意味着以后你的代码将难以调试(write-only、通心粉代码),所以很多高级语言摒弃了类似的命令。高级语言是面向对象的,咳咳,就算面向过程至少也该可以定义几个函数不是吗?即便没有函数也至少有循环语句不是吗?但这是汇编,这个游戏里追求的是极限体积的小任务,还在用高级语言的思维你就玩不转!

开发地砖
不知道这个游戏干嘛地上一堆地砖(我开始以为是箱子),除了极个别关卡差点不够用外,我觉得那些地砖根本就是配合便笺用来画画的嘛。地砖是用作储存数据的介质,开发空地砖是有成本的(读取数据+写入寄存器),但不开发的地砖无法运算。优化的方向是:
1.少开发空地砖;
2.见缝插砖,因为没办法直接输入任意数值,所以在程序中某些特定中间值产生时,要抓住机会“顺道”写入到目标地砖;
3.如做不到上述2点,应尽量一次性开发多个地砖,读一次写多个;
4.合理利用初始值,有初始值使用中无需复位,可以大胆调用。
5.同上,0值是可以自己制造(copyfrom+sub,或者bump),不用刻意保留初始0地砖,但初始大数字地砖务必保留。
关于备注
大量的自由跳转语句、无法自主输入特定数字、指令单调、字体太大屏幕放不下,这些原因都会导致寻码、跟踪困难。高级关卡有两种备注方法:一是把便笺拖到代码窗,二是单击地砖编辑,地砖上的内容会反映在代码窗内。写备注的技巧是地砖代码尽量写得高瘦些,不然有可能连在一起。备注代码不要吝啬,不然回头找死你。
标签组:
最新游戏
火爆手游
详情
体育运动丨2.97GB
详情
策略塔防丨61.62M
详情
冒险解谜丨96.84MB
详情
休闲益智丨228.72MB
详情
赛车竞速丨617.25MB
详情
角色扮演丨829.8M
详情
角色扮演丨99.0MB
详情
角色扮演丨462M
详情
角色扮演丨125.1MB
详情
动作闯关丨217.50MB
详情
休闲益智丨11.91MB
详情
策略塔防丨1.62GB
详情
经营养成丨622.39MB
详情
经营养成丨347.1MB
详情
冒险解谜丨164.24MB