|     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 |   |  
 Интернет-форум Краснодарского края и Краснодара |