Добро пожаловать в Code Bots 2!
Вы усвоили свой урок со времени последних ботов. Вы пытались найти больше способов разместить больше действий в меньшем количестве строк, и теперь у вас наконец есть это. Вы собираетесь создать управляемый событиями Code Bot.
Ваш бот должен состоять из 24 строк. Каждая строка соответствует одному из двух форматов:
Condition:Action
или же
Action
У вашего бота также достаточно памяти для хранения 5 целых чисел, названных A
через E
. Целое число может хранить значения от 0 до 23.
Каждый ход вы будете выполнять линию C
, если не выполняется одно из условий. Если это так, то C
будет содержать номер строки условия, которая является истинной, и тогда эта строка будет выполнена. В конце каждого хода C
будет увеличиваться.
Есть доступные условия:
Start
верно только на первом повороте. Вы должны иметь это в своем коде ровно один разBotAt(N)
истина, если в месте, указанном N, есть ботEquals(A,B)
истинно, если A равно B. Они могут быть разных типов, если так, они не будут равны.Modified(A)
Значение true, еслиA
было скопировано во время последнего хода.A
должно быть именем переменной, строкой или условиемAny(C1,C2,...)
верно, если выполняется любое из условийNone(C1,C2,...)
верно, если ни одно из условий не выполняетсяAll(C1,C2,...)
верно, если все условия выполняютсяNot(C)
верно, если C ложно.C
должно быть условие.
Переменные могут быть в одном из следующих форматов. Первые 9 являются числовыми и могут использоваться для любого случая, когда N используется на этой странице.
A
,B
,C
,D
,E
- Число от 0 до 23
This
вернет номер строки, в которой он находится в данный моментAdd(N1,N2,...)
вернет сумму всех значенийSub(N1,N2)
вернет N1 минус N2Mult(N1,N2,...)
вернет произведение всех значенийDiv(N1,N2)
вернет N1, деленное на N2Mod(N1,N2)
вернет N1 мод N2OVar(N)
примет имя переменной и вернет переменную противникаLine(N)
вернет N-ую строку в вашем кодеType(N)
вернет N-й тип строки в вашем коде (типы - это имена действий)Cond(N)
вернет условие на N-й строкеCondType(N)
вернет тип условия в N-й строке (типы - это имена условий)OLine(N)
вернет N-ую строку в коде вашего оппонентаOType(N)
вернет N-й тип строки в коде вашего оппонентаOCond(N)
вернет условие на N-й строкеOCondType(N)
вернет тип условия в N-й строке
A
и B
предназначены для вашего личного использования, C
используются для определения того, какую строку выполнять в вашем коде, и D
используются в качестве направления. Каждое значение D
относится к разным квадратам и парам направлений. E
выдает случайное значение каждый раз. D
и E
будет инициализирован случайным значением, в противном случае 0
.
Используемое направление будет [North,East,South,West][D%4]
. Ваш противник - бот в непосредственной близости от этого поля.
Вам доступны 4 действия:
Move
переместит вас на 1 клетку вперед вD
направлении th Если там есть бот, вы не будете двигаться.Copy(A,B)
скопирует переменнуюA
вB
.B
не может быть числовым значением, кроме имени переменной.A
иB
не может быть разных типов. Копирование строки не копирует условие.Flag
ничего не делает. Бот с наибольшим количеством флагов в вашем коде получит очко. Бот с наибольшим количеством очков выигрывает.If(C,L1,L2)
выполнит строку,L1
еслиC
true, иначе выполняетL2
.C
является условием, иL1
иL2
должно быть строки.
Большая картина
50 копий каждого бота будут размещены в мире. Ваша цель - собрать как можно больше ботов. За каждого бота, который имеет больше вашего типа флага, чем любой другой тип флага, вы получаете очко.
Боты будут размещены следующим образом:
B...B...B...B...
..B...B...B...B.
B...B...B...B...
Будет проведено 10 игр, и очки будут усреднены по всем играм, определяя, кто является победителем.
Примечания стороны
Если применимо несколько условий, то Start
будет выполнено то, которое следует немедленно
Боты будут плотно упакованы, но вы не начнете соседствовать с другим ботом. (Технически это будет тот же формат, что и последние CodeBots)
Поскольку этот вызов не был размещен в «песочнице» (чтобы никто не получил преимущества), я оставляю за собой право изменить мелкие детали для справедливости или дополнительных возможностей. Также, если есть ошибка в бегуне CodeBots, я ее исправлю, даже если бот зависел от этой ошибки для ее успеха. Я стараюсь быть максимально справедливым .
Рекурсивные If
операторы не будут выполняться
Если ваш бот короче 24 строк, остальные строки будут заполнены Flag
Помните, когда копируете на свой C
, это C
увеличивается в конце вашего хода.
Интерпретатор CodeBots можно найти здесь . Он включает в себя файл .jar для легкого выполнения. Просто добавьте своего бота в папку с ботами
множество
- 893,9 Борг
- 1.3 LazyLioness
- 0,9 Защитник
- 0.5 Flagger
- 0.4 CliqueBot
- 0,4 Коварный
- 0.3 Атакующий
- 0,3 Гард
- 0.3 SingleTarget
- 0.2 FreezeBot
- 0,2 Страж
- 0,2 Драйвби
- 0.0 AntiInsidious
- 0.0 MoveBot
- 0.0 CliqueBorg
- 0.0 калькулятор
- 0.0 TestBot
- 0.0 подражатель
ОБНОВИТЬ
Строки кода теперь поворачиваются при просмотре кода вашего оппонента. Это означает, что линия 1 вашего оппонента может быть линией 14 (или любой другой линией). Бот будет иметь фиксированное смещение, которое будет смещать его линии по X
количеству при просмотре противником . C
Переменная противника также будет смещена на ту же X
сумму. X
не изменится в одной и той же игре, но изменится от игры к игре.