Beispiel #1
0
    private void PlayerWhiteVsAiBlack()
    {
        Debug.Log("PlayerWhiteVsAiBlack");

        if (engine.IsGameOver())
        {
            return;
        }

        if (engine.Thinking)
        {
            return;
        }

        switch (engine.WhoseMove)
        {
        case ChessPieceColor.White:

            Debug.Log("WhoseMove White");

            SetInteractive(whitePieces, true);
            SetInteractive(blackPieces, false);
            foreach (var piece in promotedPieces)
            {
                if (piece.mainColor == Colors.WhitePieces)
                {
                    piece.enabled = true;
                }
            }
            StaticEvents.ReportOfTurnChange(false, engine.GetScore());

            break;

        case ChessPieceColor.Black:

            Debug.Log("WhoseMove Black");

            SetInteractive(whitePieces, false);
            SetInteractive(blackPieces, false);

            StaticEvents.ReportOfTurnChange(true, engine.GetScore());

            if (engine.WhoseMove != engine.HumanPlayer)
            {
                MakeEngineMove();
            }

            break;

        default:
            throw new ArgumentOutOfRangeException();
        }
    }
Beispiel #2
0
    private void AiWhiteVsAiBlack()
    {
        Debug.Log("AiWhiteVsAiBlack");
        SetInteractive(whitePieces, false);
        SetInteractive(blackPieces, false);

        if (engine.IsGameOver())
        {
            return;
        }
        if (engine.Thinking)
        {
            return;
        }

        switch (engine.WhoseMove)
        {
        case ChessPieceColor.White:
            Debug.Log("WhoseMove White");
            StaticEvents.ReportOfTurnChange(false, engine.GetScore());

            engine.HumanPlayer = ChessPieceColor.Black;

            if (engine.WhoseMove != engine.HumanPlayer)
            {
                MakeEngineMove();
            }

            break;

        case ChessPieceColor.Black:

            Debug.Log("WhoseMove Black");
            StaticEvents.ReportOfTurnChange(true, engine.GetScore());

            engine.HumanPlayer = ChessPieceColor.White;

            if (engine.WhoseMove != engine.HumanPlayer)
            {
                MakeEngineMove();
            }

            break;

        default:
            throw new ArgumentOutOfRangeException();
        }
    }
Beispiel #3
0
    private void PlayerWhiteVsPlayerBlack()
    {
        if (engine.IsGameOver())
        {
            return;
        }

        switch (engine.WhoseMove)
        {
        case ChessPieceColor.White:
            SetInteractive(whitePieces, true);
            SetInteractive(blackPieces, false);

            foreach (var piece in promotedPieces)
            {
                var isBlack = piece.mainColor != Color.white;
                piece.enabled = !isBlack;
            }

            StaticEvents.ReportOfTurnChange(false, engine.GetScore());
            break;

        case ChessPieceColor.Black:
            SetInteractive(whitePieces, false);
            SetInteractive(blackPieces, true);

            foreach (var piece in promotedPieces)
            {
                var isBlack = piece.mainColor != Color.white;
                piece.enabled = isBlack;
            }

            StaticEvents.ReportOfTurnChange(true, engine.GetScore());
            break;

        default:
            throw new ArgumentOutOfRangeException();
        }
    }