03.Robocode事件指令说明
在 Robocode 中,事件(Events)是机器人对外部环境变化的响应机制。以下是一些常见的 Robocode 事件及其说明:
e.getName()
: 获取扫描到的机器人的名字。e.getBearing()
: 获取扫描到的机器人相对于你的机器人的角度。e.getDistance()
: 获取扫描到的机器人与你的机器人之间的距离。e.getEnergy()
: 获取扫描到的机器人的能量值。e.getHeading()
: 获取扫描到的机器人的朝向角度。e.getVelocity()
: 获取扫描到的机器人的速度。e.getBearing()
: 获取子弹相对于你的机器人的角度。e.getPower()
: 获取子弹的能量(威力)。e.getName()
: 获取发射子弹的机器人的名字。e.getBearing()
: 获取撞墙时相对于你的机器人的角度。e.getBearing()
: 获取撞到的机器人相对于你的机器人的角度。e.getName()
: 获取撞到的机器人的名字。e.getEnergy()
: 获取撞到的机器人的能量值。e.getName()
: 获取被击中的机器人的名字。e.getEnergy()
: 获取被击中的机器人的能量值。e.getBullet().getPower()
: 获取子弹的能量(威力)。e.getBullet().getPower()
: 获取子弹的能量(威力)。e.getName()
: 获取摧毁你的机器人的名字。e.getName()
: 获取你的机器人的名字。e.getRound()
: 获取当前回合的编号。e.getTotalRounds()
: 获取总回合数。e.getResults()
: 获取比赛结果。e.getName()
: 获取被摧毁的机器人的名字。e.getStatus()
: 获取当前机器人的状态信息。e.getTime()
: 获取跳过的回合时间。e.getGraphics()
: 获取用于绘制的图形对象。e.getCondition()
: 获取触发事件的条件。e.getMessage()
: 获取接收到的消息内容。e.getSender()
: 获取发送消息的机器人名字。e.getKeyCode()
: 获取按下的键的代码。e.getKeyChar()
: 获取按下的键的字符。e.getKeyCode()
: 获取释放的键的代码。e.getKeyChar()
: 获取释放的键的字符。e.getX()
: 获取鼠标点击的 X 坐标。e.getY()
: 获取鼠标点击的 Y 坐标。e.getButton()
: 获取点击的鼠标按钮。e.getX()
: 获取鼠标的 X 坐标。e.getY()
: 获取鼠标的 Y 坐标。e.getX()
: 获取鼠标的 X 坐标。e.getY()
: 获取鼠标的 Y 坐标。e.getX()
: 获取鼠标的 X 坐标。e.getY()
: 获取鼠标的 Y 坐标。e.getButton()
: 获取按下的鼠标按钮。e.getX()
: 获取鼠标的 X 坐标。e.getY()
: 获取鼠标的 Y 坐标。e.getButton()
: 获取释放的鼠标按钮。e.getX()
: 获取鼠标的 X 坐标。e.getY()
: 获取鼠标的 Y 坐标。e.getX()
: 获取鼠标的 X 坐标。e.getY()
: 获取鼠标的 Y 坐标。e.getWheelRotation()
: 获取滚轮的滚动方向。g.drawLine()
: 绘制直线。g.drawRect()
: 绘制矩形。g.drawOval()
: 绘制椭圆。g.drawString()
: 绘制字符串。g.drawLine()
: 绘制直线。g.drawRect()
: 绘制矩形。g.drawOval()
: 绘制椭圆。g.drawString()
: 绘制字符串。e.getGraphics()
: 获取用于绘制的图形对象。g.drawLine()
: 绘制直线。g.drawRect()
: 绘制矩形。g.drawOval()
: 绘制椭圆。g.drawString()
: 绘制字符串。事件命令是当某事件发生时自动执行的命令。如当自己的雷达扫描到敌人时,会自动调用到onScannedRobot命令。
public void onScannedRobot(ScannedRobotEvent e){
System.out.println("发现敌人了");
}
上面这个命令是在我们的机器人的雷达扫描到敌人时自动被调用的。
在 Robocode 中,编写一个机器人使其走三角形的路径,可以通过控制机器人的移动和转向来实现。以下是一个简单的示例代码,机器人会按照三角形的路径移动:
import robocode.HitByBulletEvent; import robocode.HitWallEvent; import robocode.Robot; import robocode.ScannedRobotEvent; import java.awt.*; /** * 类描述: 机器人走三角形路径 * * @author fxr * @version 1.0.0 * @date 2025/2/18 9:02 */ public class TriangleBot extends Robot{ // 定义三角形的边长 private static final int SIDE_LENGTH = 100; // 定义三角形的角度(120度,因为三角形内角和为180度) private static final int TURN_ANGLE = 120; @Override public void run() { // 设置机器人颜色 setBodyColor(Color.blue); setGunColor(Color.red); setRadarColor(Color.green); // 无限循环,机器人会一直走三角形 while (true) { // 走三角形的三条边 for (int i = 0; i < 3; i++) { // 向前移动 ahead(SIDE_LENGTH); // 转向120度 turnRight(TURN_ANGLE); } } } @Override public void onScannedRobot(ScannedRobotEvent event) { // 如果扫描到其他机器人,开火 fire(1); } @Override public void onHitByBullet(HitByBulletEvent event) { // 如果被子弹击中,转向 turnRight(90); } @Override public void onHitWall(HitWallEvent event) { // 如果撞到墙,转向 turnRight(180); } }
你可以将这段代码复制到 Robocode 的机器人编辑器中,编译并运行,观察机器人的行为。