Example #1
0
        //Отфильтровать только возможные ходы
        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));
 }