0
- 01.03.2015 - 12:45
|
Добрый день. Я сейчас пишу движок для шахматной игры и у меня возник такой вопрос. В каком классе лучше всего реализовывать метод для определения, куда какая фигура может ходить: в классе Game, который отвечает за игру в целом или для каждой фигуры писать свой класс, дочерний от некого абстрактного класса Unit и уже там реализовывать получение списка возможных ходов?
| |
1
- 01.03.2015 - 14:54
|
Список "возможных" ходов я бы реализовал для каждой фигуры, сначала как абстрактный метод для общего класса, потом для каждого потомка. TUnit = class public class function createStepCells(const x,y:Integer):TCellList ; virtual ; abstract ; TUnitElephant = class(TUnit) public class function createStepCells(const x,y:Integer):TCellList ; override ; Для слона такой метод вернет все клетки по диагоналям от x,y, без учета правил и занятности оных. А вот список ходов, доступных исходя из логики игры (занятые клетки, запрет установки короля под шах и т.д.) - уже в классе игры, который будет взаимодействовать с конкретной фигурой и её методом. Таким образом: 1) Правила хода фигуры будут инкапсулированы в классе фигуры и только там. 2) Правила игры в отрыве от фигур будет обрабатываться в классе игры и только там. | |
2
- 02.03.2015 - 13:20
| +100500 | |
| Интернет-форум Краснодарского края и Краснодара |