Обновить
14

Химик и программист.

32
Подписчики
Отправить сообщение
1) Так какая версия Дельфи подходит? Я так и не получил ответа!

2)
Все действия стратегии описаны в пункте 2.6 Управление (страницы 12-13).

Читаю:
CLEAR_AND_SELECT. Стандартное выделение дружественных юнитов рамкой
Для такого выделения надо знать координаты каждого унита. Как мне их узнавать? А иное выделение возможно? (по номеру юнита)

3) что у Вас значит «ALLY»?
Реально полезная функция там — initializeTick. Она каждый тик актуализирует массив vehicleById, в котором хранится полная информация обо всех юнитах.
Это одномерный массив-вектор? А какой интервал индекса этого массива? От нуля до? Он не сортирован? Все юниты (танки, вертолеты и т.д.) вперемешку? Если юнит гибнет из vehicleById он убирается?
Кажется в паскале есть нечто подобное — SET.


Да:

type Ownership=(ANY, ALLY, ENEMY);
TSet = set of Ownership;

var i : Ownership; aSet : TSet;
begin
 aSet := [ALLY, ENEMY];
 for i:= ANY to ENEMY do
  if i in aSet then
    writeln (ord(i));


Это то самое?

На самом деле переводить этот код на свой язык не имеет большого смысла
Понятно, что практического смысла нет. Но как еще понять принципы организации элементарных действий, если в мануале об этом не сказано?
Меня на 3 курсе нанимали лаборантом в геологическую партию исследовать собранные образцы на очень древнем приборе:
Первой моделью отечественного спектрофотометра, выпущенного в 1952 году, явился однолучевой нерегистрирующий спектрофотометр СФ-4.

А для приготовления пищи поварих из местных нанимали. Еда — самое важное. Такое студенту никак нельзя доверять!
enum — это перечисление, специальный класс, здесь класс Ownership, принадлежность. ANY, ALLY, ENEMY — его объекты, не функции.


В-о-о-о-т мы и уперлись в различные трактовки ООП в разных языках.
Согласно википедии:

Класс — абстрактный тип данных в объектно-ориентированном программировании, задающий общее поведение для группы объектов; модель объекта.


Объект — это экземпляр класса. А Вы говорите, что в классе enum уже есть объекты (ANY, ALLY, ENEMY). Это с ходу не понять.

Если другой класс имеет поле класса Ownership, его значением может быть только один из указанных здесь объектов.


Если я правильно понял это скалярный тип Виртовского Паскаля:

type Ownership=(ANY, ALLY, ENEMY);


По поводу коллекций — откройте стартовый пакет в Вашей IDE. Возможно, нужная функция возвращает массив, список, или другую структуру, которая есть в Вашем языке, и которую можно обойти циклом.


Вот видите как все не просто и неоднозначно! Одним из лучших классических мануалов когда-то считался Macintosh Inside. Он был двуязычный Паскаль и Си. Там удалось предусмотреть все несовпадения этих языков. А в нашем случае ребус.
Вы имеете в виду каждый из танков направить по своим координатам?
Это плохая идея в данном случае.

Почему плохая идея? Со стратегической точки зрения рассосредоточить танки м.б. оправдано, особенно после введения атомного удара.

move.Right := {X2};


Тут скобки случайно? На Паскале {X2} — комментарий.

То есть перед отправкой надо ещё проверить свободна ли дорога.
А как это сделать? По циклу задавать приращение пути на 1 и смотреть нет ли там юнитов? И каждый шаг — это тик?

Если эти юниты расположены в прямоугольнике с углами
А если я не знаю, координат моих танков? Могу я их по номерам или по id вызвать?
Для каждого элемента коллекции
Большое спасибо за Ваше желание помочь! Я слышал, что в Яве есть коллекции, но в Дельфи-7 их в таком виде нет.И как переводить?

Мне писали, что за пару часов возможно перевести. Предположим, что всего участников будет 1000, а из них на Яве 200, т.о. 800 будут переводить и каждый потратит 2 часа, получим 1600 часов. А если организаторы переведут на 9 языков, то потратят всего 18 часов.

5) Действие стратегии
Тут совсем непонятно.

private enum Ownership {
ANY,


ANY — это вызов функции? В Яве запятая м.б. разделителем меду операторами?

А enum что значит?
Если бы вы внимательно прочитали мой комментарий, то поняли, где можно посмотреть версию компилятора.

Wow! Ребусы продолжаются!
Вы написали:
При локальном тестировании вы можете использовать любой компилятор, но мы можем гарантировать правильную работу только с версией, указанной в разделе сайта «Языковые пакеты».


Смотрим, что написано в разделе сайта «Языковые пакеты»:
Pascal Free Pascal 3.0+ [Delphi mode]


А Delphi mode какой версии?

Если бы вы внимательно читали правила, то сейчас не спрашивали у меня страницу.
Ну тупой я! Ну подскажите!

Для чтения приведённых вами участков кода достаточно иметь базовые навыки программирования, а также знать английский, вот и всё.
Что все?

ANY,
ALLY,
ENEMY


Переводчик гугл переводит:

ЛЮБЫЕ,
ЭЛЛИ,
ВРАГ


И как такое знание английского поможет перевести на Pascal? ;)
BTW А что значит ALLY? Гугл предлагает: союзник, помощник, пособник, но и
мраморный шарик.

