在上一篇文章(Robocode入门)中我们已经和大家介绍了Robocode,我相信大家都觉得那中软件自带的那种机器人太没有战斗力了,这样才可以拥有自己编写的更具有战斗力的机器人呢?下面我将为大家解决这个问题。
战场是机器人之间进行战斗直至分出胜负的场地。主要的仿真引擎被置于其中,并且允许在这里创建战斗、保存战斗以及打开新建的或现有的战斗。通过界面区域内的控件,可以暂停或继续战斗、终止战斗、消灭任何机器人个体或获取任何机器人的统计数据。此外,我们可以在此屏幕上的Robot菜单打开 Editor,就是我们机器人的代码编辑器了!Robot Editor 是一个定制的文本编辑器,它可以用于编辑生成机器人的 Java 源文件。在它的菜单里集成了 Java 编译器(用于编译机器人代码)以及定制的 Robot 打包器。由 Robot Editor 创建并成功编译的所有机器人都会处于战场上一个部署就绪的位置。我们就是要在这里编写机器人了。
选择“File”->“New”->“Robot”来新建一个机器人。它会首先要你输入这个机器人的名字(注意名字首字母要大写),然后要你输入包的名字(就是保存这个机器人的文件夹名称),这样就生成了一个蠢蠢的机器人XForce的代码了,因为我们还没替它加上人工智能。现在单击菜单的Complie下的 Complie进行编译,保存好,我们的机器人已经生产出来了。现在关闭Editor,在进入New Battle,Pakeage下选择你刚才的包的名字,Robot下就有了我们新建的XForce机器人了,添加进去吧,然后选择多几个其他的机器人,开始战斗!
看!我们的XForce在战斗了!是否觉得它太蠢了点呢?来,继续来学习。Robocode 机器人是一个图形化的坦克,请注意,机器人有一门可以旋转的炮,炮上面的雷达也是可以旋转的。机器人坦克车(Vehicle)、炮(Gun)以及雷达(Radar)都可以单独旋转,也就是说,在任何时刻,机器人坦克车、炮以及雷达都可以转向不同的方向。缺省情况下,这些方向是一致的,都指向坦克车运动的方向。
附:Robot 命令
Robocode 机器人的命令集都收录在 Robocode API Javadoc 中。这些命令都是 robocode.Robot 类的公共方法。
(1)移动机器人、炮和雷达
移动机器人及其装备的基本命令
* turnRight(double degree) 和 turnLeft(double degree) 使机器人转过一个指定的角度。
* ahead(double distance) 和 back(double distance) 使机器人移动指定的像素点距离;这两个方法在机器人碰到墙或另外一个机器人时即告完成。
* turnGunRight(double degree) 和 turnGunLeft(double degree) 使炮可以独立于坦克车的方向转动。
* turnRadarRight(double degree) 和 turnRadarLeft(double degree) 使炮上面的雷达转动,转动的方向也独立于炮的方向(以及坦克车的方向)。
这些命令都是在执行完毕后才把控制权交还给程序。此外,转动坦克车的时候,除非通过调用下列方法分别指明炮(和雷达)的方向,否则炮(和雷达)的指向也将移动。
* setAdjustGunForRobotTurn(boolean flag):如果 flag 被设置成 true,那么坦克车转动时,炮保持原来的方向。
* setAdjustRadarForRobotTurn(boolean flag):如果 flag 被设置成 true,那么坦克车(和炮)转动时,雷达会保持原来的方向。
* setAdjustRadarForGunTurn(boolean flag):如果 flag 被设置成 true,那么炮转动时,雷达会保持原来的方向。而且,它执行的动作如同调用了 setAdjustRadarForRobotTurn(true)。
(2)获取关于机器人的信息
* getX() 和 getY() 可以捕捉到机器人当前的坐标。
* getHeading()、getGunHeading() 和 getRadarHeading() 可以得出坦克车、炮或雷达当前的方向,该方向是以角度表示的。
* getBattleFieldWidth() 和 getBattleFieldHeight() 可以得到当前这一回合的战场尺寸。
原文太长了,阅读全文:
http://develop.csai.cn/game/200710291120251063.htm
更多文章
http://develop.csai.cn/
有什么问题,可以去
http://bbs.csai.cn去提问,有问必答。