当前位置: 华文问答 > 游戏

哪些游戏玩物不丧志 、能学到知识?

2016-02-15游戏

有,大概接触过一些有趣的puzzle game,能够锻炼人的思考能力或者掌握一些知识。


不过知识的定义很广泛,而且通过游戏来学习效率并不高(无法代替专业学习),但重在趣味性。

有三类游戏:

一者是本身游戏过程中出现真实的知识(如大航海,P社四萌)

一者是游戏某些问题的解决需要玩家去查找学习知识,或自行想出算法(如Minecraft的红石电路,各种策略游戏的布阵)

一者是游戏无真实知识考察,但能够锻炼玩家通过逻辑思考解决问题的能力(如Valve的Portal,braid)

(注:这三类并不是互不重叠的,下面主要侧重于前两者)

————————————分割线——————————————————————

1.编程算法设计相关

之前答案已经说过的CodeCombat就很不错,适合娱乐性学习。

下面是几个有趣的非直接编程游戏,难度逐渐上升。

所谓的非直接编程,就是你可以控制放置某些基本物件,然后要合理组合物件可以完成任务。

不过其编程方式是非常原始的,更没有C++,python那种便利性

甚至你根本不能输入自己的代码!!

而只能组合已有的元件,所以很考验逻辑和算法设计能力。

这种游戏就和OJ一样,会有给定的输入,要求得到给定的输出。有时会有几组数据,全过了才能到达下一关。

玩家可以在游戏中体会一下从0,1进制开始搭建到完成简单的输入A,B输出A+B的函数功能的过程(游戏过程有时甚至会出现堆栈等数据结构)。

不夸张地说,能够独立完成这些游戏的大部分关卡后,你也学到了很多经典而巧妙的设计方法,逻辑思考能力应该有所提升,这些对于数学,CS等学科的理论学习是有帮助的。


编程机器人

lightbot 1 & 2

