Выяснить, что шахматный король за один ход может переместиться с одного заданного поля на другое - Pascal ABC
Формулировка задачи:
Задание:Pascal ABS
Для каждой задачи составить программу, выводящую значение TRUE, если указанное высказывание является истинным, и FALSE, - в противном случае (использовать условный оператор нельзя).
Шахматный король за один ход может переместиться с одного заданного поля на другое (каждое поле задано двумя координатами — целыми числами от 1 до 8).
Решение задачи: «Выяснить, что шахматный король за один ход может переместиться с одного заданного поля на другое»
textual
Листинг программы
int TField::operator - (const TField& Right) const{ return max(abs(x-Right.x),abs(y-Right.y)); }; bool TBishop::CanMove(const TField& Field){ return abs(Pos.x-Field.x) == abs(Pos.y-Field.y) } bool TRock::CanMove(const TField& Field){ return Pos.x==Field.x || Pos.y=Field.y; } bool TQueen::CanMove(const TField& Field){ return TBishop::CanMove(Field)||TRock::CanMove(Field); } bool TKing::CanMove(const TField& Field){ return (Field-Pos)==1; }
Объяснение кода листинга программы
- Создается класс TField, который представляет поле шахматной доски. У него есть два свойства: x и y, которые представляют координаты поля.
- В классе TField определен метод operator-, который возвращает максимальное значение между абсолютным значением разности координат текущего поля и правого. Этот метод используется в классе TKing для определения возможности хода короля.
- Создается класс TBishop, который представляет ферзя. У него есть метод CanMove, который проверяет возможность хода ферзя на другое поле. Он использует метод operator- из класса TField для определения расстояния между текущим положением ферзя и другим полем.
- Создается класс TRock, который представляет ладью. У него есть метод CanMove, который проверяет возможность хода ладьи на другое поле. Он использует метод operator- из класса TField для определения расстояния между текущим положением ладьи и другим полем.
- Создается класс TQueen, который представляет королеву. У него есть метод CanMove, который проверяет возможность хода королевы на другое поле. Он использует методы CanMove из классов TBishop и TRock для определения возможности хода.
- Создается класс TKing, который представляет короля. У него есть метод CanMove, который проверяет возможность хода короля на другое поле. Он использует метод operator- из класса TField для определения расстояния между текущим положением короля и другим полем.