1. 程式人生 > >談談“程式設計遊戲”

談談“程式設計遊戲”

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

選擇標準

  • 專案必須是在時間上是較新的,或者有一定的知名度。不包括年代久遠且不活躍的、知名度過低的。
  • 是電子遊戲而不是實體遊戲(如桌遊)。
  • 能線上遊戲,或者可以獲得可執行的程式。

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

首先我按照遊戲的不同特徵進行了分類。

玩法

遊戲的玩法大致是通過程式設計控制遊戲中的人物或道具,本文選擇的大部分的遊戲都屬於此類。不過也有一類具有特殊的玩法,通常也被認為是程式設計遊戲,本文稱之為謎題遊戲。
前者中,遊戲的主角通常是魔法師、機器人、坦克等。後者的代表有Python Challenge、Code Hunt和Manufactoria。

程式語言

遊戲中的程式語言一般是已有的語言,或者是遊戲自創的某種語言,或者沒有直接使用程式語言。

  • 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程式設計水平以及進行人工智慧的研究。它使用HTML5、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……

小結

本人認為真正好的教育類程式設計遊戲應體現程式設計思想,而不應侷限於某種程式語言或技巧。我所設想的程式設計遊戲應當體現一個開放式的世界,玩家可以對其中的物件程式設計,玩家可以程式設計創造或改造物品。這裡的程式設計不一定要通過程式碼,如果能通過視覺化的方式,玩家或許能更容易理解。或許以後有空我會嘗試一下。

相關推薦

談談程式設計遊戲

程式設計遊戲(不是遊戲程式設計,也不是編遊戲……),也叫程式碼遊戲,代表著市面上一類特別的遊戲。它在遊戲中加入了程式設計的特性(或許反過來說也對)。本文意在梳理市面上的一些程式設計遊戲,並對其玩法進行介紹和評價。 選擇標準 專案必須是在時間上是較新的,或者有一定的知名度。

零基礎程式設計——塊語言程式設計遊戲攻略之水戰篇

var cs1 = 0; var cs2 = 180; while(true){ var random = Math.random()*360; move(random); shut(random); } function move(random){ swim(cs1); }

厲害了:tcgames電腦玩手遊助手新功能強勢上線,可程式設計遊戲按鍵

tcgames是一款無需安卓模擬器也可以在電腦上玩手遊,並且無需過檢測也可以匹配手機玩家的工具。隨著tcgames1.7.0全新版的上線,遊戲按鍵巨集功能正式釋出:在遊戲中,玩家可以自己程式設計遊戲按鍵。 巨集按鍵主要作用:通過按鍵的編輯可以使某個按鍵執行多個操作。如在刺激戰場遊戲中,可以設定按

需要談談遊戲測試第二季(一)

我們先要知道遊戲測試有哪些內容。 1>.作為一個遊戲測試新手該如何進入遊戲測試當中,與之前的非遊戲專案相比,更要注意哪些方面? 1.如何完成遊戲的相容性 (客戶端和頁遊) 2.如何防止功能上漏測 3.如果開啟遊戲自動化 4.遊戲效能測試的過程 5.如何改良遊戲測試的過

需要談談遊戲測試(九)

順應九九歸一,第9章就結束了。到底什麼是黑盒和白盒,我們之前的工作到底完成了覆蓋了多少。 測試分為黑盒和白盒,遊戲測試又以入門門檻低而被人熟悉。 最原始的方法: 根據策劃案按策劃案的模組來實際遊戲的行為步驟書寫測試用例。 日常行為執行測試用例為主。tester交叉測試來確保

需要談談遊戲測試(七) 更名為小談checklist

遊戲公司有各種的版本控制和軟體也有流程管理軟體,各種內部分享bbs,OA。 各種的各種也無法取代checklist表的重要性。 首先版本控制和內部分享bbs,OA是無法做缺陷統計的。雖然版本控制可以對應輸出bug記錄,但面向的是程式,是應對程式碼入庫後自動編譯。 穿插1個話

Scratch2.0程式設計--遊戲製作--射擊小鳥

至今我們學習了動作、外觀、聲音、畫筆、變數、連結串列、事件模組。現在我們已經能夠輕鬆的製作一些小遊戲。下面我們來製作一個遊戲:玩家的目標是射中空中飛翔的小鳥。                 

需要談談遊戲測試改良流程(一)

