загрузка черновика…
Код ещё не собирался. Нажмите «Собрать и сыграть» или Ctrl+Enter.
Полный вывод g++
Загрузка…
Логи появятся после матча. Всё, что бот пишет в std::cout / std::cerr, попадает сюда.
Как устроен бот
#include "kuma.hpp"
using namespace kuma;
class MyBot : public IBot {
public:
explicit MyBot(const GameInfo& info) {} // или конструктор без аргументов
Direction OnTick(const IMap& map) override { return map.Me().dir; }
};
KUMA_BOT(MyBot); // регистрация класса
Экземпляр создаётся один раз в начале матча — в полях класса можно хранить состояние между ходами. OnTick вызывается каждый тик, пока ваш медведь на поле.
GameInfo
width, height, my_id, players_count, seed (общий seed матча для воспроизводимой случайности).
IMap — состояние поля (только чтение)
- Width(), Height()
- размер поля в клетках
- Tick()
- номер текущего тика
- MyId()
- ваш id
- Me()
- ваш медведь —
const Player& - Players()
- все игроки, индекс ==
Player::id - Opponents()
- все, кроме вас (в т.ч. выбывшие — смотрите
alive) - InBounds(p)
- клетка внутри поля?
- Owner(p)
kEmpty(−1) — свободно,kWall(−2) — за полем, иначе id владельца следа/головы- IsFree(p)
- в поле и свободно — сюда можно шагнуть
- IsWall(p)
- за пределами поля
Player
id, pos (клетка головы), dir, lives (0 — выбыл), alive (на поле сейчас), deaths.
Direction и Point
UP, DOWN, LEFT, RIGHT; TurnLeft(d), TurnRight(d), Opposite(d). Point{x, y}: x вправо, y вниз, (0, 0) — левый верхний угол. me.pos + UP — клетка над головой, ManhattanDistance(a, b), kAllDirections.
Правила
- Медведь каждый тик сдвигается на клетку и тянет за собой кабель.
- Смерть: удар в стену, в любой кабель (свой или чужой), лоб в лоб, разворот на 180°, а также ошибка бота — не ответил вовремя, упал, некорректный ответ.
- После смерти кабель исчезает, медведь пропускает 3 тика и появляется снова.
- 3 жизни. Побеждает последний, у кого остались жизни; одновременная последняя смерть — ничья.
Ограничения
- 100 мс на ход, 256 МБ памяти.
- Без потоков, файлов и сети.
std::cout/std::cerr— в «Лог бота», игре не мешают.
Исходник: Средний боттолько чтение
Загрузка…
Арена ждёт вашего медведя
Напишите стратегию слева и нажмите «Собрать и сыграть» (Ctrl+Enter).
Победа!