Qt::Шахматы. Часть 2
Во второй части цикла статей, посвященного написанию шахмат, будет рассмотрена организация ходов по доске. Для начала введем два класса: QPiece – фигура и QGame – игра.
QPiece
Вообще далее фигура будет абстрактным классом, а работать мы будем с ее наследниками, но сейчас, для организации ходов по доске можно будет обойтись без них.
Фигура будет наследником от QSvgWidget, виджета, для отображения svg картинок.
Свойства фигуры
- State- состояние. Фигуры будет иметь два основных состояния: Simple (обычная фигура) и Deleted (уже срубленная). Доступно для записи и для чтения.
- Color– цвет фигуры (белая или черная). Свойство доступно только для чтения. Тип bool.
- Position– позиция фигуры на доске. Доступно для записи и чтения.
- Board – доска. Тип QBoard, доступна только для чтения.
Объявление:
- class QPiece : public QSvgWidget
- {
- Q_OBJECT
- public:
- enum State { Simple, Deleted };
- QPoint position();
- void setPosition( QPoint value );
- bool color();
- static QGame *game();
- void setState( State value );
- State state();
- QBoard *board();
- QPiece( QPoint position, QWidget *board );
- protected:
- QBoard *_board;
- QPoint _position;
- State _state;
- bool _color;
- };
паттерны, qt, cpp
Qt::Шахматы. Часть 1. Введение
В этом цикле статей будет разработано приложение для игры в шахматы. Вообще, написание шахмат, без искусственного интеллекта, довольно распространенная задача по практике в объектно-ориентированном программировании. Тут есть и наследование, полиморфизм, инкапсуляция, можно даже придумать, куда приделать паттерны :).
Сначала мы напишем шахматы типа человек против человека, а искусственному интеллекту будет посвящен уже другой цикл статей. В качестве IDE будем использовать отличный Qt Creator (скачать можно здесь, если в системе нет Qt, то лучше качать полностью Qt SDK).
Требования к программе
- Проверка хода согласно правилам для каждой из фигур.
- Проверки на шах, мат и пат.
- Возможность рокировки.
- Подсветка возможных ходов.
- Размер доски должен подстраиваться под размер окна.
Внешний вид
Определимся с внешним видом приложения. За основу можно взять оформление glChess, шахмат, которые идут в комплекте с Gnome. Картинки фигурок должны быть в векторном формате, что бы шахматы смотрелись одинаково хорошо при любом размере окна. Такие картинки были найдены на просторах интернета, скачать их можно здесь (формат svg).
В конечном итоге приложение может выглядеть так (KDE4):
Зеленым подсвечивается выбранная в данный момент фигура, синим - возможные ходы и красным фигуры, которые можно срубить.
qt, cpp
