Пример #1
0
 void SetFigureOn(Squares square, Figures figure)  // метод для установки фигур
 {
     if (square.PosOnBoard())
     {
         figures[square.x, square.y] = figure;
     }
 }
Пример #2
0
        public char GFigure(int x, int y)                  // вычисляем местоположение каждой фигуры
        {
            Squares square = new Squares(x, y);            // берём клетку, которая была передана
            Figures fig    = board.GetFigureOn(square);    // вычисляем фигуру

            return(fig == Figures.zero ? '.' : (char)fig); // если фигура существует, возвращаем символ, иначе обнуляем
        }
Пример #3
0
        }                                                                                              // превращение пешки в другую фигуру

        public FiguresMovements(FigureOnSquare fos, Squares to, Figures transformation = Figures.zero) // информация о фигуре на клетке
        {
            this.figure         = fos.figure;                                                          // исходная фигура
            this.from           = fos.square;                                                          // стартовая позиция
            this.to             = to;                                                                  // позиция после сделанного хода
            this.transformation = transformation;                                                      // превращение для пешки
        }
Пример #4
0
        public Figures GetFigureOn(Squares square) // определяем какая фигура на какой клетки находится
        {
            if (square.PosOnBoard())               // проверка присутствия клетки на доске
            {
                return(figures[square.x, square.y]);
            }

            return(Figures.zero); // если клетка оказалась за доской
        }
Пример #5
0
 public IEnumerable <FigureOnSquare> SortFigures()                          // перебираем фигуры
 {
     foreach (Squares square in Squares.SortSquares())                      // перебираем все клетки
     {
         if (GetFigureOn(square).GetColor() == ChangeColor)                 // если на клетке находитсья фигура цвета который ходит
         {
             yield return(new FigureOnSquare(GetFigureOn(square), square)); // мы возвращаем её
         }
     }
 }
Пример #6
0
        private Squares FindEnemyKing()
        {
            Figures enemyking = ChangeColor == Colors.black ? Figures.WKing : Figures.BKing; // определяем цвет вражеского короля

            foreach (Squares square in Squares.SortSquares())                                // перебираем все клетки
            {
                if (GetFigureOn(square) == enemyking)                                        // проверяем искомая фигура равна ли вражескому королю
                {
                    return(square);
                }
            }
            return(Squares.zero);
        }
Пример #7
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);
        }
Пример #8
0
        private bool MovementStraightPos() // возможность двигаться прямо
        {
            Squares on = figm.from;        // исходная клетка откуда начинается движение

            do
            {
                on = new Squares(on.x + figm.SignX, on.y + figm.SignY); // создаем новую клетку со смещением на 1

                if (on == figm.to)                                      // если пришли на нужную клетку
                {
                    return(true);
                }
            }while (on.PosOnBoard() && board.GetFigureOn(on) == Figures.zero); // проверка на местонохождение клетки на доске и взятие фигуры

            return(false);
        }
Пример #9
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);
                 }
             }
         }
     }
 }
Пример #10
0
        }                                           // клетка на доске

        public FigureOnSquare(Figures figure, Squares square)
        {
            this.figure = figure;
            this.square = square;
        }