rusk
покажи че у тебя в intr_circle2line
rusk
> cir_rr = (u.width*u.width + u.height*u.height)/2
там нужен квадратный корень
или функция math.hypot
а вообще формула странная. я просто брал width/2 но потом вернулся к OBB
понял, не странная.
я у себя уменьшил точку для прицеливания, чтоб не стрелять по углам.
def intr_line_2_circle(origin, direction, center, squaredRadius): diff = Vec2D(origin.x - center.x, origin.y - center.y) a0 = diff.squaredLength() - squaredRadius a1 = direction.dot(diff) discr = a1*a1 - a0 if discr < 0.0: return False return True
Решение квадратного уравнения. За основу взята:
template <typename Real> bool IntrLine2Circle2<Real>::Find (const Vector2<Real>& origin, const Vector2<Real>& direction, const Vector2<Real>& center, Real radius, int& rootCount, Real t[2]) { // Intersection of a the line P+t*D and the circle |X-C| = R. The line // direction is unit length. The t value is a root to the quadratic // equation: // 0 = |t*D+P-C|^2 - R^2 // = t^2 + 2*Dot(D,P-C)*t + |P-C|^2-R^2 // = t^2 + 2*a1*t + a0 // If two roots are returned, the order is T[0] < T[1]. Vector2<Real> diff = origin - center; Real a0 = diff.SquaredLength( ) - radius*radius; Real a1 = direction.Dot( diff); Real discr = a1*a1 - a0; if ( discr > Math<Real>::ZERO_TOLERANCE) { rootCount = 2; discr = Math<Real>::Sqrt( discr); t[0] = -a1 - discr; t[1] = -a1 + discr; } else if ( discr < -Math<Real>::ZERO_TOLERANCE) { rootCount = 0; } else // discr == 0 { rootCount = 1; t[0] = -a1; } return rootCount != 0; }
ud1
Пропустил : )
Спасибо!, мне бы точно не управиться самому.
Только не понял зачем файл class рядом с jar если в командной строке все равно запускается jar?
Пробую запустить. Пока не выходит. : |
PS: получилось стартануть ранер со своими стратегиями : ) ud1 мозг. Спасибо : )
Вот бы еще логинг результатов в файл прикрутить. Что-то если указать параметр -write-to-text-file=c:/f.txt бой не стартует а просто отключает игроков.
PPS: если добавть -write-to-text-file=f.txt, то после коннекта всех стратегий игра останавливается как завершенная с результатом 0:0:0:0:0:0
http://russianaicup.ru/game/view/224226
Вроде бы я не делал его таким умным =)) Некоторые бои действительно поражают (некоторые тупостью, а некоторые гениальностью). Это к слову, что у синих и зеленых не выгодная позиция.
rusk
Красный чувак забыл проверять танки на принадлежность своей команде. Таких грешно не победить. : )
Вот тут я из верхнего угла натянул двоих топовых игроков песочницы : )
http://russianaicup.ru/game/view/224922
я не понимаю, какая тут тактика :( вообще чистый рандом
Нашел как получать результаты боя. Параметр
-results-file=res.txt
ud1
Запуск несколько своих стратегий конечно мощь! спасибо!
Мне скорее всего уже не поможет, но все равно прикольно, попробую поиспользовать. А-то встроенные постоянно себя мочат, хоть и 5 штук тоже можно было выпустить.
собрал из батников песочницу. Которая стартует бои где среди 5 моих текущих стратегий играет одна модифицированная.
Результаты боев складываются в файл. Один бой длится 2 минуты. Выходит что через пару часов я смогу сказать удачно поправил стратегию или нет : )
модифицированная стратегия играет поочередно на всех местах чтобы стартовое место не влияло на исход теста.
через пару часов отпишусь о результатах : )
Megabyte-Ceercop
> Один бой длится 2 минуты. Выходит что через пару часов я смогу сказать удачно
> поправил стратегию или нет
Только если твоя поправка дала очень большой прирост, 50-100 пунктов. Иначе ты ничего не узнаешь по результатам 60-ти боёв.
Нужно объединиться и помогать лидерам проводить тестовые бои между разными стратегиями. Поставил на ночь, с утра сообщил результат.
Желательно в таком стиле:
Megabyte-Ceercop
Аналогичная мысля пришла в голову, тоже скорее всего сделаю вечерком.
Ну конечно так оцениваются улучшения только относительно твоей стратегии, не факт, что она станет играть лучше других. Но это всяко лучше, чем ждать несколько часов на оффициальных тестах.
entryway
Прирост не главное. Тут бы избежать изменений в коде которые резко топят рейтинг. : ) Бывает вроде цифру поправишь. А танк начинает реально тупить и мазать через раз. Это будет заметно сразу.
Первый мой тест - попробую увеличить зону отталкивания от стен. Чтобы более плавно огибал углы и не упирался при опасности. Хочу узнать что победит. Осторожность и максимальная дальность от центра. Или отсутствие столкновений со стенами.
Кажется, все таки решили проблему с победой игрока на 3 часа, теперь общий поворот танков вокруг центра случайный?
Ага, точно. Наверно многие стратегии, заточенные на определение начального положения, полетят в топку.
Тема в архиве.