雖然Robocode里自帶了一個(gè)Robot的編輯器,不過(guò)功能略顯不足,正好最近在研究Eclipse,我們就來(lái)看一下如何在Eclipse創(chuàng )建一個(gè)自己的機器人。
本文的開(kāi)發(fā)環(huán)境:Windows XP Professional SP2 + J2SDK1.4.2_10 + Eclipse 3.1.1 + Robocode 1.0.6,請首先確保您的機器上安裝了相關(guān)的開(kāi)發(fā)包。
一、 Eclipse的相關(guān)設置:
首先介紹一下,我機器上Eclipse的Workspace為E:/mywork/Java/Exercise/Eclipse;我機器上Robocode的安裝路徑為C:/Program Files/robocode。
(1) 創(chuàng )建項目:?jiǎn)?dòng)Eclipse后,我們單擊菜單”File”-----“New”-----“Project”,啟動(dòng)向導,我們選擇”Java Project”,項目名為”MyRobocode”。
(2) 在項目中創(chuàng )建package:然后我們在”P(pán)ackage Explorer”(包瀏覽器)處右鍵單擊”MyRobocode”項目,選擇”New”-----“Package”,創(chuàng )建一個(gè)新包,如下圖所示:
圖1
包的名字為”com.loujing”,如下圖所示(Java建議,為了創(chuàng )建一個(gè)全世界獨一無(wú)二的包,請將您的域名反轉做為包名,且全為小寫(xiě),我的域名為loujing.com):
這里需要創(chuàng )建包的原因是:您編寫(xiě)的機器人需要和全世界其他程序員編寫(xiě)的機器人對戰,所以您機器人的名字必須是唯一的。Robocode采用”包名+機器人類(lèi)名”來(lái)做標識,以便區分。
(3) 導入Robocode類(lèi)庫:因為Robocode工具包中已替你寫(xiě)好了大部分的代碼,如果您想創(chuàng )建自己的機器人,就必須將類(lèi)庫加入到項目中來(lái),我們在”P(pán)ackage Explorer”處右鍵單擊”Robocode”項目,選擇”P(pán)roperties”(屬性),如下圖所示:
在打開(kāi)的對話(huà)框中,我們在左邊選中”Java Build Path”,右邊選擇”Libraries”頁(yè),單擊”Add External JARs…”按鈕,然后找到Robocode的安裝路徑(我機器上是C:/Program Files/robocode),選中”robocode.jar”,確定即可,如下圖所示:
(4) 創(chuàng )建自己的機器人:一切具備,終于開(kāi)始寫(xiě)機器人的代碼了。我們在”P(pán)ackage Explorer”中找到”MyRobocode”項目中”com.loujing”包,單擊右鍵,選擇”New”-----選擇”File”,如下圖所示:
在彈出的對話(huà)框中,我們輸入文件名”AIRobot.java”(人工智能機器人-----酷吧),如下圖所示:
然后,我們在AIRobot.java中鍵入如下代碼:
package com.loujing;
import robocode.*; //導入包
public class AIRobot extends Robot //繼承自Robot類(lèi)
{
public void run() { //必須的方法,確定機器坦克的基本行為
while(true) {
turnGunRight(360); //右轉炮管360
}
}
public void onScannedRobot(ScannedRobotEvent e) { //當掃描到其它機器坦克時(shí)
ahead(100); //前進(jìn)100
turnLeft(90); //機器坦克左轉90
}
}
是不是出乎意料的簡(jiǎn)單,我們幾乎沒(méi)寫(xiě)幾行代碼吧,一個(gè)基本的框架就好了。另外,在Eclipse里,當您把鼠標移到某個(gè)標識符上面時(shí),會(huì )實(shí)時(shí)顯示Robocode的API幫助,比如下圖就顯示了onScannedRobot方法說(shuō)明:
二、 Robocode的相關(guān)設置:
當我們把AIRobot.java編譯之后,AIRobot.class就產(chǎn)生了,下面我們來(lái)看看如何在Robocode里調用到您的*.class文件呢,您有兩種方法:
(1) 將產(chǎn)生的*.class的文件復制到Robocode安裝路徑下的robots下,比如我會(huì )將AIRobot.class拷貝到C:/Program Files/robocode/robots下即可。
(2) 其實(shí)還有一種更簡(jiǎn)單的方法,Robocode對Eclipse的支持很好,我們可以直接在Robocode里設置好路徑。啟動(dòng)Robocode,選擇”Option”菜單-----單擊” Preferences”,在打開(kāi)的對話(huà)框中選擇”Development Options”頁(yè),把您之前建的Eclipse項目的路徑填入,單擊”Finish”按鈕即可(我剛才建的項目路徑是E:/mywork/Java/ Exercise/Eclipse/MyRobocode),如下圖所示:
圖8
另外,在”View Options”頁(yè),有一個(gè)復選框” Visible Scan Arcs”,您可以把它選上,這樣,機器人掃描時(shí)就可以看到射線(xiàn)狀的雷達了,很酷啊。
三、測試自己的Robot:一切準備就緒了,現在我們來(lái)測試一下我們寫(xiě)的那個(gè)弱智機器人吧。
啟動(dòng)Robocode,選擇”Battle”菜單-----單擊”New”(新建一個(gè)戰斗),打開(kāi)的對話(huà)框如下圖所示:
在Packages列表中,我們看到所有的包,其中有我們之前創(chuàng )建的com.loujing包;在Robots列表中,會(huì )列出所有的機器人,其中也有我們創(chuàng )建的AIRobot。我們利用Add按鈕增加兩個(gè)AIRobot(當然您也可以多增加幾個(gè)機器人進(jìn)去,如果您只選擇一個(gè),系統會(huì )提示您不能戰斗,您就只能觀(guān)察一個(gè)機器人的運動(dòng)了),在Selected Robots列表中出現的就是您現在選擇參加戰斗的機器人了。
Number of Rounds表明戰斗的回合數,默認是10回合;當一切選好,我們單擊”Start Battle”按鈕,您就會(huì )看到如下圖所示:
中間區域就是站場(chǎng),下面的按鈕可以隨時(shí)暫停、恢復、停止比賽。您可以仔細觀(guān)察一下這兩個(gè)AIRobot,是不是如我們之前所寫(xiě),開(kāi)始時(shí)先右轉炮管360度,而當掃描到另一個(gè)機器人的時(shí)候,就先往前走100,然后向左轉90度,所有的行動(dòng)都是事先由您編程實(shí)現的。
現在,您可以修改一下原來(lái)的AIRobot.java了,比如在onScannedRobot方法里增加一句” fire(1);”,意思顯而易見(jiàn),當掃描到其它機器人的時(shí)候,就開(kāi)火。
您可以到Robocode的安裝路徑下的robots文件夾下,去打開(kāi)*.java文件,看一下別人的機器人程序是怎么寫(xiě)的,或者去網(wǎng)上下載;如果對庫函數有疑問(wèn),您可以單擊Robocode程序的Help菜單,選擇”Robocode API”,或者直接雙擊安裝路徑下的javadoc/index.html打開(kāi)幫助。您需要重點(diǎn)關(guān)心的是Robot類(lèi),看一下其中有哪些控制機器人的方法,以及該如何使用它們,如下 圖11
怎么樣,您是不是也來(lái)了興趣了,也來(lái)創(chuàng )建自己的第一個(gè)機器人吧,如果您能夠在特定時(shí)刻讓機器人做出正確的反應,比如左右躲避、開(kāi)火、遇墻回頭等等,那么也算有人工智能了吧,呵呵。