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(); } }
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); }