sheesh, це справді четверте? Для всіх ваших стариків основна проблема однакова, але ми використовуємо 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 зберігає список IPAddress , кожен з AddressType , що дозволяє класифікувати різні типи адрес. Адресна книга завжди буде містити принаймні 1 адресу (якщо вона буде очищена, буде додана випадкова). Очищення адресної книги для отримання декількох IP-адрес не дозволяється.
Log зберігає список всіх дій, а також дані про дію. Він також включає історію всіх успішних атак (хоча ви не знаєте, які функції вони перезаписали)
Об'єкт Змінні дозволяє зберігати змінні рядків, приєднані до імені рядка. Під час запуску гри Змінні містять єдину змінну, 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 Німий бот
103.2028 Замінник
102.7045 Хаос
102.4046 Бот-відлюдник
102.2849 Плавець
100.5598 Випадковий бот любить вас
99,966 Довіряйте довірі!
99.0185 codebots.bots.DefaultCodeBot
91.2942 codebots.bots.MarkedBot
91.1423 Просто ваша дружня сусідська пошта, яка доставляє робота.
89,4645 нуль