如果您還不知道什麼是Eclipse,請參考這篇文章http://www.loujing.com/Article/ShowArticle.asp?ArticleID=30,或者網上相關資料。
如果您還不知道什麼是Robocode,請參考這篇文章http://www.loujing.com/Article/ShowArticle.asp?ArticleID=32,或者網上相關資料。
雖然Robocode裡內建了一個Robot的編輯器,不過功能略顯不足,正好最近在研究Eclipse,我們就來看一下如何在Eclipse建立一個自己的機器人。
本文的開發環境:Windows XP Professional SP2 + J2SDK1.4.2_10 + Eclipse 3.1.1 + Robocode 1.0.6,請首先確保您的機器上安裝了相關的開發包。
一、 Eclipse的相關設定:
首先介紹一下,我機器上Eclipse的Workspace為E:/mywork/Java/Exercise/Eclipse;我機器上Robocode的安裝路徑為C:/Program Files/robocode。
(1) 建立項目:啟動Eclipse後,我們單擊菜單”File”-----“New”-----“Project”,啟動嚮導,我們選擇”Java Project”,項目名為”MyRobocode”。
(2) 在項目中建立package:然後我們在”Package Explorer”(包瀏覽器)處按右鍵”MyRobocode”項目,選擇”New”-----“Package”,建立一個新包,如所示:
圖1
包的名字為”com.loujing”,如所示(Java建議,為了建立一個全世界獨一無二的包,請將您的網域名稱反轉做為包名,且全為小寫,我的網域名稱為loujing.com):
圖2
這裡需要建立包的原因是:您編寫的機器人需要和全世界其他程式員編寫的機器人對戰,所以您機器人的名字必須是唯一的。Robocode採用”包名+機器人類名”來做標識,以便區分。
(3) 匯入Robocode類庫:因為Robocode工具包中已替你寫好了大部分的代碼,如果您想建立自己的機器人,就必須將類庫加入到項目中來,我們在”Package Explorer”處按右鍵”Robocode”項目,選擇”Properties”(屬性),如所示:
圖3
在開啟的對話方塊中,我們在左邊選中”Java Build Path”,右邊選擇”Libraries”頁,單擊”Add External JARs…”按鈕,然後找到Robocode的安裝路徑(我機器上是C:/Program Files/robocode),選中”robocode.jar”,確定即可,如所示:
圖4
(4) 建立自己的機器人:一切具備,終於開始寫機器人的代碼了。我們在”Package Explorer”中找到”MyRobocode”項目中”com.loujing”包,單擊右鍵,選擇”New”-----選擇”File”,如所示:
圖5
在彈出的對話方塊中,我們輸入檔案名稱”AIRobot.java”(人工智慧機器人-----酷吧),如所示:
圖6
然後,我們在AIRobot.java中鍵入如下代碼:
package com.loujing;
import robocode.*; //匯入包
public class AIRobot extends Robot //繼承自Robot類
{
public void run() { //必須的方法,確定機器坦克的基本行為
while(true) {
turnGunRight(360); //右轉炮管360
}
}
public void onScannedRobot(ScannedRobotEvent e) { //當掃描到其它機器坦克時
ahead(100); //前進100
turnLeft(90); //機器坦克左轉90
}
}
是不是出乎意料的簡單,我們幾乎沒寫幾行代碼吧,一個基本的架構就好了。另外,在Eclipse裡,當您把滑鼠移到某個標識符上面時,會即時顯示Robocode的API協助,比如就顯示了onScannedRobot方法說明:
圖7
二、 Robocode的相關設定:
當我們把AIRobot.java編譯之後,AIRobot.class就產生了,下面我們來看看如何在Robocode裡調用到您的*.class檔案呢,您有兩種方法:
(1) 將產生的*.class的檔案複製到Robocode安裝路徑下的robots下,比如我會將AIRobot.class拷貝到C:/Program Files/robocode/robots下即可。
(2) 其實還有一種更簡單的方法,Robocode對Eclipse的支援很好,我們可以直接在Robocode裡設定好路徑。啟動Robocode,選擇”Option”菜單-----單擊” Preferences”,在開啟的對話方塊中選擇”Development Options”頁,把您之前建的Eclipse項目的路徑填入,單擊”Finish”按鈕即可(我剛才建的項目路徑是E:/mywork/Java/Exercise/Eclipse/MyRobocode),如所示:
圖8
另外,在”View Options”頁,有一個複選框” Visible Scan Arcs”,您可以把它選上,這樣,機器人掃描時就可以看到射線狀的雷達了,很酷啊。
三、測試自己的Robot:一切準備就緒了,現在我們來測試一下我們寫的那個弱智機器人吧。
啟動Robocode,選擇”Battle”菜單-----單擊”New”(建立一個戰鬥),開啟的對話方塊如所示:
圖9
在Packages列表中,我們看到所有的包,其中有我們之前建立的com.loujing包;在Robots列表中,會列出所有的機器人,其中也有我們建立的AIRobot。我們利用Add按鈕增加兩個AIRobot(當然您也可以多增加幾個機器人進去,如果您只選擇一個,系統會提示您不能戰鬥,您就只能觀察一個機器人的運動了),在Selected Robots列表中出現的就是您現在選擇參加戰鬥的機器人了。
Number of Rounds表明戰鬥的回合數,預設是10回合;當一切選好,我們單擊”Start Battle”按鈕,您就會看到如所示:
圖10
中間地區就是站場,下面的按鈕可以隨時暫停、恢複、停止比賽。您可以仔細觀察一下這兩個AIRobot,是不是如我們之前所寫,開始時先右轉炮管360度,而當掃描到另一個機器人的時候,就先往前走100,然後向左轉90度,所有的行動都是事先由您編程實現的。
現在,您可以修改一下原來的AIRobot.java了,比如在onScannedRobot方法裡增加一句” fire(1);”,意思顯而易見,當掃描到其它機器人的時候,就開火。
您可以到Robocode的安裝路徑下的robots檔案夾下,去開啟*.java檔案,看一下別人的機器人程式是怎麼寫的,或者去網上下載;如果對庫函數有疑問,您可以單擊Robocode程式的Help菜單,選擇”Robocode API”,或者直接雙擊安裝路徑下的javadoc/index.html開啟協助。您需要重點關心的是Robot類,看一下其中有哪些控制機器人的方法,以及該如何使用它們,如所示:
圖11
怎麼樣,您是不是也來了興趣了,也來建立自己的第一個機器人吧,如果您能夠在特定時刻讓機器人做出正確的反應,比如左右躲避、開火、遇牆回頭等等,那麼也算有人工智慧了吧,呵呵。
女友去海南了,今天早上4點回來,不知不覺都1點了,今天大年夜了啊。
2006-01-28 大年夜淩晨
樓競 http://www.loujing.com