首页 > 游戏 > 【游戏推荐】Manufactoria——程序员才玩的游戏

【游戏推荐】Manufactoria——程序员才玩的游戏

2012年7月28日 发表评论 阅读评论

其实这个是我很久以前玩的一个游戏了,但是不管过了多久,我都对这个游戏的设计者报以极大的,无比的,犹如滔滔江水一般的(此处省略10000字。。。)敬拜之情!!!虽然我不知道设计者是谁。。

这个游戏一般而言,是面向IT民工的,但是我也无法从非IT民工角度判断这个游戏是否适合他们玩,so,自己看着办吧~

游戏启动之后界面如下(绿色那些别在意,通了关就会变成绿色的了。):

上图中每一个方形就是一关,连线关系就是意味着你必须完成那一关才能继续下一关(数据结构里面这种关系叫啥来着?)。

下面是进入游戏后的界面,额,其实这是比较后面的一关了,左上角那些一开始没有那么全。

先介绍一下这个游戏规则吧,上图中右边有两个固定的点,上面一个下面一个,上面那个是生产点,你可以想象成生面那个就是个生产车间的出口,会陆续生产出产品(游戏里面好像说是机器人)来,然后呢,每个产品内部带有一块芯片,芯片里面有些不同的数据,这些数据在游戏里面使用不同颜色的点排成一列表示的,整个游戏最多有四种颜色,你可以直接把芯片里面的数据直接理解成一个4进制数就行了。然后呢,看见左边那个output没?你的任务就是把上面那个口出来的机器人中通过布局,使得只有符合那个OUTPUT条件的机器人才可以送入下面那个口,而且要非常精确,就是说符合的一定要送入,不符合的一定要排除!排出的方法就是送到空白的地方就可以了。

比如说下面这幅图,这就是"编程"之后的的结果,好吧,我也觉得好吓人。。

而你能用来编程的工具其实不多,就是上图左上方最上面的9个,其中1是传送带,表示你的产品会按照传送带的方向移动到下一个位置,2是批量框选操作(跟编程没啥关系,只是为了复制一个模块的时候用的),3是删掉一个控件。4,5,7,8表示经过这个控件的时候可以在整个芯片的最后加上这个颜色的点。6和⑨表示一个选择器,你接下来移动的方向取决于你的机器人的芯片的第一个点的颜色,比如说6就是红蓝走向不一样,而其他颜色的则走中间那条路,另外经过这个控件之后你的第一个数据点会被消除。

当你完成设计后,你就可以点①下面那个三角(额,和VS2008那些很像,就是个运行的符号),然后就会开始测试你的设计对不对。

左边就变成了芯片的数据的变化显示,每次出口会吐出一个机器人,然后检测你的设计能否实现这个功能,你也可以这么观察那个数据的变化(就是DEBUG里面的Watch功能。。)一般会给出7组测试数据,然后笔的设计必须7组数据都测试通过才可以算过关。

看到最下面的数据统计没?他会统计你实现这7组数据总共所花的时间(即机器人每经过一个空间表示经过1单位时间),而且还会给出你所使用的控件的数目。没错,这就相当于你变成所使用的时间复杂度和空间复杂度。当你完成一关之后,要最求完美的话游戏才刚开始呢,你要不断地优化你的设计,降低你的空间使用和时间使用,精彩的设计经常可以把你的时间复杂度降到1/5甚至更多。而且也可以像变成那种,以空间复杂度换取时间复杂度!我记得有一关我的设计虽然很直观,但是看起来布局极其之复杂,而且通过测试所花的时间也超长。然后在网上看到了一个家伙的设计,没怎么看懂,但是就觉得很精妙,因为用了很少的元件,很快的就通过了测试,但是我研究了半天才弄清楚为什么那种设计可以通过测试,然后对那个设计者的变态的思维表示大大的钦佩!

好吧,找了一下,就是下面这个结果,如果你没玩过这个游戏估计暂时不是很懂。。(出来的芯片如果有相同数目的蓝色和红色,就通过,否则就不通过)

这游戏还有两个小功能,一个是可以把你的设计以字符串的形式存储起来,也可以直接把字符串复制进去编程布局,这样就方便了网上的人交流自己的设计了。

还有一个功能就是自己debug功能,你可以自己设计机器人的芯片排序,然后来测你这个系统的鲁棒性。

游戏的大概情况就是这样,里面涉及到四进制图灵机的设计和布线问题,状态机转换,变成里边的判断if,循环while(怎么实现while后面很重要),二进制运算(最后几关),文件读写操作。

最重要的是的还有随机测试模块,调试功能,算法的精髓很快就体现出来了。

不过美中不足的一点就是,里面没有涉及自定义函数功能,比如说可以定义一个功能模块可以在里面编辑,之后作为一个整体来用,计算空间复杂度的时候可以大大降低空间使用量。以前玩过一个简单一点的编程类游戏,控制一个机器人点灯吧,就是可以支持这个功能的。但是那个游戏的其他方面不如这个游戏精彩。


【完】

本文内容遵从CC版权协议,转载请注明出自http://www.kylen314.com

分类: 游戏 标签:
  1. smilencetion
    2014年5月1日21:51 | #1

    请问开始运行后出现的那几个点是属于第一个机器人的是吗?然后每次测试会有几个机器人??

    • 2014年5月1日22:02 | #2

      对的,每一次测试里面的点都是属于同一个机器人的。测试通过后会出现全新的序列,代表下一个被测机器人。机器人数不确定。但是你只要保证测试的全部能通过就OK了!

      • smilencetion
        2014年5月1日22:50 | #3

        哦,再请问一下,你这篇博文最后一张图,那个有4色的球是指什么啊?我玩到上面那个分支的第2关,debug里面还没有那个4色球不知道是什么

        • 2014年5月1日22:57 | #4

          你该不会指的是左上角那个吧。。。23333333

          • smilencetion
            2014年5月2日22:17 | #5

            是的

            • 2014年5月3日11:50 | #6

              好吧,太久没玩了,之前以为是每一关都有的。。看来是后期会有的,是一个写操作。

  2. 2015年10月6日03:13 | #7

    为什么说是面向IT民工的呢。。。。众人皆可玩之我玩的时候惊奇地发现很多关卡的设计都是和自动机理论息息相关的作者也是这么说的: an educational game about finite state automata设计者可以在游戏信息里找到:这是他的主页:http://pleasingfungus.com/linkedin:https://www.linkedin.com/pub/nicholas-feinberg/90/885/1b3UCSD的CS硕士 今年七月份到google当工程师去了

验证码:8 + 6 = ?

友情提示:留言可以使用大部分html标签和属性;

添加代码示例:[code lang="cpp"]your code...[/code]

添加公式请用Latex代码,前后分别添加两个$$