блин, это действительно 4-й? Для всех вас, пожилых людей, основная проблема та же, но мы используем Java вместо собственного языка. Вот последние три проблемы CodeBot , если вы заинтересованы.
Цель CodeBots - сделать вашего бота максимально вирусным . Каждый бот несет флаг, и вам нужно убедиться, что ваш флаг есть везде .
API
Боты будут следовать стандартному «протоколу», и боты будут синхронно выполнять следующие шаги:
IPAddress selectMessageRecipient()
позволяет боту выбирать, кому он хочет отправить «дружеское» сообщение.Message sendMessage()
позволяет боту выбирать содержимое сообщения, которое он отправит.processMessage(IPAddress, Message)
вызывается для каждого сообщения, которое получает бот.FunctionType selectFunctionToBlock()
блокирует функцию от перезаписи для текущего хода. Смотрите шаг 7.IPAddress selectAttackTarget()
позволяет боту выбирать, кого он хочет DDOS. DDOS-атака считается успешной, если на одного бота одновременно нацелены 3 бота. Если атака успешна, то каждый из атакующих может выполнить шаги 6 и 7.readData(ReadonlyBot)
позволяет боту читать данные, хранящиеся на уязвимом боте.FunctionType selectFunctionToReplace()
это суть этой проблемы . Вам разрешено выбрать 1 функцию (из 8 перечисленных здесь), чтобы скопировать их с вашего бота на их бота. Тогда ваша функция будет вызываться вместо их . Если несколько ботов выбирают одну и ту же функцию, случайная будет успешной.String getFlag()
вызывается в конце игры и должен возвращать строку, уникальную для вашего представления. Ваша функция всегда должна возвращать одну и ту же строку. Представление с наибольшим количеством флагов в конце игры выигрывает.
Место хранения
У вас есть 3 формы хранения, адресная книга , журнал и переменные . Эти формы хранения являются локальными для бота, на котором выполняется ваша функция (поэтому, если ваша функция будет скопирована, содержимое каждого из этих объектов будет отличаться). Все эти объекты могут быть изменены или очищены вручную. Чтобы получить эти объекты, у вас есть получатель в вашем классе (например getLog()
).
В AddressBook хранится список IP-адресов , каждый из которых имеет AddressType , который позволяет классифицировать различные типы адресов. Адресная книга всегда будет содержать как минимум 1 адрес (если он очищен, будет добавлен случайный). Очистка адресной книги для получения нескольких IP-адресов не допускается.
В журнале хранится список всех предпринятых действий, а также данные о действии. Он также включает в себя историю всех успешных атак (хотя вы не знаете, какие функции они перезаписали)
Объект Variables позволяет хранить строковые переменные, прикрепленные к имени строки. При запуске игры переменные будут содержать одну переменную, ID
которая содержит случайно сгенерированный идентификатор, уникальный для вашего типа бота.
У вас также есть другие функции доступа:
int getTurnNumber()
возвращает целое число с текущим ходомbool functionsMatch(ReadonlyBot, FunctionType)
проверяет, соответствует ли функция ReadonlyBot вашейIPAddress personalAddress()
возвращает ваш IP-адрес
Как реализовать
- Вы можете получить код от Github
- Добавьте своего бота в
\bots
папку, а затем добавьте ссылку на своего бота вcontroller\CodeBotFactory.java
- Ваш бот должен расширяться
codebots.bot.CodeBot
илиcodebots.bots.DefaultCodeBot
- Вам нужна Java 8, если вы хотите запустить контроллер.
- Вы можете запустить код (если вы находитесь в
/src
папке), используяjavac codebots\*.java
для компиляции, а затемjava codebots.Main
для запуска. - Вы можете не иметь никаких непостоянные переменные - члены в своем классе
- Отражение не допускается.
- Формы общения между ботами (одного и того же или разных типов) вне перечисленных выше методов не допускаются.
- Допускаются глупые и / или суицидальные боты, но все боты должны быть функционально отличными от существующих записей.
- Если вы хотите случайности в своем боте, используйте
getRandom()
- Пожалуйста, постарайтесь, чтобы ваш код работал эффективно. Я потратил много времени на профилирование и быстрое создание контроллера.
множество
105.2501 Expelliarmus!
104.5803 Я помогаю!
104.2746 Кто я?
103.8529 Dumb Bot
103.2028 Replacer
102.7045 Chaos
102.4046 Hermit Bot
102.2849 Swarmer
100.5598 Случайный бот любит вас
99.966 Доверьтесь доверию!
99.0185 codebots.bots.DefaultCodeBot
91.2942 codebots.bots.MarkedBot
91.1423 Просто ваш дружелюбный соседский робот доставки почты.
89,4645 ноль