И еще мне интересно: это конкурс на создание ИИ-стратегии или на знание языков (английского, явы)?
Ok. Если у Вас нет проблем, то надеюсь Вас не затруднит написать мне строчку кода на Дельфи-7, которая выделит 10 танков и каждый пошлет по указанным координатам: (х1, у1), ..., (х10, у10). Заранее премного благодарен!
Спасибо. Нечто «Качается вместе с Local runner и находится в папке plugins» — А как зовут это нечто?

Нужно поправить код,


Как? — Я не знаю Явы.

перекомпилировать его


Как?
Мы не обнаружили проблем с компиляцией пакета на Pascal.
Как интересно! Два пользователя обнаружили, а Вы — нет! Под каким Pascal Вы компилировали?

Код на Java не имеет сложных конструкций и макросов, похож на другие популярные языки и поэтому легко читается всеми программистами.


А я вот Явы совсем не знаю и мне это на Pascal перевести сложно:
for (VehicleUpdate vehicleUpdate : world.getVehicleUpdates()) {
long vehicleId = vehicleUpdate.getId();

И это:
double x = streamVehicles(
Ownership.ALLY, vehicleType
).mapToDouble(Vehicle::getX).average().orElse(Double.NaN);

NaN — это Not-a-Number? А почему это как метод? В Pascal такого метода нет.

stream = stream.filter(vehicle -> vehicle.getPlayerId() == me.getId());
В D-7 есть разные stream, но как тут перевести?
А это как переводить — совсем непонятно:
private enum Ownership {
ANY,

ALLY,

ENEMY
}
}


В мануале довольно подробно описаны возможные действия стратегии.
Где? Укажите страницу, pls!

В любом случае, наше соревнование рассчитано на длительное участие, а сколько времени на него выделять, это уже ваше решение.
Т.е. если не знаю Яву, нужно как минимум времени, чтобы выучить Яву?
Именно поэтому вместе с утилитой Local runner распространяется также и специальный плагин для отображения любой нужной вам информации поверх имеющейся картинки.
Как зовут этот плагин? Как его подключать? Где про него написано?
Все виды техники имеют своё схематичное изображение.
В Local runner виды техники обозначены маленькими кружками разного цвета. Но какой цвет какому виду соответствует — остается только гадать!
есть также неофициальный рендерер, разработанный в сообществе участников AI Cup.
А ссылку можно,pls?
Тем, кто хорошо научился, управлять тупой кучей

Я бы сказал: тем, кому удалось догадаться, что имел в виду автор мануала. И да, Вы правы — есть почти месяц, чтобы догадаться.

В любом случае возникает вопрос: управлять тупой кучей — это ИИ?
Тайна = мировой заговор марсиан?
Есть способ специально и нарочно отвечать невпопад… Я, наверное, тупой, поэтому мне показалось, что смысла этой и других цитированных статей уважаемого автора мне не понять, как и его ответов на мои примитивные вопросы. Что поделать — не всем дано понимание Системной Инженерии :(
Полностью согласен!
Как можем видеть, здесь эта идея вниманием завладела. И, судя по комментариям, здесь и школьники присутствуют. Но хороший лектор может и на дутой идее завладеть вниманием — на то он и хороший лектор.

А если серьезно — то нужно быть честным, особенно в школе! Нужно не завлекать, а честно показывать, каких жертв потребуют данные специальности.

К примеру, в начале 1960-х гг. в СССР партия решила, что геологов не хватает. Стали в молодежной среде романтику разводить — красивые песенки по радио давать, типа «геолог — ты ветру и солнцу брат». На геологический, в «керосинку» (нефть) и т.д. народ повалил рекой, а после практики первого курса, когда выяснялось, что геология — это гороховый суп с тушенкой и вермишелью, не комфортные условия в ненаселенке с дикими волками и прочими медведями, мокрыми рюкзаками, комарами и мошкой, народ разбегался.
С точки зрения математики очень странное противопоставление понятий: множество, объект, система. В математике могу сказать «множество объектов», «множество систем линейных уравнений» и т.д., и ни один математик меня не осудит.
PS Also Local runner:

4) См.:

Прикольно было бы легенду выводить со значками/цветами. Хотя наверное и к этому можно привыкнуть.


5) См.:
ОБЯЗАТЕЛЬНО! Нужна легенда: цвет танка, вертолета и т.д. игрока и противника и у каждого число — сколько осталось.


6) См.:
А цифры потерь можно сделать более крупным шрифтом? Трудно следить за боем когда на цифру елочка накладывается. Было бы лучше сделать отдельно информационное окошко и легенду там дать — какого цвета какие юниты и сколько их осталось.
1) См.:
«У вас косяк в пакете под паскаль в FacilityControl.pas Ругается на эту строчку constructor TFacility.Create(const facility: TFacility); overload; Я в принципе локально у себя поправил. Ранер успешно запускается и конектится к эмулятору, но не уверен будет ли работать оно у вас»

У меня та же штука в D-7. Стер Overload -работает. Но это не по правилам — править можно только свою стратегию.


2) См.:
“Теперь напишем более сложный код”. Этот 2й пример только на Яве :( ИМХО в руководстве он должен быть переведен на все поддерживаемые языковые пакеты, иначе они будут в неравных условиях


3) См.:
Как вообще на Паскале выделить 10 юнитов, нпр., танков и послать их в точку с заданными координатами? Пробовал по разному — не работает. Может баг? А можно 10 танков послать в 10 разных точек за 1 тик? Мануалу явно не хватает примеров таких элементарных действий. Описание API слишком формальное, много второстепенных методов и добраться до основных за ограниченное время представляется проблематичным.

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность