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

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

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

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

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

Надо написать своего бота для пятнашек. Герой - пустая клетка. Герой может передвигаться во все четыре стороны, Меняесь с соседней цифрой.

Цель - сложить пятнашки. Если все цифры на своиз местах, игра вийграна - начисляються очки. За каждую цифру, которую поставили на свое место герой получит бонусные очки. Очки суммируются.

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

Итак, игрок регистрируется на сервере, указывая свой 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 можно выкусить строку доски. Вот пример строки от сервера (цифры представлены буквами: a,b,c,d,e,f,g,h,i,j,k,l,m,n,o):

board=*******abcd**efgh**ijkl**mno+*******

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

******
                *abcd*
                *efgh*
                *ijkl*
                *mno+*
                ******

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

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

цифры представлены буквами:

A('a')=1
B('b')=2
C('c')=3
D('d')=4
E('e')=5
F('f')=6
G('g')=7
H('h')=8
I('i')=9
J('j')=10
K('k')=11
L('l')=12
M('m')=13
N('n')=14
O('o')=15

Cтена (рамка пятнашек)

WALL('*')

Наш герой - пустая клетка

HERO('+') 

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

Команд несколько: UP, DOWN, LEFT, RIGHT – приводят к движению героя в заданном направлении на 1 клетку(меняется с цифрой).

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