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