2019年的Steam冬季特卖,这款已经发行多年的老游戏引起了我的兴趣。本人金融背景,银行工作,不知怎的被这种模拟写代码的游戏迷住了(大概因为这不是工作内容吧233)。从第一关开始我就注定要沉迷其中,遂决定一边通关一边记录下攻略历程。若有幸能被人检索到我的攻略,还请不吝赐教。
以下均以游戏内的邮件命名任务。
(模拟)安全摄像头
任务说明输入输出
思路
作为教学关,难易度为0。基本是让玩家理解这个游戏的概念、结构与流程。
分别用两块芯片控制两个LED灯,如图。
代码
如图1。
后续剧情中,得知可以使用gen命令,可以像图2中优化一下。
工厂模型替换件
任务说明输入输出
思路
本关旨在让玩家理解运算模块。游戏中必须在acc中进行计算,这点让我觉得很头疼。将数值存入acc中,然后用乘法命令。
代码
如图。这个可以优化吗?
脉冲发生器
任务说明输入输出
思路
当输入信号为100时产生脉冲,输入信号为0时停止脉冲并持续输出0。
这里分两块思考:
- 判断开始脉冲和结束脉冲。这里用一种判断指令很容易实现,tgt,tlt,teq都可以。
- 产生脉冲。使用not指令,效果为让acc从0变成100或从100变为0,每单位时间执行一次就可以在0和100之间反复变换。
为了节省行数,无论何时都用mov acc p1来输出,那么需要在脉冲结束时强制让acc值变为0。
代码
如图1。同理,知道gen指令以后可以简化为图2。
发光标志
任务说明输入输出
思路
很麻烦的一关,很多简单IO。
同样分为两块设计:
- 点击鼠标。一块芯片连两个输出口,运用not指令,产生脉冲即可。
- 喝。一个有三种帧的动画,当前进度下,起码需要两个芯片才能完成三个输出。观察信号发现,当喝0为100时,其余都为0;当喝0为0时,其余产生一定规律的输出。
这里我用一块芯片(芯片1)输出喝0所需的信号,同时给控制喝1和喝2的芯片2也发送一份,芯片2对发送来的数据判断从而决定输出的数值。
代码
图1为一种解法
知道gen指令后,可以奢侈的用一块芯片控制一个输出,共计5块。
2当学会0-1大法以后可以这么搞。。。
3海量男爵!!
任务说明输入输出
思路
得分+1,扣分-2,但是分数不能为负数。都在acc中进行运算,发送之前检查下acc是否小于0,如果小于0就归零。
代码
参考图1
之后也可以这样搞。(但没有必要
2
垃圾音频装置
任务说明输入输出
思路
最优化为100时即启动优化算法,手册里的算法公式可以展开,就变成了。
代码
红外线探测器
任务说明输入输出
思路
用一块MC6000,接受设定的时间,当作报警器的开关。另一块MC4000用来判断传感器的信号是否大于等于20,决定是否启动闹钟。
代码
解法1
解法2,MC6000中的思路有所改变
2
虚拟现实设备
任务说明输入输出
思路
观察输入发现除了01信号外,都是-999的数据。
一样是一个判断是否产生脉冲的逻辑:对-999的Xbus数值不改变当前行为,仅当01出现时改变行为。
代码
套路啊
1
稍微优化了一下?Xbus的特性貌似是必须两边一个读一个写,数值才会被消耗掉,不然就会阻塞。所以可以利用下gen p1 1 1
,不用担心多睡一回合,因为Xbus传入的0会等到你判断的时候再读进来(?)
帮个小忙?
任务说明输入输出
思路
竟然可以在游戏里设计游戏手柄的电路!
同样是一个触发机制,读到-1的时候就发送数据。x和y的数值好办,ab的数值要进行判断。我采取的方法是对的结果取百位数,这样四种情况的结果顺次刚好算出来是0、1、2、3(我这啥脑回路)。
XBus的特性很好玩,可以传一组数。
代码
最初的解法
用DX300做了个简化(这折磨人的排线- -|||)
2
IT人生——触杀,你完蛋了!
任务说明 输入输出思路
本关的关键点应该在于判断玩家是否活着。
其他要点:
- 死亡时扣扳机不会触发射击
- 死亡时仍然可以填单
- 子弹数受到填弹数限制
这里用MC4000控制玩家的存活状态,同时将生存状态发送给输出以及MC6000, MC6000来对射击功能进行控制和管理。到这我才知道一个输出口可以把数据传给多个其他接口!
代码
1超酷老爸!!!!
任务说明 输入输出思路
RGB值好办。关键问题是如何在脉冲的中途终止,因为脉冲时间应该是用 slp n的方式完成的(n为读取的脉冲时长),而在sleep状态,芯片无法做出其他任何操作的样子。所以这关暂时没有找到解法o(TヘTo)
代码
设备 2A27
任务说明 输入输出思路
这个其实是一个转化问题,把(x, y)的值对转化为0、30、50、80的数字输出。
分两种情况,一种是X即能决定输出值的情况,如X<20则一定输出30;另一种是X,Y共同决定输出值,比如的情况
代码
1三国铜币
任务说明 输入输出思路
很简单的一关
- 判断钱是否够了,够了则执行找零流程
- 找零从最大面值的可找硬币开始,直到全部找完,然后重新接受新的投币
- 如果付的钱=价格,不找零
代码
1三明治合成器
任务说明 输入输出思路
看起来超级美味的一关,加了芥末的三明治!
菜单一共三种,通过观察输入输出发现,固定流程是前后两片面包、肉片、升国旗,可变流程是奶酪和芥末。
于是我用一块MC6000控制固定流程,另一块控制可变流程。两块芯片之间用slx大法进行交互,这样可以使执行顺序和步骤时间间隔自动调整。
代码
网友评论