董金釗 董新飛


摘要:編程語言的學習枯燥乏味,語法、邏輯、算法等讓初學者望而卻步。本文作者嘗試將游戲化學習理念運用到編程學習中,采用網絡游戲的方式,對學習Python語言編程進行了實驗,并對實驗過程、實驗結果進行了總結,認為游戲化學習可以激發學習者的學習興趣,提高學習效率。
關鍵詞:CodeCombat;游戲化學習;Python語言;編程
中圖分類號:G434 文獻標識碼:A 論文編號:1674-2117(2018)18-0042-03
● 研究背景
升入高中后,因為參加了學校組織的Python編程特長學習小組,繁重的學習任務擠占了不多的課余時間,面對學習壓力,筆者不禁要問,怎么才能既學習特長,又愉快玩耍呢?在圖書館查找資料時,筆者發現了《游戲化學習》和《游戲改變世界》兩本書,經過細致研讀,知道了游戲對學習者的幾個作用:①可以提高游戲者的學習興趣;②循序漸進的游戲進程有利于促進知識的掌握;③能夠鍛煉和協調手眼互動等基本能力;④有助于培養游戲者解決問題的能力;⑤培養合作能力;⑥為游戲者體驗學習提供可能。既然游戲具有一定的教育意義,而學習也并非天然姓“苦”,那么若能夠將玩網絡游戲和學習結合起來,將游戲以一種特定的形式設計成有效的學習方式,讓學習者在快樂中學習,會不會有意想不到的效果呢?
● 理論準備
2014年度的《地平線報告》中就強調了“游戲與游戲化”,報告指出,“未來兩到三年,3D打印技術、游戲與游戲化、沉浸式學習環境和可穿戴技術將得到廣泛應用”。游戲化學習(Learn through play),又稱為學習游戲化,指的是采用游戲化的方式進行學習,它是流行的教育發展方向,已成為“互聯網+”浪潮中學習的風向標。
筆者在網上搜索相關資料時,發現目前國內與國外都有學習網站做得非常人性化,學習者可以在游戲中“寓教于樂”。編程學習游戲化的網站有Codecademy、Codeschool、Treehouse、CodinGame、CodeCombat等,涉及的編程語言有HTML/CSS、Python、PHP、Ruby、APIs、Javascript、jQuery等多種。
● 探索過程
1.平臺選擇
筆者所在的特長小組學習的編程語言主要為Python,比較各網站的特點后選擇在CodeCombat上學習編程(針對級別為初學者到中級水平的開發者),其特點是使用游戲化編程模式,通過目標引導,做到實時反饋。
2.實驗分組
為驗證游戲化學習的可行性和實驗效果,筆者所在的特長小組共30名同學每15人一組分成了教師輔導組和游戲實驗組。兩個小組采用同樣的學習進度,教師輔導組實行教師講課、組員自主編程練習的方式,游戲實驗組采用組員自己游戲、教師指導的方式。兩個小組在實驗一段時間后進行編程競賽,以比較兩種學習方法的優缺點。
作為游戲化學習的倡議者,筆者擔任了游戲實驗組的組長,負責統籌學習過程和匯總實驗數據,并在實驗出現不良前兆時向教師匯報并中止游戲實驗。經過小組討論并結合游戲學習的基本步驟,筆者制訂了學習(游戲)計劃,將15人分成3個小組,要求組內成員全力合作,相互監督,同時在小組間引入了競爭機制。
3.實驗過程
首先,游戲實驗組的同學都在CodeCombat上注冊了賬號,并對網站進行了初步的了解。CodeCombat支持JavaScript、CoffeeScript、Lua、Python和Clojure5種編程語言,每個級別包含不同的任務,如搜集寶石、打敗怪獸以及找出通往下一關的道路。一部分關卡免費,訂閱會員可以玩所有關卡。對于入門級的學生來說,免費的關卡已經足夠了。
(1)旗開得勝
游戲實驗組的同學在了解了游戲機制、熟悉了頁面中各功能的作用后,打開第一個關卡,選擇道具、英雄、編程語言后就可以在向導的指引下完成初步的游戲操作。
游戲窗口左邊是動畫區,右邊是代碼區。CodeCombat要求玩家使用代碼來操控游戲人物,在代碼區輸入代碼后,單擊“運行”按鈕,游戲人物即可按代碼運行結果來運動。如果有代碼錯誤,會實時以紅色字體提示,同時運行中有問題也實時提示。如果代碼和邏輯沒問題,則可點擊“完成”按鈕進入下一關,學習新的內容。在游戲中,每一位學習者都可以從“實戰”中不斷學習編程語言的語法、邏輯等知識……在實驗進行三周,學習了基礎知識,對函數結構有初步的認識后,在基本語法的競賽中,游戲實驗組的成績明顯高于教師輔導組的成績(如表1)。
(2)潰不成軍
在學習判斷、循環語句時,由于需要有更多的創造性,通過語法、接口編寫出復雜的函數才能過關,又由于游戲實驗組的同學缺乏教師的指導,缺乏完善編程的思維,游戲實驗組同學的成績不如教師輔導組(如表2)。
總結成績低的原因,主要是對理論知識掌握不足,在解決實際問題過程中缺乏教師的及時指導,算法選擇不當,語法錯誤百出。由此得出結論,光靠激情,沒有教師的及時點撥,沒有最優的算法做基礎,學習編程語言會走很大的彎路。
(3)重整旗鼓
為了提高游戲效率,筆者與游戲實驗組的同學們又重新學習了游戲學習的相關知識,決定在線上編程學習的同時,引入線下游戲的模式,做到線上、線下同步進行,同步反饋、同步跟進。
線上就是遵循CodeCombat平臺的游戲規則,在游戲過程中學習和強化編程知識,精進編程能力。在游戲學習的同時,加大了“復盤”力度,即在每個游戲結束后,休息15分鐘,其間進行小組經驗分享,對游戲過程中采用的策略進行復盤,分析最高分團隊和最低分團隊各自所采用的策略,在討論中找出最優算法,并就典型問題向教師請教,加入網上各種討論組,充分利用百度帖吧、論壇、QQ群等向高手學習。
線下游戲是指參加游戲學習的同學每3人一個互助小組,在公開、公正、自愿,可執行性高的前提下,建立了引入競爭機制的游戲學習制度:①籌集游戲基金。經過充分討論,游戲成員從自己的零用錢中取出相同的數目(每人100元),匯集成游戲基金,供游戲中進行獎勵激勵。②把學習大目標分解為小關卡。把一個周期的學習目標(一個知識系列)分割為多個兩天可以完成的小目標(小關卡),關卡完成后有實時積分獎勵。③周期測試大BOSS。一個學習周期進行一次終極大比拼(相當于學科學習中的單元測試),請專業教師當裁判,對完成情況進行評價。④獎勵機制。小關卡積分和大BOSS獎勵積分按40%和60%的比例進行綜合,評選出優勝團隊進行現金獎勵,獎勵基金可以自主支配。
經過不斷的學習和總結,游戲學習組同學的編程能力突飛猛進,從第三次競賽的結果可以看出(如表3),已將教師輔導組的同學遠遠地甩在身后。
(4)捷報頻傳
兩個月后,在教師的幫助下,筆者與游戲實驗組的同學總結了游戲化學習的經驗,現在,已在全校相關學科進行了實驗推廣,并取得了小范圍的成功。
● 學習心得
通過對基于CodeCombat平臺的游戲化學習編程實驗的探索,筆者總結出了游戲化學習的基本公式:游戲化學習=學習項目(游戲)+故事背景(規則設定)+反饋機制(積分系統和升級機制)+成就感(獎勵設定)。在這個游戲化學習公式中,激勵人的因素有以下幾個。
1.及時反饋
每完成一個任務(編程任務),游戲者都能得到及時的反饋,能快速和清晰地了解自己的游戲行為所產生的收益,并在領取到收益時獲得了極大的心理滿足感。
2.成就感
對于游戲中的每一個任務或挑戰,游戲者都可以無數次試錯,通過不斷修正、查閱攻略,或者交流,總能最終成功。游戲過程中只記錄成功,不記錄失敗,這樣游戲者展示給別人的總是自己成功的一面,從而能體會出自己的價值。
3.豐厚獎勵
游戲中每完成一個關卡,游戲者都能解鎖新的技能或者功能;完成一個任務,能獲得罕見材料或者武器、英雄,讓游戲者屬性大增,最不濟還能完成任務,獲取經驗和金幣。獲取這些金幣、積分后,英雄游戲者可以按自已的意愿進行處置。
4.多系統、多目標和多任務
游戲中富含各種系統,每個系統又包含不同的任務和成就,這些設定讓游戲者在游戲中擁有大量的大目標和小目標,每當完成一個目標后游戲者就會獲得豐厚的獎勵。
● 結語
將網絡游戲融入學習,可以較好地激發學習者的學習興趣,使原本動機水平較低的學習者能夠自主學習程序設計技能,獲取任務激勵,獲得成就感,從而培養良好的職業素養。游戲化學習在未來必將不斷擴大應用范圍,VR虛擬現實游戲的誕生也會為游戲化學習帶來新的體驗。
參考文獻:
[1]百度百科[EB/OL].https://baike.baidu.com/.
[2]極客戰紀[EB/OL].https://e.codecombat.163.com/premium.htm#/premium.
[3]簡·麥戈尼格爾.游戲改變世界[M].閭佳,譯.杭州:浙江人民出版社,2012,9.
[4]莊紹勇.游戲化學習[M].北京:北京師范大學出版社,2015,10.
[5]王世穎.人本游戲——游戲讓世界更美好[M].北京:電子工業出版社,2014,2.