當前位置: 華文問答 > 遊戲

哪些遊戲玩物不喪誌 、能學到知識?

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呢……)