完成今天的工作量了缺陷分級(不是意識上的用缺陷軟體排列的簡單分級)。然後思考了遊戲測試依然是一個落後的瀑布型的驗收流程。那麼就需要花一些時間去更多的思考如何改善測試內部的工作流程。 工作分配的流程:(工作分配很簡單麼?) 舉個簡單的例子(只是個故事,請勿有代入感),團隊裡的

談談VR遊戲的效能優化

VR遊戲相對傳統遊戲,個人認為主要有三個方面的不同:玩法設計,輸入方式,效能壓力。今天就來談一下VR遊戲中的效能優化。 為什麼VR遊戲的效能壓力很大? 主要有三個因素的影響:高幀率,高解析度,畫兩遍,影響權重由高到低。 高幀率:DK2為75,最新的CV

需要談談遊戲測試改良流程(三)

在現代遊戲製作的流程中,已經省略了一些不是很關鍵東西,制定一些方針和工作表,來達到製作的機動性。 那麼遊戲測試的方針體現在什麼地方呢? 首先無論什麼工作和安排,都需要具備瞭解熟悉需求和制定工作方針(策略)。 什麼是測試策略?測試策略,策略不是什麼深奧的東西,每個人都或深或淺

談談程式設計習慣

在2018年12月份的時候,看到一些微信公眾號發了《python八宗罪》之類的文章,大家不知從哪裡得到的稿子,內容完全一樣,也就是換了換題目,一些我覺得還不錯的科技公眾號竟然爭相發表。 來自“新智元”的文章:https://baijiahao.baidu.com/s?id=16202566928

專注於網路程式設計,遊戲後臺,高併發

go語言天生支援高併發,同時訪問幾千幾萬網頁不是問題。例如在寫網路爬蟲時,我們從根頁面找出其他的頁面,然後其他的頁面又找出其他的頁面,如此反覆。雖然go可以支援同時訪問那麼多頁面,但是作業系統卻不支援同時開啟那麼多頁面,因為每次訪問頁面都是一次socket通訊。每次socke

有了這15款程式設計遊戲,誰都可以學程式設計

1、Coding Games一邊玩遊戲,一邊挑戰程式設計難題。Coding games支援包括P

Walkthrough of Hacked -【黑客出擊】程式設計遊戲攻略

Chapter 1 The Hackpad As a 16-year-old kid in a normal town, living a normal life, everything is boring as hell. Walking home

一些簡單好玩的Python程式設計遊戲

1) 構造王者榮耀英雄介紹“選單”,編寫程式,顯示“選單”,由使用者輸入代號後,輸出對所選英雄的詳細介紹 程式碼如下: 執行結果如下: 只要輸入代號後,就會輸出對所選英雄的詳細介紹 2) 輸入年、月,輸出本月有多少天。合理選擇分支語句完成設計任務。   

遊戲裡的程式設計遊戲

   掃雷是一個男女老少皆宜的一個小遊戲,讀大學的時候見同學玩的多,自己主要以暗黑2,泡泡堂,街霸為主。那個時候覺得掃雷是個很神奇的東西,滑鼠左擊兩下居然可以掃出一片,當時連模擬掃雷的想法都沒有。   在我的大學四年,從教學資源上確實乏善可陳,作為醫學院校的第一屆工科專業

3D程式設計遊戲2--太陽系--牧師與惡魔

1、簡答並用程式驗證 遊戲物件運動的本質是什麼? 遊戲物件位置和狀態的改變 請用三種方法以上方法,實現物體的拋物線運動。 第一種 以(0,0,0)為原點,分別在(0,0,0)和(2,4,0)放兩個cube作為起點和終點,模擬出y=

談談網路遊戲中的延遲解決方案

我們平常玩的很多網路遊戲,比如英雄聯盟/王者榮耀/PUBG等,你感覺到卡頓往往不是因為你的網速問題,而是因為網路延時導致的,比如說LOL美服的遊戲伺服器在美國,而你在中國的華中地區玩著美服LOL,那麼你的延遲可能會在300ms左右,因為網路請求從美國到中國華中地區需要經過很多的路由,這裡面會消耗掉很多時間,如

黃金點遊戲程式設計總結

作業要求部落格連結: https://edu.cnblogs.com/campus/ustc/InnovatingLeadersClass/homework/2231 黃金點遊戲程式碼倉庫地址為:https://dev.azure.com/v-zhilin/_git/GoldPoint 專案估計

軟體工程結對程式設計之黃金點遊戲

作業要求: https://edu.cnblogs.com/campus/ustc/InnovatingLeadersClass/homework/2231 專案原始碼: https://github.com/jackroos/golden_number 本次作業我們是設計一個玩黃金點遊戲的Bot,遊戲的要