2013-03-23 4 views
1

Я только начал экспериментировать с RoboCode и читать о волнах: http://robowiki.net/wiki/Waveобъяснение волны

, что я не понимаю, почему круги используются здесь.

Я имею в виду, когда я стреляю в пулю, я снимаю ее только в одном направлении, а не во всех направлениях, как подразумевается при использовании круга.

Может ли кто-нибудь попытаться объяснить это обстоятельство и это понятие другими словами для меня?

Я просто застрял прямо сейчас ..

спасибо, Джулиан

ответ

1

Похоже, волновой подход понимается как некоторая оптимизация наивной реализации. Основная концепция заключалась бы в том, чтобы определить момент времени, когда снаряд передает цель. Это можно просто сделать, сравнивая расстояние, пройденное «волной» от его начала («wave_velocity * (time_now - time_fired)») до расстояния до цели до начала этой волны.

Как только два расстояния станут равными (или волна пройдет мишень), подшипник от начала волны до текущего местоположения цели может быть рассчитан и сравнен с подшипником снаряда. Если эти два подшипника достаточно близки друг к другу, цель считается «ударом»; в противном случае цель была упущена, и снарядом можно было пренебречь для дальнейших вычислений. (Предполагая, что цель не может двигаться быстрее, чем снаряд.)

Оптимизация в этом заключается в том, что для каждого временного шага нужно рассчитывать и сравнивать только пару расстояний, чтобы определить, требуется ли фактическая «проверка чека» выполняться. Таким образом, снаряды не должны прослеживаться ровно в двух (или трех) измерениях, но только на одном (расстоянии), что может сэкономить значительное количество вычислений.

+0

спасибо! но отображаемая волна всегда попадает в цель по мере ее расширения. какой основной факт я, кажется, пропустил здесь? – Julian

+0

Я думаю, что волны - это способ вычислить, какой угол стрельбы должен был быть_, чтобы поразить цель –

+0

ах .. Думаю, я понял это сейчас! благодаря! – Julian

2

Вышеупомянутые ответы касаются основных моментов того, почему волны являются полезной абстракцией: как оптимизация для сбора углов стрельбы, которые попали бы в цель, относительно стрельбы непосредственно противнику.

Другое использование волн в пулевых уклонениях. Когда вы видите, как враг стреляет пулей (контролируя ее энергию), вы знаете происхождение и скорость пули, но не точное местоположение, так как вы не видите пули. В этом случае волна представляет то, что вы знаете о пуле: все возможные места. Если вы получаете удар, вы можете аналогичным образом определить относительный угол стрельбы, используемый противником. Позже вы можете использовать эти данные для оценки опасности различных точек на каждой волне и решить, какое безопасное место пересечь волну (например, «Волновой серфинг»).

+0

Отлично! Спасибо за ваш ответ! Я уже много читал о стратегиях Robocode! :) – Julian

Смежные вопросы