陳 丁 梁 靜
摘要:論文通過分析游戲軟件在學習中的積極因素,提出一套基于Robocode的Java實驗教學方案。倡導通過寓教于樂,提高學生對Java語言的應(yīng)用能力和創(chuàng)新意識。
關(guān)鍵詞:Robocode;Java教學;實驗教學
中圖分類號:G642文獻標識碼:A文章編號:1009-3044(2009)22-0000-00
高校實驗教學在培養(yǎng)學生基本技能、動手能力和創(chuàng)新思維方面具有課堂教學所不能取代的作用。Java程序設(shè)計作為一門強調(diào)實踐的課程,在其教學模式上需注意理論教育及實踐教育的雙重把握、不可偏廢。目前Java實驗內(nèi)容多是按章節(jié)進行驗證性實驗,不能激發(fā)學生的學習興趣,導致很多學生在做完實驗后就開始聊QQ、打游戲,不再主動探索對Java語言的學習。
為克服傳統(tǒng)Java實驗教學內(nèi)容的單一和枯燥,本文提出了將Robocode游戲軟件引入到Java實驗教學的方法:首先搭建Robocode游戲軟件在Eclipse下開發(fā)、運行的實驗平臺;然后講解Robocode的基本原理,學習Robocode的Java API和文獻資料;最后組織學生間相互競賽。通過運用該方法大大提高了Java課程學習的趣味性,激發(fā)了同學們的學習熱情[1]。
1 計算機教學游戲在學習中的意義
一般認為,游戲?qū)τ趯W習來講多是弊大于利的,我們也??吹酱髮W生因沉迷網(wǎng)絡(luò)游戲而引發(fā)退學的報道。但是通過對計算機游戲在教育實踐中的應(yīng)用進行大量的探討和研究后,我們找到了一些通過游戲吸引學習者使用的積極因素。主要表現(xiàn)在以下幾個方面[2]:
1) 游戲為學習者提供了一個情境氛圍,讓他們獲得沉浸性經(jīng)驗。游戲情境因素具有容易識別的特征,能使學習的有效性得到很大提高。
2) 游戲提供了一個完整的、交互的虛擬情境,它能很好地激發(fā)學習者的學習興趣。
3) 游戲擁有足夠的靈活性和復雜性,能適應(yīng)學習者的不同學習風格和水平。游戲把學習者放在了決策者的位置,推動學習者利用游戲活動的嘗試錯誤來學習。
4) 游戲能為學習者提供綜合性經(jīng)驗,培養(yǎng)學習者的多種技能。制作良好的游戲,通過其故事的視覺性、經(jīng)驗性和創(chuàng)造性途徑,能培養(yǎng)學習者解決深層次問題的能力。
因此,我們完全可以利用游戲的上述特點,為教學任務(wù)設(shè)計出合適的游戲場景,來達到相應(yīng)的教學目的。Robocode正是為Java趣味性編程學習而誕生。
2 Robocode在Java實驗教學中的應(yīng)用
2.1 Robocode介紹
Robocode是2001年7月在美國IBM的alphaWorks站點上公開的坦克機器人戰(zhàn)斗仿真引擎。Robocode必須使用Java語言對機器人動作進行編程,為機器人設(shè)計不同的決策方案來自動指揮它運行,可以說Robocode是一種有趣的競賽性編程。通過它可以讓Java初學者掌握Java語言的繼承性、多態(tài)性、事件處理機制以及Java API等。
2.2 基于Robocode的Java實驗計劃
授課老師可以根據(jù)實際情況在完成基本的Java實驗后,分配至少10課時的上機來完成Robocode實驗內(nèi)容。
1) 實驗一:進入Robocode的世界
在實驗一中,主要任務(wù)是完成Robocode實驗平臺的搭建,熟悉Robocode的平臺環(huán)境、幫助文檔以及游戲規(guī)則,指導學生加載系統(tǒng)自帶的坦克機器人進行對決,查看坦克機器人的源代碼等,使學生對Robocode有個初步的感性認識。
Robocode的最新安裝程序可以到http://robocode.sourceforge.net中進行下載。在安裝和運行前,請確認系統(tǒng)環(huán)境已安裝了Java運行環(huán)境。目前最新版的Robocode需要至少是Java 1.5.0及以上版本。安裝成功后運行 Robocode 時,將看到兩個相關(guān)的 GUI 窗口,這兩個窗口構(gòu)成了Robocode 的 IDE:戰(zhàn)場和Robot Editor。如下圖所示:
在Robot Editor中,我們可以對坦克機器人的運行代碼進行編輯,不過Robocode自帶的編輯器功能比較簡陋,編輯、調(diào)試起來不是很方便。還好Robocode對Eclipse的支持不錯,我們只需進行簡單配置,就可以在Eclipse中編寫我們的坦克機器人程序了(詳細的配置步驟,請參見http://robowiki.net/)。
2) 實驗二:開發(fā)第一輛坦克機器人
在實驗二中,主要任務(wù)是指導學生在Eclipse中,開發(fā)和調(diào)試第一個自己的坦克機器人。在開發(fā)前指導教師可以首先通過分析Robocode自帶的機器人(如比較典型的Corners、Craze、Walls)源代碼,幫助學生理解坦克機器人的運行原理、決策機制以及相關(guān)函數(shù)的意義。開發(fā)完后,讓學生把自己的機器人加載到游戲平臺中,與其它機器人進行對決。通過對決可以檢驗自己開發(fā)的機器人是否能“機靈”地打敗對手,學生也可以反復調(diào)整自己的程序來達到目的。
通過實驗二,可以讓學生十分熟練地使用Eclipse進行Java程序開發(fā),幫助學生進一步理解類、對象、繼承等面向?qū)ο蟮母拍?。但最關(guān)鍵的是,通過機器人間的反復對決,學生會發(fā)現(xiàn)開發(fā)一個“戰(zhàn)無不勝”的機器人是很困難的。如何使自己的機器人更加“聰明”地判斷對手的移動軌跡,躲避對手子彈等等這些問題,將激發(fā)起學生的學習熱情,也為實驗三的內(nèi)容埋下鋪墊。
3) 實驗三:設(shè)計高級坦克機器人
基于實驗二的問題,實驗三的主要任務(wù)就是從坦克機器人的移動策略、射擊策略和雷達掃描策略這三個方面進行講解,指導學生設(shè)計出較智能的坦克機器人。指導教師可以根據(jù)本班學生的實際情況,選擇性的分析國內(nèi)外優(yōu)秀機器人的設(shè)計策略思想。比如在移動策略中除了比較簡單的圓周運動方式、隨機運動方式和來回振蕩運動方式等,Alisdair Owens提出了反重力運動[3],利用此方法允許你定義一些在戰(zhàn)場上應(yīng)該避開的特殊點,向較理想的位置運動;又如在射擊策略中的單一瞄準算法和通用瞄準算法[4]等。
通過實驗三,可以讓學生學習到Java語言中的高級應(yīng)用,比如抽象、多態(tài)、覆蓋、重載等。指導教師可以對遺傳算法、神經(jīng)網(wǎng)絡(luò)算法在Robocode中的應(yīng)用進行適當介紹,擴充學生的視野,引導學生進行更深入的探索。
本次實驗內(nèi)容對指導教師的要求較高,需要做好充分的備課準備。關(guān)于Robocode的高級應(yīng)用可以訪問http://www.ibm.com/developerworks/library/ j-robotips/ index.html,在里面有其關(guān)于優(yōu)秀智能機器人策略的詳細講解。
4) 實驗四:坦克機器人大決戰(zhàn)
實驗四將是最激動人心的時刻,在本次實驗中,學生開發(fā)的各類機器人將一決高下。首先指導教師對學生進行分組,我們以每班40名學生為例。實行“1對1”的比賽模式,最多賽三場定勝負,每場9個回合,以40進20,20進10,10進5依次進行淘汰。在最后的5強賽中,實行單循環(huán)淘汰賽制,得出最后的比賽排名。在最后,指導教師可以讓進入前5強的學生講解自己的設(shè)計思路,老師可做適當點評。
上述內(nèi)容只是為大家提供一種參考方案,指導教師可以靈活地進行調(diào)整安排??傊?Robocode是一款很不錯的利用游戲來學習Java編程的教學平臺。
3 結(jié)論
通過使用Robocode競賽性編程后,同學們表現(xiàn)出很大的學習興趣,能利用課余查閱國內(nèi)外的文獻資料,分析國內(nèi)外優(yōu)秀機器人的設(shè)計思想,不斷更新坦克機器人的策略機制。任課教師也可以根據(jù)學生的實際情況,適當引入人工智能、算法分析、游戲開發(fā)等相關(guān)知識介紹,深化學生的學習興趣。總之,文中介紹的將Robocode游戲引入到Java實驗教學中,是對教學方法多樣性的有力補充,雖然它無法解決實驗教學中的所有問題,但對實驗教學的改進提供了另一種思路。
參考文獻:
[1] 王梅.應(yīng)用于教學的Java編程競賽平臺的開發(fā)[J].科技信息,2008(18):70-71.
[2] 王廣新.計算機教學游戲的基本結(jié)構(gòu)與特征綜述[J].中國電化教育,2006(7):77-79.
[3] Owens A .Secrets from the Robocode masters: Anti-gravity movement [EB/OL].[2009-03-20].
http://www.ibm.com/developerworks/library/j-robotips/index.html.
[4] 陳靜.高級瞄準策略[J].電腦報,2003(05):66-70.