Hex codenjoy — как играть?

Игровой demo-сервер доступен так же в интернете 24/7 в целях ознакомления http://codenjoy.com/codenjoy-contest

Игра с открытым исходным кодом. Для реализации своей игры, исправления ошибок в текущей и внесения других правок необходимо для начала форкнуть проект. В корне репозитория есть описание в файле Readme.md - там описано, что делать дальше.

По возникающим вопросам, пиши в skype:alexander.baglay или на почту apofig@gmail.com

В чем суть игры?

Тебе предстоит захватить как можно большую территорию поля. Играть ты будещь вместе с другими противниками. Как играть?

Каждый твой ход ты можешь выбрать любую свою фишку и сделать ею один из двух типов ходов - либо походить на соседнюю клеточку, либо через одну. Если ты походишь на соседнюю - то фишка клонируется. Если через одну - фишка переместится. Когда твоя фишка приближается к фишкам соперника в притык - они превращаются в твои. Этого не случится, если это фишка соперника, которая походила за тот же ход что и ты (все игроки ходят все одновременно). Если же вы с соперником походили в одно и то же место поля - там образуется стена. Если ты не походил - ты пропускаешь ход.

Ходить ты можешь в любом из четырех направлений, на одну или две позиции, для этого тем тебе потребуется указать какой фишкой и как ходить, а потом и куда. Пример - ACT(2,3),LEFT - походить фишкой в позиции 2,3 (координаты 0,0 в левом верхнем углу) влево, клонировав ее. Пример2 - ACT(1,1,1),UP - походить фишкой в позиции 1,1 вверх, переместив ее.

Очки расчитываются так: каждая захваченная фишка +30, каждая утерянная фишка -10.

Побеждает игрок с большим числом очков (до условленного времени).

Итак, игрок регистрируется на сервере, указывая свой email

Далее необходимо подключиться из кода к серверу через вебсокеты. Это Maven проект и подойдет он для игры на JVM языках. Как его запустить смотри в корне проекта в файле README.txt

Для других языков придется написать свой клиент (а после пошарить с нами на почту: apofig@gmail.com)

Адрес для подключения к игре на сервере http://codenjoy.com:

ws://codenjoy.com:80/codenjoy-contest/ws?user=3edq63tw0bq4w4iem7nb&code=12345678901234567890

Адрес для подключения к игре на сервере, развернутом в локальной сети:

ws://server_ip:8080/codenjoy-contest/ws?user=3edq63tw0bq4w4iem7nb&code=12345678901234567890

Тут 'user' - id игрока, a 'code' - твой security token, его ты можешь получить из адресной строки браузера после регистрации/логина

После подключения клиент будет регулярно (каждую секунду) получать строку символов — с закодированным состоянием поля. Формат таков

^board=(.*)$

с помощью этого regexp можно выкусить строку доски. Вот пример строки от сервера (размер поля 7х7):

board=☼☼☼☼☼☼☼☼ ☺☺  ☼☼ ☺   ☼☼     ☼☼   ☻ ☼☼     ☼☼☼☼☼☼☼☼

Длинна строки равна площади поля (N*N). Если вставить символ переноса строки каждые N символов, то получится читабельное изображение поля.

☼☼☼☼☼☼☼
☼ ☺☺  ☼
☼ ☺   ☼
☼     ☼
☼  ☻  ☼
☼     ☼
☼☼☼☼☼☼☼

Первый символ строки соответствует ячейке расположенной в левом верхнем углу и имеет координату [0, 0]. В этом примере — позиция героя (символ ☻) — [3, 4].

Расшифровка символов

'☼' - препятствие, через которое никто не пройдет
MY_HERO('☺') - так всегда видно меня на моем поле
HERO1('☻') - фишки игроков (где-то из них мой цвет - им я отображаюсь на чужом поле)
HERO2('♥')
HERO3('♦')
HERO4('♣')
HERO5('♠')
HERO6('•')
HERO7('◘')
HERO8('○')
HERO9('◙')
HERO10('♂')
HERO11('♀')
NONE(' ') - свободная территория

Игра пошаговая, каждую секунду сервер посылает твоему клиенту (боту) состояние обновленного поля на текущий момент и ожидает ответа команды. За следующую секунду игрок должен успеть дать команду. Если не успел — ничего не менятеся.

Первая задача – написать websocket клиента, который подключится к серверу. Затем заставить цифры на поле слушаться команд. Таким образом, игрок подготовится к основной игре. Основная задача – вести осмысленную игру и победить.