Записи закриті. Будь-які нові записи чи правки не враховуються в остаточному циклі.
Приєднуйтесь до чату!
Виклик
Постарайтеся залити полотно якомога більше фарбою. Будьте уважні до інших ботів, які можуть зафарбувати вашу важку роботу!
Примітка. У цьому описі виклику фарба означає змінити колір квадрата на сітці, а нефарбований означає, що квадрат на сітці має колір 0 і не приписується жодному з ботів.
Вхідні дані
Вашій функції буде надано чотири аргументи: себе, сітку, положення всіх ботів у сітці та інформацію про ігри.
Я сам
Це 1D масив , який позначає колір і положення на сітці: [id, xpos, ypos]
.
Лівий верхній кут сітки - це положення (0, 0)
. Позиція (1,0)
праворуч від цього, а позиція (0,1)
знизу
Ваш ідентифікатор - це ціле число, яке є синонімом вашого кольору (див. Нижче, щоб дізнатися, як ваш ідентифікатор впливає на те, як ви фарбуєте сітку). Ваш ідентифікатор унікальний для вашого бота.
Сітка
Це двовимірний масив, який містить цілі числа, які повідомляють вам, якого кольору кожна клітина. Якщо число комірки сітки є 0
, це означає, що комірка є нефарбованою. Якщо кількість комірок сітки є цілим числом x
, це означає, що комірка була пофарбована ботом з ідентифікатором x
.
Щоб отримати колір сітки в положенні (x, y)
, використовуйте масив таким чином: grid[x][y]
.
Боти
Це масив, який містить інформацію про положення ботів. Кожен елемент масиву ботів являє собою масив, який описує кожен бот і виглядає так: [id, xpos, ypos]
де id
ID ідентифікатора бота, xpos
це х положення бота і ypos
є y положення бота.
Цей масив містить позицію та ідентифікатор вашого власного бота. Видалені боти не будуть включені до цього масиву.
Інформація про ігри
Це масив, що містить інформацію про поточну гру і виглядає так: [roundNum, maxRounds]
де roundNum
номер поточного раунду (1-індексований) і maxRounds
кількість раундів у поточній грі.
Вихід
Вихід повинен бути рядком, повернутим вашою функцією. Це команда руху.
Команда руху визначає ваш наступний хід. Доступні команди:
up
down
left
right
wait
Щоразу, коли ви рухаєтесь, ви малюєте квадрат, до якого рухаєтесь. (див. нижче для отримання додаткової інформації)
Де wait
означає, що ти не рухаєшся. (але ви малюєте квадрат, на якому ви залишаєтесь)
Якщо ви спробуєте перейти за межі мережі, ваша команда буде проігнорована, і ви залишитесь там же.
Фарбування сітки
Щоразу, коли ви переходите на квадрат, ви малюєте його, але є правила, які визначають, яким буде колір цього квадрата.
Якщо квадрат не пофарбований (0), ви просто пофарбуєте його тим же кольором, що і ваш власний ідентифікатор. Однак якщо квадрат був пофарбований раніше (не нульовий), то отриманий колір квадрата буде знайдено відповідно до наступного коду JavaScript:
[botColour, 0, floorColour][Math.abs(botColour - floorColour)%3]
Ця формула створена таким чином, щоб бот міг переходити над власним кольором, не перефарбовуючи його.
Усунення
Якщо після 5 раунду у вас пофарбовані один або менше квадратів (кількість квадратів на сітці того ж кольору, що і ви), ви будете усунені. Це означає, що ви більше не будете в грі і автоматично програєте.
Правила
- Ваш код повинен функціонувати типу
function(myself, grid, bots, gameInfo) {
// Code here
return move;
}
- Сітка складе квадрат бічної довжини
- Щоб запобігти націлюванню конкретних ботів, ідентифікатори ботів будуть рандомізовані.
- Якщо два боти займають один і той же простір, колір цього простору стане нефарбованим.
- Рух покрокової тобто під час раунду, всі боти забезпечені ідентичними
grid
,bots
іgameInfo
аргументами
- Ви можете створити максимум три боти
- Боти можуть працювати разом, але не повинні спілкуватися один з одним і не знають ідентифікаторів один одного. Перемоги будуть присуджуватися індивідуально, а не як команда.
- Ви не повинні створювати бота, який навмисно орієнтується на одного, попередньо вибраного бота. Однак ви можете орієнтуватися на тактику загального класу ботів.
- Ваш бот може зберігати дані в
window.localStorage
. Кожен бот повинен використовувати власний об’єкт даних. Якщо бот виявить, що він читає дані іншого бота (випадково або спеціально), він буде дискваліфікований, поки проблема не буде вирішена. - Якщо ваш бот використовує випадкові числа, будь ласка, використовуйте
Math.random()
Контролер
Контролер можна знайти тут:
https://gist.github.com/beta-decay/10f026b15c3babd63c004db1f937eb14
Або ви можете запустити його тут: https://beta-decay.github.io/art_attack
Примітка. Я б радив зробити будь-яке тестування в режимі офлайн (завантажити контролер з суті), оскільки веб-сторінка може змінитися в будь-який момент.
Коли всі боти будуть додані, я проведу 10 000 ігор зі знятим контролером без графічного інтерфейсу. Ви можете запустити його тут: https://beta-decay.github.io/art_attack/fast
Перемога
Гравець, який заповнив більшу частину полотна, виграє гру (гра - 2000 раундів). У разі нічиєї виграють усі виграні гравці.
Гравець, який виграє максимум з 10000 ігор, виграє виклик.
Очікується, що 10 000 ігор будуть запущені наступного понеділка (2018-08-27 о 23:00 UTC + 1).
[botColour, 0, floorColour][Math.abs(botColour - floorColour)%3]
формули, незалежно від того, чи пощастить боту і пофарбувати великих конкурентів (або зафарбуватись). Також врахуйте тролів / мисливців, які можуть власноруч знищити бота за власним бажанням. У будь-якому випадку, це буде в середньому на 10000 ігор.
[botColour, 0, floorColour][Math.abs(botColour - floorColour)%3]
англійською мовою, будь ласка?