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

Игра создана на основе http://gabrielecirulli.github.io/2048/. Спасибо Авторам за идею.

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

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

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

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

Тебе предстоит добраться до 2048 (или даже дальше). После каждого твоего хода в свободных угловых ячейках появится цифра 2. Используя одну из команд (LEFT, RIGHT, UP, DOWN) сбить все цифры к одной из сторон. При этом две одинаковые цифры, стоящие рядом, превращаются в одну, равную их сумме.

Очки рассчитываются как максимальная сумма чисел на доске за всю игру.

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

Итак, игрок регистрируется на сервере, указывая свой 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 можно выкусить строку доски. Вот пример строки от сервера:

board=8A4AA2BB88488848442222222

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

8A4AA
2BB88
48884
84422
22222

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

_x('x') - препятствие, через которое цифра не пройдет
_2('2')
_4('4')
_8('8')
_16('A')
_32('B')
_64('C')
_128('D')
_256('E')
_512('F')
_1024('G')
_2048('H')
_4096('I')
_8192('J')
_16384('K')
_32768('L')
_65536('M')
_131072('N')
_262144('O')
_524288('P')
_1048576('Q')
_2097152('R')
_4194304('S')
NONE(' ')

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

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