Тема: [WIP] mooChess
Показать сообщение отдельно
Старый 06.07.2011, 00:20   #1
shybovycha
ПроЭктировщик
 
Аватар для shybovycha
 
Регистрация: 27.05.2007
Сообщений: 110
Написано 40 полезных сообщений
(для 33 пользователей)
[WIP] mooChess

Доброго времени суток, уважаемые!

"Проект выходного дня", шахматы.

Клиент-серверная архитектура. Писал в свободное время - по часу .. три в день - на многое не надейтесь, больно не пинайтесь =)

Сервер написан за несколько минут (буквально), на похапэ => для работы потребуется какой-нибудь сервер. Для польователей 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, возможны обновления =)

Благодарю за внимание!

Последний раз редактировалось shybovycha, 07.07.2011 в 13:49.
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо shybovycha за это полезное сообщение:
baton4ik (06.07.2011), Randomize (12.07.2011), Reks888 (07.07.2011)