Вчера началось интересное соревнование по программированию - AI Challenge, в этом году написанным игроками ботам предстоит играть в Ants.
Участникам соревнования предстоит реализовать алгоритм, который будет руководить колонией муравьев. На симметричной карте, состоящей из земли и воды (препятствия), каждому боту будут выделены один или несколько муравейников — места, в которых рождаются новые муравьи. Целью игры является захват и уничтожение муравейников противников при этом сохранение и защита своих. За уничтожение чужих муравейников начисляются очки, а за сдачу своего очки вычитаются.
и все равно массовый навал на муравейники противника хорошая стратегия. посмотри игры топового игрока в рейтинге. если он доработает защиту - то будет полный пэ а так проигрывает только в одном случае, если он толпой ломится давить муравейник, а он забит мурашами-хозяевами. они не могут сдвинутся, но и атакующие бестолку толпятся на расстоянии. в это время третий игрок благополучно берет базу топового игрока, так как там нет мурашей - они все бегут после рождения блокировать тот муравейник
проигрывает только в одном случае, если он толпой ломится давить муравейник, а он забит мурашами-хозяевами. они не могут сдвинутся, но и атакующие бестолку толпятся на расстоянии. в это время третий игрок благополучно берет базу топового игрока, так как там нет мурашей - они все бегут после рождения блокировать тот муравейник
1 амного появляется ?
2 . пусть сидят дома пока не вернутся атакующие
__________________ Никого нельзя ничему научить,
но всему можно научиться
народная мудрость
"Если любишь в жизни риск - форматируй жесткий диск!"
SeregaZ, Спасибо за разъяснения с подключением php, других языков в принципе незнаю. Очень заинтересовался данным проектом, т.к. еще в детстве на "спектруме" писал алгоритмы для таких игр. Есть своя очень интересная стратегия, попробую реализовать. Для начала пытаюсь разобраться, какими коммандами из файла ants.php можно пользоваться.
issueOrder($aRow, $aCol, $direction) каманда на движение муравья в точке $aRow, $aCol по направлению $direction = ('n','e','s','w') passable($nRow, $nCol) - проверка на препятствие(воды). unoccupied($row, $col) - проверка на незанятость (в клетке земля, труп или еда) destination($row, $col, $direction) - возвращает область видимости муровья в виде массива клеток. Зачем здесь направление $direction ? distance($row1, $col1, $row2, $col2) - дистанция от одной точки до другой (как я понимаю учитано что поле замкнуто циклично) direction($row1, $col1, $row2, $col2) - 2 направления для достижения 2й точки. (актуально для того что поле замкнуто циклично, и бывает лучше пройти сквозь стенку)
Массивы: AIM - направления 'n','e','s','w' RIGHT - Следующее направление при движении по часовой стрелке LEFT - аналогино пред. BEHIND - разворот на 180гр.
Если есть свои простые функции, просьба делиться, это очень удобно
Вопросы:
Я лишь двигаю муровьями? или нужно давать еще команды сьесть, напасть? Если нет таких команд, в какой последовательности идет определение, ем я или воюю
Для чего массивы $myAnts, $enemyAnts, $deadAnts, $food - это я так понимаю все что видять все мои мураши?
Как найти муравейник свой, чужой. Где их данные
Последний раз редактировалось Павел Плутахин, 28.10.2011 в 11:02.
движения мураша достаточно. съедание происходит автоматически, как только муравейка встал рядом с едой. аналогично происходит с убийством другого мураша. увидел чужого, или сваливаешь, или атакуешь, просто бежишь на него. умирают вроде как оба при этом...
муравейник искать только бродя по карте, пока хоть один из твоих мурашей не засекет муравейник. тогда координаты становятся известны "системе", и уже можно что-то думать - атаковать, или заблочить, или еще чо-то
массивы эти видимо содержут в себе данные о твоих мурашах, о увиденных мурашах противника (я не думаю что там инфа обо всех мурашах противника, иначе смысл от "тумана войны", ограниченного зрением муравейки), $deadAnts этот массив видимо служит для "вычитания" мертвых из массива живых, дабы система не продолжала слать команды мертвому мурашу. или может это остаток кода, от отброшенного функционала по отображению мертвых тел муравьев.
$food ну тут все понятно. массив еды знать бы еще - там видно всю еду, или только ту, что в пределах видимости муравьев? если предположить что видно всю еду, а с учетом того, что еда "рожается" симметрично, то сравнивая координаты еды с координатами своего муравейника - можно вычислить координаты чужого муравейника
Павел Плутахин, вообще то от сервера приходит команда
Код:
h row col owner # муравейник строка столбец владелец
и это расписано в спецификации игры на офф сайте и её переводе по первой ссылке на хабр из первого поста этой темы...
правда стандартные боты и заготовки для ботов на разных языках писались когда муравейников ещё не было, так что их "движки" эту команду игнорируют
__________________
Я здесь практически не появляюсь!, Skype - ikskor
читал. только меня смутил тот лог файл, что создается во временной папке. он правда по сути для третьего лица, который все видит - тем не менее там список еды, которая уже была на момент старта игры, в самом начале, и у них там появление на 0 ходе. вот я и подумал, что этот начальный список координат доступен сразу полностью, а не только в пределах видимости. в пользу этого еще говорит наблюдение за играми, когда муравей, практически после старта - осмысленно бежит за едой далеко за пределами своей видимости.