編程游戲可助新手掌握現實編程方法
學習編程的過程可能是一個噩夢。熱情滿滿的編程員費盡千辛萬苦,克服了那么多令人討厭的框架和百思不得其解的錯誤信息,終于,出成果了——屏幕上跳出”Hello, World!”這個字眼。然后,他疑惑了:“好吧,接下來怎么樣?我到底要怎么辦才能做出點像樣的東西來啊?”
當游戲開發者看到有人在編程游戲上痛苦掙扎時,通常會發現“這整個東西就是拙劣游戲所走的路線:一堆徒勞無功的努力,不明所以的失敗案例,強加給新玩家的高級功能”等等。如果我們能夠單純地運用一些簡單的游戲設計原則,學習編程將會更有趣而更有效得多。
那么,理想的編程游戲應該是怎么樣的呢?

編程游戲
以編程教學為主題的游戲概念并不算什么新創意。當下已有不少受歡迎的編程游戲,如《RoboRally》、《Robozzle》、《Robot Odyssey》和《Light-Bot》等。但這些游戲著重表現的是編程的抽象概念,而不是傳授真實的編程方法。這種情況類似于FPS游戲可讓人們捕捉到一些射擊的快感,但卻無從掌握真正的射擊本領。
所以,我們怎樣才能利用游戲教授真正意義上的編程方法?
編程游戲的關鍵特征
以下是一些關鍵的、游戲化的原則,可以讓編程學習更加有趣。我已經根據這些原則制作了一個可玩的網頁游戲《CodeHero》。(游戲邦注:此游戲仍在測試,需要用到Flash Player和Actionscript 3.0.)

0.選擇一種真正的語言。許多編程游戲使用的是游戲性語言、游戲性界面、游戲性環境。雖然這種設計很適合小孩子,但成年的玩家很快就會注意到這種語言的局限性,同時認為這門技術只適合游戲環境。顯然,真實編程語言的缺失使得從編程游戲到現實的編程之間產生了難以逾越的障礙。
解決辦法就是,使用專業的編程語言。保證語言的功能特征的完整,使玩家在掌握即學即用的語言的同時,還有充分的進步空間。技巧就是把語言簡單地分成幾個易吸收的小塊。
1.容易入門。與所有游戲一樣,編程游戲的上手門檻要低。一般來說,學習編程的***步是安裝并啟動集成環境,但這并不是一個有趣的開端。為了消除這道障礙,代碼與主游戲UI必須同步顯示,玩家編寫好代碼后,可以直接在UI上運行代碼并從UI上收到錯誤信息。
為了使用戶簡單快速地上手,還需要隱藏某些高級概念。比如,命名空間和主功能切入點,雖然這對于完整的程序運行是必要的,但對于初學者來說,這些內容太空洞了,而且需要事先弄懂非常多的高級概念。大多數傳統的編程教學技術只會告訴學生把需要的代碼敲進去,但基本上無視這些代碼。好游戲不會讓玩家去做一些他們摸不著頭腦的事!
讓編程容易呈現于游戲界面。仔細思考讓游戲為玩家編寫好切入點和錯誤處理程序,或是簡單地隱藏這些概念。
2.明確的反饋結果。編程新手寫的代碼應該通過動畫和聲音讓其清楚地看到效果。
大多數代碼的運行是可視的。但是,“int a = 4 + 3;”這串代碼的運行,用戶是看不到效果的。好游戲的動作輸出總是很明顯——編程游戲也應該如此。理想情況是,上述代碼語句能夠在特殊的編譯器中運行,而這個編譯器必須能夠重寫“+”運算符,如,一個顯示4+3的圖表,然后結果7存在一個稱為“a”的變量中。當然,不可能每一種語言都這樣,所以也許可以讓用戶編寫一個顯示輸出的函數,如儲存(“a”, add (4, 3))——可能是一個有效的解決辦法。無論怎樣,編程游戲應該有一個明確的、可檢測的輸出結果。
3.失敗幫助。剛入門的代碼寫手可能會因為各種各樣的原因而失敗:語法錯誤、異常、無限循環和邏輯錯誤等。理想的情況是,游戲應該檢測到最普遍的編寫錯誤并提供修改指導。
4.清楚可達的目標。開始編程最困難的一部分是決定編寫內容。編寫內容取決于編程員的技術水平。不幸的是,大多數新代碼寫手并不知道自己能寫什么,不能寫什么(大家都知道有不少新手程序員妄想從零起點寫出一款FPS)。編程游戲應該追蹤用戶已經掌握的技術,然后選擇用戶可以達到的目標。例如,如果編程游戲已經教會用戶如何循環,那就可以在數組部分中涉及循環。事實上,在教授新知識的同時,迫使玩家使用之前學會的內容可以強化舊概念的記憶,即溫故知新。
總之,游戲應該呈現用戶已知的知識能解決的問題。
其他例子
還有其他一些程序運用了類似的技術。例如,Code School是一個商業教學網站,它通過代碼界面互動地教授如“Ruby on Rails”這樣的課題。(注:但因為要付費,所以作者沒試過。)
結論
設計并制作一款好的編程學習游戲應該很貼近廣大開發者的需求。畢竟,沒有程序員,就沒有這么多游戲。除了對游戲產業的實際效用,當運用于現實世界時,這種設計訓練還展現出游戲設計的價值所在。雖然這類游戲存在于封閉的空間,但在現實的背景之下,其傳達的知識是無價的。
原文:http://gamerboom.com/archives/37399
【編輯推薦】






















