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