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