【问题标题】:onScannedRobot method not being called in Robocode在 Robocode 中未调用 onScannedRobot 方法
【发布时间】:2016-11-28 01:30:54
【问题描述】:

我正在 Robocode 中创建一个简单的机器人。我有一个功能 walls 如下所示:

public void walls() {
        see = false;
        wallBool = true;
        double maxMove = Math.max(getBattleFieldWidth(), getBattleFieldHeight());
        turnLeft(getHeading() % 90);
        ahead(maxMove);

        see = true;
        turnRight(90);
        turnGunRight((getHeading() - getGunHeading())+ 90);

        while (getEnergy() <= 115) {
            wallBool = true;
            see = true;
            ahead(maxMove);
            see = false;
            turnRight(90);
        }
    }

请注意,seewallBool 是在我的代码前面已经声明过的变量。在函数内的 while 循环中,我调用了 turnRight(); 方法,它应该会自动扫描其他机器人。但是,我的代码没有在我的 onScannedRobot 函数中运行,包括在下面:

public void onScannedRobot(ScannedRobotEvent e) {
    System.out.println("check");
    if (see==true) {
        System.out.println("check2");
        scan();
    }

    if (wallBool==true) {
        fire(2);
    }

检查永远不会打印到控制台。怎么了?

任何帮助将不胜感激...

【问题讨论】:

  • 如果您收到扫描事件,我建议您将代码简化为仅旋转雷达并打印。然后重建到你在这里拥有的东西。
  • 另外,如果您尝试对扫描的机器人进行射击,请使用ScannedRobotEvent 进行射击。示例机器人的源代码是一个很好的起点。

标签: java robocode


【解决方案1】:

请确保您已将import robocode.ScannedRobotEvent; 放入导入中。同时将public void onScannedRobot(ScannedRobotEvent e) 保留在public void run() 函数下方,以防您更改订单。

【讨论】:

  • 在对象中声明函数的顺序在 Java 中并不重要。
猜你喜欢
  • 1970-01-01
  • 2016-01-16
  • 1970-01-01
  • 1970-01-01
  • 2019-03-21
  • 2020-10-02
  • 1970-01-01
  • 2014-05-06
  • 2015-06-18
相关资源
最近更新 更多