Пример #1
0
 public bool MovementIsPos(FiguresMovements figm) // проверяем возможно ли движение для фигуры
 {
     this.figm = figm;                            // получаем и сохраняем ход
     return
         (MovementPosFrom() &&                    // проверяем возможность пойти с той клетки, на которой находимся
          MovementPosTo() &&                      // проверяем возможность пойти на ту клетку, куда собираемся
          MovementPosForFigure());                // проверяем возможность фигуры сделать ход
 }
Пример #2
0
        bool KingEatPos()                                                      // короля можно есть
        {
            Squares   enemyking = FindEnemyKing();                             // находим местоположение вражеского короля
            Movements movements = new Movements(this);                         // создаем все ходы возможные на доске

            foreach (FigureOnSquare figs in SortFigures())                     // перебираем все фиугуры на доске в список всех фигур
            {
                FiguresMovements figm = new FiguresMovements(figs, enemyking); // идём на клетку вражеского короля
                if (movements.MovementIsPos(figm))                             // проверяем можем ли пойти на клетку вражеского короля
                {
                    return(true);
                }
            }
            return(false);
        }
Пример #3
0
        public Board Moving(FiguresMovements figm)                                                              // создаём хода
        {
            Board next = new Board(fenchess);                                                                   // создание доски

            next.SetFigureOn(figm.from, Figures.zero);                                                          // клетку, откуда фигура пошла, делаем пустой
            next.SetFigureOn(figm.to, figm.transformation == Figures.zero ? figm.figure : figm.transformation); // в клетку, куда пошла фигура, добавляем фигуру с учётом превращения для пешки

            if (ChangeColor == Colors.black)
            {
                next.MovingNumb = next.MovingNumb + 1;  // увеличиваем количество ходов на 1
            }
            next.ChangeColor = ChangeColor.FlipColor(); // меняем цвет
            next.GenFenChess();                         // вызываем функцию генерации фигур по fen
            return(next);
        }
Пример #4
0
 void FindAllMovements()                                  // метод для поиска всех ходов
 {
     AllMovements = new List <FiguresMovements>();        // создаем пустой список
     foreach (FigureOnSquare figs in board.SortFigures()) // перебираем все фигуры на клетках доски того цвета который делает ход
     {
         foreach (Squares to in Squares.SortSquares())    // перебираем все клетки куда можно пойти
         {
             FiguresMovements figm = new FiguresMovements(figs, to);
             if (movement.MovementIsPos(figm)) // проверяем может ли быть выполнен конкретный ход
             {
                 if (!board.IsCheckAftertM(figm))
                 {
                     AllMovements.Add(figm);
                 }
             }
         }
     }
 }
Пример #5
0
        public Chess1 Moving(string move)
        {
            FiguresMovements figm = new FiguresMovements(move); // генерация хода

            if (!movement.MovementIsPos(figm))                  // проверяем возможно ли сделать ход
            {
                return(this);                                   // если ход сделать нельзя - позиция не изменяется
            }
            if (board.IsCheckAftertM(figm))                     // проверяем есть ли шах после хода
            {
                return(this);
            }

            Board  newBoard = board.Moving(figm);   // создаём доску после выполнения хода
            Chess1 newChess = new Chess1(newBoard); // создание шахмат от новой доски

            return(newChess);
        }
Пример #6
0
        public bool IsCheckAftertM(FiguresMovements figm) // проверка на шах после хода
        {
            Board after = Moving(figm);                   // делаем ход

            return(after.KingEatPos());                   // проверяем можно ли съесть короля после хода
        }