Exemplo n.º 1
0
        private void MakeTurn(Turn turn)
        {
            turn.ToInt(out int wordStart, out int numStart, out int wordEnd, out int numEnd);
            var fgr = Cells[numStart][wordStart];

            OOEnable.Change(fgr, turn.Start);
            if (fgr == Figures.WhitePawn && numEnd == 5 && Cells[numEnd][wordEnd] == Figures.Space)
            {
                Cells[numEnd - 1][wordEnd] = Figures.Space;
            }
            if (fgr == Figures.BlackPawn && numEnd == 2 && Cells[numEnd][wordEnd] == Figures.Space)
            {
                Cells[numEnd + 1][wordEnd] = Figures.Space;
            }
            if (turn.Promote)
            {
                fgr = SideToMove == Side.White ? Figures.WhiteQueen : Figures.BlackQueen;
            }

            if (Figure.OOTurn(turn, out Turn extra))
            {
                MakeTurn(extra);
            }
            Cells[numStart][wordStart] = Figures.Space;
            Cells[numEnd][wordEnd]     = fgr;
        }