Доброго времени суток, уважаемые!
"Проект выходного дня", шахматы.
Клиент-серверная архитектура. Писал в свободное время - по часу .. три в день - на многое не надейтесь, больно не пинайтесь =)
Сервер написан за несколько минут (буквально), на похапэ => для работы потребуется какой-нибудь сервер. Для польователей Windows советую
WAMP server - не нуждается в настройке, весит мало, самодостаточен (легонький MySQL упакован). Для Linux все проще:
apt-get install apache2 и прочие радости поставляются в комплекте с ОС.
Клиент написан на С++ (ну ясное ж дело - знаю, в который тред пост пишу) с использованием библиотеки
SFML. Понятно, что для компиляции вам понадобится содрать версию 1.6 (последняя которая) на оф. сайте или установить все пакеты из виртуального
libsfml-dev one. Компилируется и запускается без проблем на Windows 7 и Ubuntu 11.04.
Ах, да, замечу, что для запуска критично расположение директории
data относительно бинарника -
они должны лежать в одном каталоге.
Очередность ходов пока не реализована. В комплекте поставляется два исходника:
chess.cpp и
chessEd.cpp - клиент и редактор, соответственно. Редактор позволяет указывать, какие клетки доступны для боя, хода и
promotion (см. статью на википедии о шахматах) каждой фигуры.
Поскольку заикнулся про редактор, сразу расскажу как работает вся система (ну, или "как должно быть в идеале"): запускаем сервер с БД всех возможных ходов для каждой фигуры из всех возможных позиций (для этого и создается редактор), создаем и заполняем БД (процесс примерно таков: в редакторе выбираем фигуру клавишей F1 (F2 меняет цвет), клавишей F3 выбираем режим - задать расположение фигуры, задать клетки, которые должны быть пустыми для выполнения хода, задать клетку для перемещения, задать клетку для захвата фигуры, задать клетку для promotion; стрелками двигаем курсор, пробелом/Enter'ом выбираем нужные клетки, жмем F4 и сохраняем ход в файл; обрабатываем файл утилитой - получаем SQL-запрос, который и выполняет все инициализирующие действия с БД), указываем сервер в настройках клиента (TODO), запускаем клиент. У клиента должно быть два режима - "создание игры и ожидание оппонента" (с возможностью выбора цвета своих фигур или случайным образом давать - пока не решил) и "подключение к первой найденной игре". Более, согласитесь, ничего и не нужно.
Процесс игры таков: клиент отправляет серверу запрос, мол, "хочу пойти отсюдова да сюда", сервер находит игру, от которой пришел запрос, обрабатывает данные (делает несколько непростых выборок из БД) и отправляет клиенту ответ - "можно ему туда ходить или нельзя". В зависимости от ответа сервера и происходит ход игрока - захват фигуры, promotion или же простое перемещение фигуры.
Работа с БД пока отложена до лучших времен - когда будет наполнен файл с возможными ходами. А пока можете полюбоваться на пустышку =) Поскольку файлы выложены на мой
Dropbox, возможны обновления =)
Благодарю за внимание!