- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我编写了一个相对简单的AdvancedRobot
,它转动雷达并记录所有敌人的速度。最终,我注意到机器人在不应该错过的情况下却错过了。我从 Robocode/Graphical Debugging wiki 复制了代码并进行了测试。这是代码(Wiki 目前已关闭):
// The coordinates of the last scanned robot
int scannedX = Integer.MIN_VALUE;
int scannedY = Integer.MIN_VALUE;
// Called when we have scanned a robot
public void onScannedRobot(ScannedRobotEvent e) {
// Calculate the angle to the scanned robot
double angle = Math.toRadians((getHeading() + e.getBearing()) % 360);
// Calculate the coordinates of the robot
scannedX = (int)(getX() + Math.sin(angle) * e.getDistance());
scannedY = (int)(getY() + Math.cos(angle) * e.getDistance());
}
以及事件处理程序:
// Paint a transparent square on top of the last scanned robot
public void onPaint(Graphics2D g) {
// Set the paint color to a red half transparent color
g.setColor(new Color(0xff, 0x00, 0x00, 0x80));
// Draw a line from our robot to the scanned robot
g.drawLine(scannedX, scannedY, (int)getX(), (int)getY());
// Draw a filled square on top of the scanned robot that covers it
g.fillRect(scannedX - 20, scannedY - 20, 40, 40);
}
“实心方 block ”绝对不在机器人的顶部。下面显示了一些屏幕截图。看起来精度取决于距离,但我不确定。这是预期的结果,还是我做错了什么?
最佳答案
发生这种情况的一个原因是 onScannedRobot 事件的传递被延迟到 higher priority事件已完成处理。特别是,如果优先级较高的事件处理程序执行旋转 body 的命令,则该命令将在调用 onScannedRobot 之前执行,从而导致时间提前、机器人移动以及机器人的航向发生改变。
由于延迟事件传递会导致各种问题,因此我建议永远不要在事件处理程序中执行命令。相反,事件处理程序应该简单地检查、思考并将信息存储在字段中,以便主循环使用react。这使得主循环能够在执行一系列操作之前查看所有可用信息,并根据收到的全部信息智能地选择最合适的操作。例如,它可以结合前方的机器人撞击事件以及对从后方接近的对手的雷达检测,并确定侧向躲避比通常的后方躲避更有希望......
关于java - Robocode:onScannedRobot 的精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61031205/
我试图在 Robocode 中实现单例模式。但不幸的是,当新一轮开始时,每次都会创建一个新对象(单例)。 你知道 Robocode 中是否可以使用单例模式吗?如果没有,你能解释一下为什么吗? 最佳答案
我想我也许可以通过从回合数中减去死亡人数来计算获胜回合的值(value),但我的计数器没有增加: public void onRoundEnded(RoundEndedEvent event) {
谁能给我解释一下这段代码吗?我不明白循环中的条件 while 和“预测的 X”。为什么predicted_X getBattleFieldWidth() - 18.0 ||
有谁知道如何在 Robocode 中围绕某个点按照斐波那契模式进行螺旋运动?我有 setTurnRight (double)、setAhead (double)、getX () 和 getY () 等
我编写了一个相对简单的AdvancedRobot,它转动雷达并记录所有敌人的速度。最终,我注意到机器人在不应该错过的情况下却错过了。我从 Robocode/Graphical Debugging wi
我已经安装了最新的 Java 版本,然后尝试从终端和 sourceforge 安装 Robocode,但在第一种情况下我收到错误: java.lang.ClassNotFoundExceptio
我正在尝试向控制台写入任何内容,但没有成功。 System.out.println("abc"); 应该可以,但事实并非如此。这是我的整个代码: import robocode.HitWallEven
目前在 RObocode 中,我有一个哈希表,其中名称作为键,point2D 对象作为值。这些对象的属性之一是 double 的lastSeen,它是自机器人被看到以来的时间。每次我扫描机器人时,我都
我是来问Robocode机器人的。我有一个机器人代码,与我的 26 个 friend 相比,它排在第 11 位。但是,我想尝试让它变得更好。我查看了网站并调整了我的代码,以便它可以不可预测地移动。这帮
我从 robocode 网站查看了 JGAP 包,在尝试设置它时遇到了问题。似乎所讨论的某些文件实际上并未在下载中。例如,网站上的行显示:- "MyRobot that resides in subd
我在尝试运行 Robocode.bat 时遇到以下错误 错误:无法找到或加载主类 robocode.robocode java Installation我查了一下,我在java网站查了一下,安装没问题
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 6 年前。
基本上,我试图在 Robocode 中生成一个日志文件,但我遇到了问题,因为您不能在 Robocode 中使用 try/catch(据我所知)。我做了以下事情: public void onBattl
我开始使用 Eclipse 编写 robocode。但是每当我从 eclipse 运行程序时就会出现错误, 错误:在类 robo_first.robo_new 中找不到 Main 方法,请将 main
我的项目根目录中有编程游戏“Robocode”,因此我可以在任何地方运行该项目,而无需将其安装在 C:/robocode 中。我有一个带有以下选项的运行配置; 主类: robocode.Robocod
我有一个类(class)作业,要使用 Drools 作为推理机来创建机器人。然而,我的大多数规则都表现得很奇怪,因为它们不会为该类而触发,而是为其父类(super class)而触发。像这样的事情:
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我正在编写 Robocode,现在我有一个编码问题: 我定义了类Enemy来存储敌人信息(例如航向、方位、速度等),在这个类中我还定义了一个名为direction的私有(private)属性。然后我使
我在 Robocode 中构建了一个机器人,我希望它具有自定义颜色,更具体地说是使用 RGBA。 这可能吗? 我尝试过: setBodyColor(Color.fromArgb(150, 0, 150
我是一名优秀的程序员,十分优秀!