解剖学-打造自己的智能机器人
作者:天翼.李 robocode@etang.com
想把Robocode介绍给大家的想法由来已久,一直没时间,是啊,这么好的一个东西,我们怎么能错过呢?本系列的文章都由:Robocode 中华联盟()提供全面的技术支持。Robocode 解剖图
Robocode 解剖图1每一台机器人都由三个可活动部件组成车身(Body) - 可以前进/后退,左右旋转.炮塔(Gun) - 安装在车身之上,可左右旋转,发射子弹.雷达(Radar) - 安装在炮塔之上,可左右旋转,当发现其他机器人时就会触发事件.下面我们再结合机器人的车身,炮塔,雷达的旋转方向及相关的API函数来看看更清晰的图像。
Robocode 解剖图2
我的第一个机器人
好了,了解了这么多内容,也该动动手的时候了。从现在开始我们将从最基本的java编程开始一步一步打造我们自己的智能机器人。一步步掌握Robocode的精华。由于引系列只是个引子,其中讲到的java术语并不会全部说明,大家可找找相关的资料看看再回来学习。
package wind;import robocode.*;
public class MyFirstRobot extends Robot{
public void run() {
while (true) {
ahead(100);
turnGunRight(360);
back(100);
turnGunRight(360);
}
}
public void onScannedRobot(ScannedRobotEvent e) {
fire(2);
}
}
上面就是Robocode中最基本的代码了,
package wind;import robocode.*;
public class MyFirstRobot extends Robot{
public void run() {
}
}
import robocode.*;
告诉java你要引入robocode下的所有类public class MyFirstRobot extends Robot告诉java我要的机器人类是继承直Robot这个对象,机器人名字为MyFirstRobotpublic void run() { }Robocode中公共接口函数,用来激活机器人线程 首先我们引入run()方法
while (true) {
ahead(100);
turnGunRight(360);
back(100);
turnGunRight(360);
}
while(true) { } 当条件成立时,处理{}内的事件. 这个循环内可让我们的机器为不断前进/后退,旋转,开火等等处理!ahead(100),调用ahead(100)调用前进的方法,让机器人前进100的距离turnGunRight(360)旋转炮塔360度back(100)后退100的距离 当你的机器人扫描到别的机器人时,就触发onSacnnedRobot事件,在此事件中加入一点的方法,你就可进行相应的处理。Fire(1),是发射一颗能量为1的子弹。
public void onScannedRobot(ScannedRobotEvent e) {
fire(1);
}
好了,在开发工具中编译你的机器人代码,就可把它放到战场中去实践了。