一张图说明这个游戏的操作方式:

  • 将这些命令用鼠标拖拽到右侧空白格子里面,按照从上到下,从左到右的顺序摆好。
  • 你的目的就是让机器人通过你自己的指令点亮所有的蓝色格子,便可过关。
  • 然后点击下方的 绿色 按钮,小机器人就会按照指令的顺序行动。
  • 如某一关,通过拖动放置了图中如右指令:

    点击开始后,机器人便会先执行主函数,主函数调用函数F1,机器人会跳跃,点灯,顺时针转,跳跃,点灯,顺时针转,顺时针转。然后F1又调用自身,机器人继续重复F1内操作,最终点亮所有蓝格子。

    评价:

    曾经是Kongregate上最火的游戏之一。

    后续关卡引入了函数递归和条件判定的规则,让游戏更有挑战性,2代比1代要复杂一些(以上均为2代的游戏图)。

    这个游戏后期的某些关卡就会变得有些困难,如最后一关:

    (是不是有一种不知所措的感觉……)

    游戏地址

    lightbot 1

    Play light-Bot, a free online game on Kongregate

    lightbot 2

    Play Lightbot 2.0, a free online game on Kongregate

    强大的2代汉化版

    编程机器人2.0 汉化版,Light Bot 2.0

    PS:已出手机版,名字应该是一样的…


    ★☆

    Boxes

    有过前面的游戏,可以来正式介绍一些有一些难度的程序设计游戏了,如这个流程不算特别长的Boxes

    说明:

    你是一个盒子工厂的盒子检测师,你的任务是把坏盒子识别出来,只让好盒子通过生产线,

    然后你可以通过放不同的部件来识别盒子(后期还会有各种奇怪的物件,如+1,-1)

    每关最上方有黄色的框写明了过关要求。

    部件如下:

    分别为

    1.传送盒子

    2.盒子数字+1

    3.盒子数字-1

    4.检查盒子数字符号,不同符号运送方向不同

    5.烧毁盒子

    6.将盒子复制一份

    7.当有盒子从上面经过时可以提供能源,使红色箭头等激活,盒子经过后就会停止供能。

    8.红色箭头一旦激活,能够无视其覆盖的元件,将盒子向指定方向运送(不激活时就和杂鱼一样不起作用)

    9.???

    是不是感觉部件功能挺少的,其实它可以解决很多问题,比如部件图中的元件就可以实现将盒子数字乘以2的功能!(后面还能做到除法,加50,返回十位数字等等神奇功能)


    评价:

    通过条件判定,+,-1等基础功能,来实现关卡的要求,要求思维是比较灵活的。当然也比之前的游戏难了许多(特别是19,20关,还有challenge level)

    地址

    Play Boxes, a Free online game on Jay is games

    ★☆

    Jahooma's LogicBox

    和上面的Boxes类似,不过玩法略有不同:

    即要控制字符串从黑色的圆盒子出发,然后按照箭头经过不同的盒子,最后从给定的方向离开。

    输入和期待的输出都已经写在右边了,是不是感觉越来越像编程作业题了……

    有趣的一点在于,那些功能盒的功能就是你自己做出来的,也就是类似于你在第3关写了个函数,然后能够在第4关用这个函数来完成目标……

    相比之下它可以做到更多功能,如读写,字符串删除\写入,甚至还可以求字符串长度:

    可是不要忘记,它的种种功能都是基于简单的功能,这就体现了编程设计算法的强大性。

    游戏地址

    逻辑盒子,Jahooma's LogicBox

    ★★

    The Codex of Alchemical Engineering


    这个游戏将会是给多只机械手臂进行符号编程,然后来运输元素,最终完成炼金工作。

    点击RUN之后机械臂会同时开始工作,因此时间的把握也是很重要的。

    如第一关两只机械臂的编程:

    评价:

    这个游戏的关键其实在于合理布局…后期会出现比较复杂的组合

    地址

    http://www. kongregate.com/games/kr ispykrem/the-codex-of-alchemical-engineering

    ★★★

    Manufactoria



    真程序设计之作(难度较大,至今未独立通关),当年借助攻略到达最后一关的我被吓哭了,

    最后一关即输入A,B,用绿色点隔开,然后输出A+B(二进制意义下)

    Solution:

    (这个是在网上找的图片,实在不想再打一次了……)

    这是来自Matrix67的博客的介绍

    Manufactoria:非常好玩的自动机编程游戏 这是我所见过的程序设计类 Puzzle 游戏中最好玩的一个。它是真正意义上的程序设计游戏,游戏不但提供了完备的读写和流程控制功能,甚至还引入了随机测试数据。游戏很快就会引入算法的思想,因为玩家渐渐会发现,这些谜题并不是单靠模拟就能解决的;后面的谜题则越发困难,需要相当有技巧性的算法设计,对脑力绝对是一个大挑战。如果你热爱算法与程序设计,你一定会爱上这个游戏的。


    游戏背景是在一个机器人工厂里你要对机器人的芯片数据进行测试,机器人的芯片数据是一个 红、黄、蓝、绿点 组成的序列。你需要判断这个数据 是否满足特定的格式 ;或者 把它按照规则进行改写

    游戏有一些难度,但部件很简单:

  • 传送带 :把机器人移动到 箭头指向的地方 ,注意传送道可以交叉,交叉的话会依照机器人是以横向或纵向移入传送道决定机器人的走向。
  • 红蓝分支器 移掉 序列中第一个点,然后判断它的颜色,如果是红色,把它移动到红色箭头指向的格子;如果是蓝色则移动到蓝色箭头指向的;其他状况(包括序列是空的)则移动到灰色箭头指向的。黄绿分支器和红蓝分支器原理相同。注意分支器从任意方向都可进入,不是只能从黑色粗线处进入。
  • 写入器 :把特定颜色的点写到序列的 末尾

  • 评价:

    游戏设计比较容易上手,到后期游戏要求实现的功能咋一看几乎都是impossible,比前面的游戏还是要Hard很多的,牵涉了一些自动机理论。

    地址:

    K站(kongregate)

    http://www. kongregate.com/games/Pl easingFungus/manufactoria?acomplete=manufactoria

    Matrix67 Blog

    Manufactoria:非常好玩的自动机编程游戏

    官网

    PleasingFungus Games! [Manufactoria]

    额外

    人工智能入门:BugBrain游戏中文教程

    一个让你构造神经网络来指挥一只虫子活动的游戏,比较老的游戏,不过内容还是非常丰富的,可以学习到神经网络的一些知识。

    BugBrain游戏


    最后的补充:

    其实还有一些简单的直接编程的游戏可以推荐,如:

    手机游戏Hacked



    2.


    ——————————分割线—————————————————————————



    发现自己又开坑了,考试周要复习还是暂时不写2了,诸如P社的游戏还有MC等别的答案应该也有提到了,像某些构思精彩的游戏,见以前的巨长回答:

    有什么神构思的游戏? - 陆zz 的回答

    这些编程游戏应该能够让人学到一些有趣的算法小知识了…

    (不过,既然我有时间玩编程类游戏,为什么不去刷OJ呢……)