Игровой 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 клиента, который подключится к серверу. Затем заставить героя слушаться команды. Таким образом, игрок подготовится к основной игре. Основная задача – вести осмысленную игру и победить.