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