R50 2ec4155450f6f41a5db7198d4ade7cfd
Разработка веб-приложений.

Консольный клиент-серверный покер на node js

Добавлено 27 ноя 2018 в 19:42
Техасский Холдем
Я разработал простенький консольный покер для игры с друзьями. Вы можете зайти на сервер, авторизоваться, создать комнату на шесть человек, дождаться друзей и начать играть в Техасский Холдем. На столе 5 карт, в руке 2 карты. По завершению игры, система определит уровень вашей комбинации и выберет победителя, который получит все. В случае совпадения уровня система поделит ваш выигрыш с другими победителями. Вам доступны 3 команды во время игры: up, check, fold, после ввода которых ход будет передаваться другому игроку.

Чат
Так-же я не мог не реализовать внутри-игровой чат. Вам просто нужно набрать сообщение и отправить его на сервер, чтобы оно отобразилось в лобби или комнате, в которой вы находитесь.
Чтобы отправить специальную команду на сервер поставьте точку в начале.

Интересное
Самой сложной частью, на мой взгляд, была система определения победителя. Она проверяет карты каждого игрока и, по заданным заранее комбинациям, выдает определенное количество очков каждому игроку, затем они сравниваются.

Развертка
Чтобы попробовать вам потребуется развернуть на машине-сервере базу данных mysql и создать таблицу для внесения игроков:
create table clients (id int(11) not null auto_increment, name char(128) CHARACTER SET utf8 COLLATE utf8_bin, password char(128) not null, money int(32), primary key (id));

Затем установите node.js(разрабатывалось на 8.11.3 LTS), если еще этого не сделали. В server.js начиная с 43 строки измените настройки под свою бд. Теперь вы можете запустить server.js через консоль node.js или через server.bat

Подключение
Покер написан на чистом node.js и требует для своей работы его установки даже на клиентскую часть. (Согласен, это несколько неудобный шаг. Вы можете связаться со мной и сообщить как этого можно было бы избежать). Скачайте poker-client 0.0.2.rar, в нем вы найдете уже готовый к установке node.js в папке redist. Затем в файле connect.js измените connect.port на 7000 (или тот, что вы самостоятельно задали в server.js), а connect.ip на ip сервера. После вы можете подключиться через node.js или connect.bat.

Добро пожаловать на сервер
Вы можете видеть интерфейс клиентской части. Теперь вам необходимо зарегистрироваться, для этого необходимо указать логин и, через пробел, пароль дважды. Теперь я предлагаю вам самостоятельно ознакомиться с функционалом приложения с помощью команды .help

Баги и ошибки
Разрабатывая покер, я допустил несколько фундаментальных ошибок. Вот некоторые из тех, что мне удалось обнаружить:
Загрузка всей базы данных в оперативную память сервера. Даже если на сервере сейчас 5 человек, но когда-то было 1000, то вся 1000 будет храниться в массиве, тормозя обработку и провоцируя утечку памяти. Ошибка не была исправлена, вы можете сами убедиться в ей наличии скачав и развернув приложение.
Обновление интерфейса. Каждый раз, когда с сервера приходят новые данные, клиент обновляет интерфейс. Этого можно было бы избежать. К сожалению, моя нетерпеливость взяла свое.
Из-за этого пропадают вводимые команды(по факту, они есть, но вы их не видите, они не отрисованы). Но если вы нажмете ввод, то команда все равно будет исполнена.

Опыт
Это был мой первый опыт работы с node.js. Я потратил по меньшей мере две недели на написание. Было увлекательно и я многому научился во время разработки.

Ссылки
Проект на гит-хабе: https://github.com/HeNHooKy/poker
Клиент: poker-client 0.0.2.rar
88d47c7237