Esempio n. 1
0
        private void EndTurn()
        {
            chessboard.SetChessboardBoxesAsUnavailable();
            SetChessboardBoxesColors(ignoreIsAvailableFlag: true);
            RedrawChessboardBoxes();
            UpdateCapturedPiecesCounter();

            labelTurn.Text = chessboard.CurrentTurn == PieceColor.White
                ? Strings.WhitesTurn
                : Strings.BlacksTurn;

            EndGameIfCheckMate();

            if (aiPlayer != null && aiPlayer.Turn == chessboard.CurrentTurn)
            {
                var response = aiPlayer.PerformMove(chessboard);

                if (response == AIResponse.NoMovesLeft || response == AIResponse.NoPiecesLeft)
                {
                    NewGame();
                }

                if (response != AIResponse.SuccessfulMove)
                {
                    return;
                }

                EndTurn();
            }
        }
Esempio n. 2
0
        private static List <Tuple <Box, Box> > GetAvailableMovesFromBox(IChessboard chessboard, Box origin)
        {
            var moves = new List <Tuple <Box, Box> >();

            origin.Piece.CheckPossibilitiesForProvidedLocationAndMarkThem(chessboard, origin.Position);

            var availableBoxes = ChessboardBoxesHelper.GetAvailableBoxes(chessboard);

            foreach (var availableBox in availableBoxes)
            {
                moves.Add(new Tuple <Box, Box>(origin, availableBox));
            }

            chessboard.SetChessboardBoxesAsUnavailable();

            return(moves);
        }