接上篇:
#智商与逻辑双重考验# 烧脑编程游戏: 深圳 IO 篇一:游戏简介与上手指南
前言我最近发现了一款非常烧脑的编程游戏SHENZHENI/O(深圳IO),是一家专门制作高质编程游戏的Zachtronics公司出品的.几年前迷过好一阵他们出的Spacechem,深深的被这款玩起来像上班一样的游戏折服.这次的深圳IO又一次刷新了我对游戏的理解.在傻傻看着游戏界面上百小时后,一个邪恶
可爱的排骨
|
赞
211
评论
87
收藏
994
查看详情
此篇紧接上篇.
如果你还没读过篇一, 请务必先点上面卡片读读篇一. 如果你还没读过篇一, 请务必先点上面卡片读读篇一. 如果你还没读过篇一, 请务必先点上面卡片读读篇一.
如果你读完了篇一还自(cheng)信(neng)想要继续, 或者好奇这游戏还能多烧脑, 那就继续往下看吧. 我会尽最大努力
给你当导游
的
这边走
第二关: 信号增幅器
信号增幅器
是个生活中很常见的电子零件, 用于增强声光电信号, 比如
功放
机, WiFi信号放大号, 网络中继器/交换机等. 其实每关都是现实生活中取材的, 边玩边学知识. 比玩消消乐那些纯浪费时间的游戏有意义吧?
求消消乐党匆追打....
第二关 邮件 (这关的邮件是这个游戏里最短最没劲的.... )
张工说我们工厂里有些老设备需要增强信号, 原有的增强设备被压坏了, 你叫设计一下.
(就这些...)
第二关 提示
任务很简单, 把control-in输入的信号翻倍后输出给control-out.
第二关 分析
这关有输入输出共2个连续信号, 可以用1个
MC4000
来连接, 输入信号进入
p0
, 经代码处理后从
p1
输出.
根据测试数据不难看出, 输入信号在0~50之间, 翻倍后就是0~100. 那么我们只需要把p0输入的信号值放
acc
里乘2后输出给p1就够了.
mov p0 acc # 输入信号存到acc
mul 2 # acc值乘2
mov acc p1 # acc值输出到p1
slp 1 # 睡1秒 - 等待下1秒信号进来
过程见下动图:
下图是个WiFi信号放大器, 基本原理和第二关一样.
腾达(Tenda)A9 300M 家用wifi信号放大器 无线路由器穿墙伴侣 wifi中继器 无线扩展器 信号增强器
59元
实际生活中的信号增幅器 :) 就是不放小米的
京东
去购买
第三关: 纸牌接龙麻将版
空挡接龙
是Windows系统的
标志
之一, 没想到此游戏的作者在这个游戏里
虚拟的概念OS
里也做了个
空挡接龙
, 刚开始主菜单里看不到, 等你完成了前两关后, 它会突然出现并成为你的第三关
.
很多玩家都调侃说一度把这个接龙小游戏当成此游戏的本体. 然后作者就把这个内嵌小游戏独立发布出来了, 好像还出了个dos版
第三关 邮件
张工
: 我女儿在学编程, 她做了个纸牌游戏. 你们能不能试玩一下给她点反馈意见? 她想成为游戏开发人员.
卡尔
: 哇喔! 做得太漂亮了, 比我预计的难太多了..... 你女儿设计得太挑战耐心了, 最好能加个"后退"功能.
张工
: 她觉得不需要, 只要玩熟了就很简单了.
卡尔
: 她真是得你的真传啊.
第三关 提示
退到主菜单, 点开新出现的接龙游戏图标. 右下有个 INSTRUCTION 是规则说明.
把三组牌接1~9的顺序叠在右上角就赢了.
牌桌中间的牌只能按从大到小的顺序叠在不同色的牌上
左上3格可以放任意牌
当中/发/白4张全见光时, 就可以叠在一起放左上角了.
第三关 分析
这完全就是把4花色扑克牌♠♥♣♦的空挡接龙换成了麻将牌嘛... 规则几乎一样.
下图是过关动画 (NG的好多盘
)
下图是过关后邮件里搞笑后续
不是汉化版里的, 原版游戏里就是有中文.
纸牌接龙麻将版 (单独版)
store.steampowered.com
去看看
第四关: 脉冲生成器
本来不打算写
这一关的, 因为找不出对应的现实生活中的产品. 不过这一关的目的是给玩家练习
测试指令
(
逻辑判断
)的, 这可是后面关卡必备的基本指令, 也是编程的基础之一.
设计要求很简单, button为100时(打开开关), 开始生成1上1下的脉冲信号, 持续到button变为0(关闭开关). 有点无聊的东西. 不过如果你把它想象成辐射2里的YK42B脉冲步枪, 抠下扳机就发射脉冲能量束~~ 是不是立马高大上了?
我们拖一个
MC4000
上板,
p0
接
button
,
p1
接
pulse
. 代码如下:
teq p0 100
+ mov 100 p1
+ slp 1
+ mov 0 p1
slp 1
只有当 "teq p0 100" 即 p0=100 成立时, 下面3行带+的代码才会执行. 否则只会执行最后一行"slp 1". 因为button只会输入0和100两种数据, 所以可以用 "tgt p0 0" 或 "tcp p0 0" 指令替换 "teq p0 100". 我们甚至可以逆向思维把条件反过来.
teq p0 0
- mov 100 p1
- slp 1
- mov 0 p1
slp 1
虽然这2段代码完成了同样的任务, 但它们有时候不尽相同的意义. 这个以后出现需要双重条件判断的时候你就会了解了.
第五关: 电竞广告牌
第四关开始卡尔就告诉你可以使用其它一些元件做设计了. 但是第四关只是个过渡关, 剧情和设计都不出彩, 我就不写了.
老周拉来一个大单, 给一个电竞团队制作一个
动画广告牌
. 广告牌有
5个信号输出
,
信号规律是固定的
. 看起来蛮简单的, 不就是
第一关仿真监控器
加强版嘛~~~
初次尝试:
按第一关的做法, 拖5个MC4000分别连上5个输出端口, 虽然有点挤, 好在PCB板够放.
根据验证数据一一为5个MC4000编码:
#click-0
mov 100 p0
slp 1
mov 0 p0
slp 1
# click-1
mov 0 p1
slp 1
mov 100 p1
slp 1
# drink-0
mov 100 p0
slp 6
mov 0 p0
slp 4
# drink-1
mov 0 p0
slp 6
mov 100 p0
slp 1
mov 0 p0
slp 2
mov 100 p0
slp 1
# drink-2
mov 0 p0
slp 7
mov 100 p0
slp 2
mov 0 p0
slp 1
测试执行
后你会发现, 虽然能过关, 但是
成绩非常差
, 连平均分都达不到,
感觉自己像智障
1个MC4000明明可以接2个连续信号输出, 一共只需要3个MC4000就行了, 用5个明确是浪费! 而且5个MC4000都有空余的代码行没写.
千万不要以"能过关就行"这样的心态来继续这个游戏, 每过一关都要锻炼自己的技术, 把你的脑子放进acc然后狂点add
. 你在其它游戏里每过一关积累的可能是
金币
或
装备
或
等级
, 在这个游戏里你
唯一能积累
的就是你的
脑力,
寻求最
简最快最省
的解决问题的能力.
再次尝试:
click-0, click-1这两个信号规律很简单,1上1下和1下1上共4种变化. 用1个MC4000能搞定的, drink-1本身就已经有6下1上2下1上四种变化了, 估计需要占掉1个MC4000. 剩下的drink-0, drink-2信号相似, 共用1个MC4000应该没问题. 代码如下
# p0 –> click-0, p1 -> click-1
mov 100 p0
mov 0 p1
slp 1
mov 0 p0
mov 100 p1
slp 1
# p0 -> drink-0, p1 -> drink-2
mov 100 p0
mov 0 p1
slp 6
mov 0 p0
slp 1
mov 100 p1
slp 2
mov 0 p1
slp 1
# p1 -> drink-1
mov 0 p1
slp 6
mov 100 p1
slp 1
mov 0 p1
slp 2
mov 100 p1
slp 1
测试验证通过! 总算成功的拿到
平均分.
成绩图表里显示有只
用2-3行
代码就完成的!
他们和我们玩的同一款游戏吗?
感觉我这个灵魂走路(线)有点丑, 再来优化一下看看.
这下齐整多了. 奇怪为什么线路都到元件下面去了? 按下TAB键, 就能看到全部的走线了.
原来只要不碰到其它的引脚, 元件下面也能走线. 节省空间方便布局?
别说我玩个游戏太钻牛角尖, 提前习惯一下可以让你在后面的关卡少拔掉自己不少头发呢
.
类似本关电竞广告牌
的产品真实生活中一般没有量产商品, 主要都是定制, 如下图. (OH我的乌嘛女神~
) 如果你去过澳门或者Vegas, 应该见过不少这种动态的霓虹灯吧. 它们就是这个原理动起来的
. (
GIF是不是
也一样? 不是, GIF是幻灯片, 原理比这个不弱智得多.)
第七关: 音效加强引擎 (垃圾功放芯片)
第七关这个
音效加强引擎
(harmonic maximization engine 貌似很屌的东东)被卡尔称为
垃圾(Rubbish)
. 功能和一些功放硬件或播放软件的均衡器插件差不多. 但不算是混音.
卡尔
在邮件里说到: 我们有个设计音频组件的合同, 客户保证产品的包装盒上会印上"
完美均衡的清脆的高音与震撼的低音
". 他把客户的广告方案放在你桌上了, 让你去说明书找来看看... 卡尔还说不管这玩意有多垃圾, 我们还是得完成它, 工作就是工作.
被卡尔说得这么不堪?
我翻开说明书找到客户的"
Incredible Sound at a Breakthrough Price.
"这页方案. 吹了一大堆, 中间提示我们要用到的公式:
AUDIO_OUT
= (
AUDIO_IN
- 50) x 4 + 50. 用初中的数字知识简化一下这个公式得到
AUDIO_OUT
=
AUDIO_IN
x 4 -150. WTF?! 把输入信号乘4再减150就是他们说牛X
音效加强引擎
?!!!
某厂不也用胶水方案出过多核CPU嘛~~
这一关有2个连续信号输入和1个连续信号输出, 用一个MC4000不够, 我们需要组合一对MC4000来完成.
maximize值为0时, 直接把audio-in传给audio-out就行了, 只有当maximize为100时, 才需要通过"神奇的公式"处理信号再输出.
过程很简单, 先把audio-in存进acc, 如果maximize等于100(开关开启), 就把acc x 4 - 1500, 最后把acc的值传到另1个MC4000, 另1个MC4000收到信号马上传至audio-out. 1个MC4000作处理器, 1个MC4000作转接头. 当你的显卡只有hdmi输出而显示器只有vga输入时, 这第2个MC4000就相当于一个hdmi转vga的头子了.
又学知识了吧~
绿联(UGREEN)HDMI转VGA线转换器带音频口 高清视频转接头适配器 电脑盒子连接投影仪电视显示器线 黑 40248
59元
HDMI转VGA
京东
去购买
百科
索尼(SONY) UDA-1 功放 DSEE (数码音效加强引擎) 支持播放无损音乐 USB解码功放器 银色
游戏里设计的相当于这个简化版
值
87
点评
0
原创
2
好价
37
去购买
查看详情
第十五关: 投币机
这一个非常有意思, 除了关卡本身, 作者给配套的故事就比较经典.
"隐藏指令":
首先是
卡尔听说
了MCxxxx元件的
隐藏指令
, 然后
张工
告诉他不是隐藏的, 中文原版说明书上有的, 你们用的英文版
忘了翻译
这一节了而已 (求卡尔此时心里的阴影面积
). 作者太坏了......这种桥段也想得出.....
2个"隐藏指令"如下:
1.
gen pn x y
: 如 gen p0 2 1 效果等同于
mov 100 p0
slp 2
mov 0 p0
slp 1
2.
@
: 在指令行左边加上@符号代表此行代码只执行一次, 之后将被忽略. 较少使用.
试试把前面几关用的一些代码用gen代替, 也许能提高不少成绩哦.
邮件:
戴维
: 你们去过
三国游乐园
(这不是翻译名)吗? 我刚去了深圳的一家, 他们重塑的古代中国社会风貌真是太棒了! 你甚至要用
古铜钱
来买东西, 就像你真的在古代一样. 我看他们工作人员
用手数钱
, 是不是有点傻? 我觉得他们可以用
投币机
来数钱, 那就快多了, 所以我跟他们谈了建投币机的笔生意.
卡尔
: 嗯.....投币机不符合那里的历史风貌吧?
戴维
: 我跟他们谈过外观问题了. 把投币机造成
刻着
龙的
山形
就可以了. 你只要把足够的币投进去, 比如一个馒头的价格. 它就会噹一声通知工作人员把馒头给你, 然后退你零钱.
提示:
我们要设计的这个投币机可以接受3种币值,
1铢5铢12铢
. 这老美开发的游戏用到12铢这个独特的币算是有点考究的了, "
秦钱半两重十二铢
", 三国游乐园里用秦半两, 没毛病.
又学知识了吧.
PCB板上有个
定价元件
, 当投入的币值之和大于或等于定价时, 要马上敲响4秒钟并同时开始退零钱, 而零钱优先退5铢的, 不够5铢时再退1铢的.
3种币值就是3个连续输入信号, 用2个MC元件来联机处理太浪费了. 不知道你在
第十二关
有没有用过
DX300
这个元件 (什么? 没有攻略直接跳过那关了? ). 这里我用使用DX300来把3个连续信号转换成1个离散信号来输入. 先来看一下DX300用法:
离散转连续,
离散信号数字只接受1和0
, 大于1的都当成1, 小于1的都当成0. 离散值3位数从
左至右对应p2 p1 p0
连续转离散,
连续信号值只接受0和100
, 大于100的都当成100, 小于100的都当成0.
p2 p1 p0分别对应 100 010 001
, 同时输入时将和值输出到离散端.
DX300是个非常强大的元件, 会在游戏中起到重要的作用.
分析:
从测试数据可以看出, 不会同1秒内多次投币, 也不会多次退币.
我们用1个DX300同时接收3个投币输入, 将会出现4种输入值:
000/001/010/100
, 分别对应
未投/投1铢/投5铢/投12铢
.
未投币
时我们什么都不要管, 直接
跳到下一秒
执行;
投了币
就把币值
加到acc
中;
当
acc
的值
大于或等于定价器
时, 输出"
gen p1 4 0
"用来敲4秒钟. 然后减去定价把余额退出来.
而每个退币的信号完全可以用 "
gen pn 1 1
" 生成, 所以我们用1个MC4000负责2个退币输出工作.
不知道你们会怎么设计, 我费掉些脑细胞把代码精简到只要1个MC6000和1个MC4000完成的. 如下图:
判断币值我用了1个tcp指令配合1个tgt, 先存5铢到dat, 大于010(即100, 不会有其它值)时存12铢, 小于010时先存1铢, 再判断如果不大于0(即等于0, 这里就是个双重判断了)时再存成0铢. 然后把dat加进acc. 这样用7行代码算好总币值了.
接着判断总币值是否大于或等于定价. 是的话就敲钟, 如果大于还得退零钱. 由于退钱已经计划交给
退钱模块
(另1个MC4000)处理, 所以这里只需要把零钱数告诉
退钱模块
就是了. 我又用了一次tcp指令!
钱不够直接跳到结束, 然后扣钱, 有余额就退钱, 然后敲钟.
退钱模块收到余额数值放进acc, 再循环判断是够5铢, 够就退面值5铢的, 不够了就退1铢的.
呵呵, 是不是觉得有点复杂了? 别给我说用C语言一下就搞定了. 我有50架航母也随便搞定7个insane难度的虫族电脑啊.
多币值投币器_淘宝搜索
s.taobao.com
去看看
总结:
篇一目前有900+收藏 190+赞. 不知道能坚持看完这篇二的能有多少人. 如果有人完成一周目开启海上城市之章的一定要@我哦
后面的关卡越来越复杂了, 我感觉每一关都够写篇原创贴了. 就是怕没人关注没人看
腾达(Tenda)A9 300M 家用wifi信号放大器 无线路由器穿墙伴侣 wifi中继器 无线扩展器 信号增强器
腾达(Tenda)A9 300M 家用wifi信号放大器 无线路由器穿墙伴侣 wifi中继器 无线扩展器 信号增强器
¥59.00
绿联(UGREEN)HDMI转VGA线转换器带音频口 高清视频转接头适配器 电脑盒子连接投影仪电视显示器线 黑 40248
绿联(UGREEN)HDMI转VGA线转换器带音频口 高清视频转接头适配器 电脑盒子连接投影仪电视显示器线 黑 40248
¥59.00
索尼(SONY) UDA-1 功放 DSEE (数码音效加强引擎) 支持播放无损音乐 USB解码功放器 银色
索尼(SONY) UDA-1 功放 DSEE (数码音效加强引擎) 支持播放无损音乐 USB解码功放器 银色
¥3299.00
SONY 索尼 HAP-S1 硬盘式音频播放器 内置功放机 500G硬盘 4.3英寸液晶屏
SONY 索尼 HAP-S1 硬盘式音频播放器 内置功放机 500G硬盘 4.3英寸液晶屏
天龙(DENON)AVR-X540BT 家庭影院 5.2声道AV功放机客厅影院 支持4K 杜比 DTS USB 蓝牙 家用功放音响 AVRX540BT
天龙(DENON)AVR-X540BT 家庭影院 5.2声道AV功放机客厅影院 支持4K 杜比 DTS USB 蓝牙 家用功放音响 AVRX540BT
2330元起
ONKYO安桥A-10功放+C-7030 CD机套装HIFI功放机 合并式立体声功放 2.1声道放大器发烧播放器银色
ONKYO安桥A-10功放+C-7030 CD机套装HIFI功放机 合并式立体声功放 2.1声道放大器发烧播放器银色
6860元起
天逸AD-89D 多功能CD功放一体机家用立体声蓝牙功放机大功率发烧级解码器CD播放器USB 高保真数字功放 AD-89D
天逸AD-89D 多功能CD功放一体机家用立体声蓝牙功放机大功率发烧级解码器CD播放器USB 高保真数字功放 AD-89D
5886元起
JBL X8 功放 卡拉OK 专业后级功放 大功率 舞台设备 KTV 会议功放 家用功放 x8功放
JBL X8 功放 卡拉OK 专业后级功放 大功率 舞台设备 KTV 会议功放 家用功放 x8功放
6999元起
ONKYO安桥TX-8220 高保真HIFI功放机 合并式立体声蓝牙功放 2.1声道放大器发烧无损音乐家用功放FM 银色
ONKYO安桥TX-8220 高保真HIFI功放机 合并式立体声蓝牙功放 2.1声道放大器发烧无损音乐家用功放FM 银色
CAMBRIDGEAUDIO英国剑桥EDGE A 旗舰级发烧级合并式功放 HIFI立体声功率放大器专业高保真2.0声道 100w 灰色
CAMBRIDGEAUDIO英国剑桥EDGE A 旗舰级发烧级合并式功放 HIFI立体声功率放大器专业高保真2.0声道 100w 灰色
54500元起
ONKYO 安桥 TX-NR5100 功放 7.2声道家庭影院智能音响 音箱AV功放机 进口 8K杜比全景声 DTS:X 蓝牙优化
ONKYO 安桥 TX-NR5100 功放 7.2声道家庭影院智能音响 音箱AV功放机 进口 8K杜比全景声 DTS:X 蓝牙优化
6780元起