//Отфильтровать только возможные ходы void FindCorrectPositions(IFigure figure, Position kingPosition, List <Position> positions) { var figurePosiblePositions = figure.FindPosibleWays(Map); var figurePos = new Position(figure.Position.X, figure.Position.Y); foreach (var pos in figurePosiblePositions) { var tempMap = Map.Clone(); tempMap[figurePos.X, figurePos.Y].Position = new Position(pos.X, pos.Y); tempMap[pos.X, pos.Y] = tempMap[figurePos.X, figurePos.Y]; tempMap[figurePos.X, figurePos.Y] = null; if (!IsShah(tempMap, (King)Map[kingPosition.X, kingPosition.Y], out IFigure shahFigure)) { positions.Add(pos); } figure.Position = figurePos; } }
//Метод для поиска пути конкретной фигуры List <Position> FindPosibleWays(IFigure figure) { return(figure.FindPosibleWays(Map)); }