コード例 #1
0
        public void RotatePlayer()
        {
            if (GetActivePlayer() == white)
            {
                white.IsWaiting = true;
                black.IsWaiting = false;
            }
            else
            {
                white.IsWaiting = false;
                black.IsWaiting = true;
            }

            GetWaitingPlayer().timer.Stop();

            // Der Bauer kann nur unmittelbar nach seinem Doppelzug en passant geschlagen werden,
            // daher wird er in dieser Folgerunde aus der Eigenschaft DoubleStepMovedPawn
            // des aktuellen Spielers wieder entfernt
            GetActivePlayer().DoubleStepMovedPawn = null;

            // Prüfen, ob dem Spieler Schach geboten wird
            GetActivePlayer().IsKingInCheck = board.IsKingInCheck(GetActivePlayer().Color);

            // Prüfen, ob der Spieler Matt gesetzt wurde
            if (GetActivePlayer().IsKingInCheck)
            {
                GetActivePlayer().IsKingCheckmate = board.IsKingCheckmate(GetActivePlayer().Color);
            }

            if (!GetActivePlayer().IsKingCheckmate)
            {
                GetActivePlayer().timer.Start();
            }

            RefreshBoardStatus();
        }