我刚开始尝试使用Robocode并阅读wave:http://robowiki.net/wiki/Wave
我不明白的是,为什么在这里使用圈子。
我的意思是,当我射击一颗子弹时,我只会朝一个方向射击,而不是在使用圆圈时隐含的每个方向。
任何人都可以试着向我解释那种情况和那个概念吗?
我现在被困住了..
感谢, 儒略
答案 0 :(得分:2)
以上答案突出了为什么波浪是一个有用的抽象的要点:作为收集射击角度的优化,相对于直接射击敌人而击中目标。
波浪的另一种用途是子弹躲避动作。当你看到敌人发射子弹(通过监视其能量)时,你知道子弹的起源和速度,但不知道它的确切位置,因为你看不到子弹。在这种情况下,波形表示您对子弹的了解:所有可能的位置。如果你被击中,你可以同样推断出敌人使用的相对射击角度。之后,您可以使用该数据来评估每个波浪上不同点的危险,并确定与波浪相交的最安全的地方(又名“波浪冲浪”)。
答案 1 :(得分:1)
看起来wave方法意味着对一个天真实现的一些优化。
然后,基本概念是在射弹通过目标时确定时间点。这可以简单地通过比较'wave'从其原点(“wave_velocity * (time_now - time_fired)
”)到目标距离到该波的原点的距离来完成。
一旦两个距离变得相等(或者波通过目标),就可以计算从波的起点到目标的当前位置的方位,并将其与弹丸的方位进行比较。如果这两个轴承彼此足够接近,则目标被认为是“击中”;否则目标被错过,射弹可以被忽视以进行进一步的计算。 (假设目标不能比射弹移动得快。)
这方面的优化是,对于每个时间步,只需计算几个距离并进行比较,以确定是否需要执行实际的“命中检查”。这样,射弹不需要精确地追踪两个(或三个)维度,而只能在一个维度(距离)中进行追踪,这可能会节省大量的计算量。