- Оглавление
- Неформальная постановка задачи 2
- Формальная постановка задачи 3
- Разработка алгоритма решения задачи 5
- Спецификация данных программы 8
- I.Спецификация входных данных 8
- II.Спецификация выходных данных 8
- Спецификация функций программы 10
- Методы класса TChessFigure 10
- Методы класса TKingFigure 10
- Методы класса TQueenFigure 11
- Методы класса TBishopFigure 12
- Методы класса TKnightFigure 12
- Методы класса TRookFigure 13
- Методы класса TPawnFigure 14
- Методы класса TChessDesk 14
- Методы класса TfrmMainForm 19
- Проектирование программы 24
- UML-схемы классов и общая схема программы 24
- Сценарий диалога и макеты экранов 27
Неформальная постановка задачи
Формулировка задания: "Определить, допустим ли указанный ход пешкой в заданной корректной шахматной позиции. Заметим, что если после вашего хода ваша пешка атакована, то ваш ход недопустим".
Постановка:
Дана шахматная доска 8x8 полей и две группы фигур – «черные» и «белые». Обе группы имеют одинаковый состав (по 16 фигур): 1 король, 1 ферзь, 2 слона, 2 коня, 2 ладьи и 8 пешек.
Подзадачи:
Задать шахматную расстановку;
Проверить корректность шахматной расстановки;
Проверить возможность хода одной из 8 белых пешек: если клетка, на которую должна быть переставлена пешка, занята, то ход считать недопустимым. Иначе проверить, находится ли клетка, на которую должна быть переставлена пешка, в области атаки какой-либо из черных фигур. Если находится, то считать ход недопустимым, иначе – допустимым.
Соглашения:
В решении задачи будем использовать каноническую шахматную разметку доски по горизонталям и вертикалям: вертикали от ‘a’ до ‘h’ слева направо, горизонтали – от 8 до 1 сверху вниз;
Будем использовать нумерацию клеток парой вертикаль – горизонталь без разделения названия вертикалей и горизонталей дополнительными символами, например, a1, h7 и т.д.;
Фигурами игрока будем считать белые фигуры, фигурами противника – черные;
Шахматной расстановкой будем считать размещение белых и черных фигур на шахматной доске;
Канонической шахматной расстановкой будем считать следующее расположение фигур:
Для белых:
Король – e1;
Ферзь – d1;
Слон №1 – c1;
Слон №2 – f1;
Конь №1 – b1;
Конь №2 – g1;
Ладья №1 – a1;
Ладья №2 – h1;
Пешки №1-8 – a2, b2, c2, d2, e2, f2, g2, h2;
Для черных:
Король – e8;
Ферзь – d8;
Слон №1 – f8;
Слон №2 – c8;
Конь №1 – g8;
Конь №2 – b8;
Ладья №1 – h8;
Ладья №2 – a8;
Пешки №1-8 – h7, g7, f7, e7, d7, c7, b7, a7;
Нумерация белых и черных фигур является «зеркальной» (см. п. 5);
Корректной шахматной расстановкой будем считать расстановку фигур, в которой каждая фигура стоит на одной из 64 клеток, и ни на какой клетке не стоят две фигуры;
Будем считать, что любой ход белой пешки в заданной расстановке является первым, т.е. белая пешка может сделать ход на 1 или 2 клетки вперед из исходного положения;
Исключим из рассмотрения «взятие на проходе», т.к. данный элемент является тактическим приёмом и в шахматных правилах предусмотрено использование «взятия на проходе» только для канонической шахматной расстановки.