談談「編程遊戲」

編程遊戲(不是遊戲編程,也不是編遊戲……),也叫代碼遊戲,表明着市面上一類特別的遊戲。它在遊戲中加入了編程的特性(或許反過來講也對)。本文意在梳理市面上的一些編程遊戲,並對其玩法進行介紹和評價。python

轉載請註明:
做者:andong777
原帖地址:Code Cabinios

選擇標準

  • 項目必須是在時間上是較新的,或者有必定的知名度。不包括年代久遠且不活躍的、知名度太低的。
  • 是電子遊戲而不是實體遊戲(如桌遊)。
  • 能在線遊戲,或者能夠得到可運行的程序。

通過這樣一個簡單的篩選,我獲得了一個長長的項目列表。這裏面有知名度較高的CodeCombat和騰訊的Code Tank,也有比較新的創業公司的遊戲如Glitchspace和Hakitzu。
如下是本文中涉及到的遊戲列表:程序員

首先我按照遊戲的不一樣特徵進行了分類。編程

玩法

遊戲的玩法大體是經過編程控制遊戲中的人物或道具,本文選擇的大部分的遊戲都屬於此類。不過也有一類具備特殊的玩法,一般也被認爲是編程遊戲,本文稱之爲謎題遊戲。
前者中,遊戲的主角一般是魔法師、機器人、坦克等。後者的表明有Python Challenge、Code Hunt和Manufactoria。segmentfault

編程語言

遊戲中的編程語言通常是已有的語言,或者是遊戲自創的某種語言,或者沒有直接使用編程語言。app

  • CodeCombat支持語言最多。從最初只支持JavaScript到如今的JavaScript、Python、CoffeeScript、Clojure、Lua、IO。
  • Code Tank和Hakitzu使用JavaScript。
  • CodeSpells、Code Hunt和Robocode使用Java。此外,Code Hunt還支持微軟自家的C#。
  • Algoid使用本身的類Logo語言。
  • 其餘的遊戲中沒有直接使用編程語言。

遊戲目標

遊戲的目標一般有:編程語言

  • 經過遊戲使玩家學習某種語言。如Hakitzu和Code Hunt。
  • 幫助孩子或初學者瞭解編程。如CodeCombat、Algoid和CodeSpells。
  • 爲熟悉編程的人提供編程對戰的平臺。如Code Tank和Robocode。
  • 不知道要幹什麼(益智)。如Manufactoria。

有了以上的瞭解,下面對幾個典型的遊戲進行簡單介紹。學習

CodeCombat

CodeCombat是一個經過玩遊戲來學習編程的網站,也是GitHub上最大的開源CoffeeScript項目,有上千程序員和玩家爲其編寫程序、測試遊戲。到目前爲止,已經翻譯成17種國外語言。官方稱,他們網站的任務就是教會人們如何編程,遊戲覆蓋編程菜鳥到大神各個階段,總共超過9千關。人們不須要任何編程知識便可瞭解程序的運行邏輯,並編出實用的代碼。(如下兩張圖片來自驅動之家)測試

請輸入圖片描述

在遊戲中,經過代碼實現角色的移動、對話、攻擊、拾取和使用道具。在一開始的關卡中,玩家只要輸入順序執行的指令便可完成任務。隨着遊戲的進行,玩家要完成的任務也更加複雜,玩家須要學習使用判斷、循環等語句,在這個過程當中玩家不知不覺中就瞭解了編程。網站

請輸入圖片描述

想要深刻了解能夠看這篇評測
和王國守衛戰相似的畫風再加上游戲有趣的劇情設定和衆包獲得的豐富關卡,說他是當下編程遊戲的佼佼者應該沒有什麼異議吧。

Code Tank

Code Tank是由騰訊AlloyTeam開發的一款編程遊戲。聽說靈感來自上面提到的Robocode。引用一段自家的介紹:

CodeTank是一個很是有趣的競賽性編程遊戲平臺,經過幾行簡單的Javascript代碼和CodeTank API,每一個人均可以方便的構建屬於本身富有智能和個性的坦克(Tank)機器人,並經過互聯網進行在線互動和競賽!CodeTank是 Code Game(代碼遊戲,也叫編程遊戲)的一種,可讓你在娛樂的同時學習和提升Javascript編程水平以及進行人工智能的研究。它使用HTML五、CSS3等Web新技術構建的在線平臺,自然的基於互聯網,Tank機器人的代碼不須要人工上傳下載,能夠直接在線運行與其餘選手進行戰鬥。

請輸入圖片描述

這個遊戲和上一個不一樣,並非給初學者學習用的。我沒有太多JavaScript編程經驗,進入到遊戲中不知道該幹什麼。進入遊戲後首先要建立本身的坦克,以後就是編寫本身的代碼,實現AI控制坦克運動。最終目的是戰勝其餘玩家的坦克,和那些機器人比賽差很少。

請輸入圖片描述

CodeSpells

這是我本人比較喜歡的一款編程遊戲,儘管它自己並不火,並且須要下載Java客戶端。下面這段話是它惟一的一段中文介紹:

這款遊戲是由計算機學家 William Griswold 帶領的大四學生團隊開發的,遊戲的主要受衆爲高中生。研發團隊但願由此來開發學生們的創新力和想象力,讓他們主動地去學習知識。該做是一款第一人稱遊戲。玩家將扮演一名和矮人們生活在荒島上的魔法師。由於矮人們失去了使用魔法的能力,因此做爲魔法師的玩家將幫助矮人們完成魔法。這些咒語是以 Java 語言的形式呈如今玩家面前。玩家須要經過編寫這些語句來完成魔法。在幫助矮人們的同時,玩家還能經過一些解密遊戲來得到相應的成就,固然,一樣是經過 Java 語言的編寫。

請輸入圖片描述

經過這段視頻能夠看到,該遊戲所表現的內容較好地體現了面向對象的編程思想,玩家經過代碼能夠支配遊戲中的物品,進而改造遊戲中的世界。

請輸入圖片描述

其餘

剩下的那幾個我就簡單來個一句話介紹吧。

  • Algoid:使用給定的語言和API控制小烏龜運動來畫畫。能夠畫很複雜的畫哦。不過畫了幾個沒什麼動力就不玩了……
  • Code Hunt:學習C#和Java不錯,確實是從頭一點點學習。但感受只是披着遊戲的外衣的編程題目。Python Challenge和Manufactoria這倆也同樣。
  • Python Challenge:每一關卡一個解謎題目。其實和Python沒什麼關係,什麼語言均可以;感受和編程關係也不大……
  • Manufactoria:自動機編程。Matrix67在他博客上推薦的。
  • Glitchspace和Hakitzu:沒有相應的設備,因此沒玩。
  • Robocode:和Code Tank同樣。要下載Java代碼到本地,或許還要Eclipse……

小結

本人認爲真正好的教育類編程遊戲應體現編程思想,而不該侷限於某種編程語言或技巧。我所設想的編程遊戲應當體現一個開放式的世界,玩家能夠對其中的對象編程,玩家能夠編程創造或改造物品。這裏的編程不必定要經過代碼,若是能經過可視化的方式,玩家或許能更容易理解。或許之後有空我會嘗試一下。

相關文章
相關標籤/搜索