// Определяет мат, шах или пат белым. public static void CalculateChessStatus() { var isCheck = IsCheckFor(PieceColor.White); var hasMoves = false; foreach (var locFrom in board.GetPiecesLocations(PieceColor.White)) { foreach (var locTo in board.GetPiece(locFrom).GetMoves(locFrom, board)) { var old = board.GetPiece(locTo); board.Set(locTo, board.GetPiece(locFrom)); board.Set(locFrom, null); if (!IsCheckFor(PieceColor.White)) { hasMoves = true; } board.Set(locFrom, board.GetPiece(locTo)); board.Set(locTo, old); } } if (isCheck) { ChessStatus = hasMoves ? ChessStatus.Check : ChessStatus.Mate; } else if (hasMoves) { ChessStatus = ChessStatus.Ok; } else { ChessStatus = ChessStatus.Stalemate; } }
// Определяет мат, шах или пат разным. public void CalculateChessStatus(PieceColor color) { //board = newBoard; var isCheck = IsCheckForKing(color); var hasMoves = HasMoves(color); if (isCheck) { if (hasMoves) { ChessStatus = ChessStatus.Check; } else { ChessStatus = ChessStatus.Mate; } } else if (hasMoves) { ChessStatus = ChessStatus.Ok; } else { ChessStatus = ChessStatus.Stalemate; } }
// Определяет мат, шах или пат белым. public static void CalculateChessStatus(PieceColor playerColor = PieceColor.White) { var isCheck = IsCheck(playerColor); var hasMoves = false; foreach (var startLocation in board.GetPiecesPositions(playerColor)) { foreach (var nextPossibleLocation in board.GetPiece(startLocation).GetMoves(startLocation, board)) { var old = board.GetPiece(nextPossibleLocation); board.Set(nextPossibleLocation, board.GetPiece(startLocation)); board.Set(startLocation, null); if (!IsCheck(playerColor)) { hasMoves = true; } board.Set(startLocation, board.GetPiece(nextPossibleLocation)); board.Set(nextPossibleLocation, old); } } if (isCheck) { ChessStatus = hasMoves ? ChessStatus.Check : ChessStatus.Mate; } else { ChessStatus = hasMoves ? ChessStatus.Ok : ChessStatus.Stalemate; } }
// Определяет мат, шах или пат белым. public static void CalculateChessStatus(PieceColor color) { var isCheck = IsCheck(color); var hasMoves = HasMoves(); ChessStatus = GetChessStatus(isCheck, hasMoves); }
public void CalculateChessStatus(PieceColor color) { Boolean isCheck = IsCheck(color); Boolean hasMoves = HasMoves(color); ChessStatus = isCheck switch { true when hasMoves => ChessStatus.Check, true => ChessStatus.Mate, false when hasMoves => ChessStatus.Ok, false => ChessStatus.Stalemate }; }
public void CalculateChessStatus(PieceColor color) { var isCheck = IsCheck(color); var hasMoves = HasMoves(color); if (isCheck) { ChessStatus = hasMoves ? ChessStatus.Check : ChessStatus.Mate; } else { ChessStatus = hasMoves ? ChessStatus.Ok : ChessStatus.Stalemate; } }
private static void SetStatus(bool isCheck, bool hasMoves) { if (isCheck) { ChessStatus = hasMoves ? ChessStatus.Check : ChessStatus.Mate; } else if (hasMoves) { ChessStatus = ChessStatus.Ok; } else { ChessStatus = ChessStatus.Stalemate; } }
// Определяет мат, шах или пат белым. public static void CalculateChessStatus() { var hasMoves = HasMoves(); if (IsCheckForWhite()) { ChessStatus = hasMoves ? ChessStatus.Check : ChessStatus.Mate; } else if (hasMoves) { ChessStatus = ChessStatus.Ok; } else { ChessStatus = ChessStatus.Stalemate; } }
// Определяет мат, шах или пат белым. public static ChessStatus CalculateChessStatus(PieceColor color) { var isCheck = IsCheck(color); var hasMoves = DoesKingHasMoves(color); foreach (var locFrom in board.GetPieces(PieceColor.White)) { foreach (var locTo in board.GetPiece(locFrom).GetMoves(locFrom, board)) { var old = board.GetPiece(locTo); board.Set(locTo, board.GetPiece(locFrom)); board.Set(locFrom, null); if (!IsCheck(color)) { hasMoves = true; } board.Set(locFrom, board.GetPiece(locTo)); board.Set(locTo, old); } } if (isCheck) { if (hasMoves) { ChessStatus = ChessStatus.Check; } else { ChessStatus = ChessStatus.Mate; } } else if (hasMoves) { ChessStatus = ChessStatus.Ok; } else { ChessStatus = ChessStatus.Stalemate; } return(ChessStatus); }
// Определяет мат, шах или пат белым. public static void CalculateChessStatus() { var isCheck = IsCheckForWhite(board); var hasMoves = board.GetPieces(PieceColor.White) .Any(whiteLocation => board.GetPiece(whiteLocation).GetMoves(whiteLocation, board) .Any(locTo => HasSafeMoves(whiteLocation, locTo, false))); if (isCheck) { ChessStatus = hasMoves ? ChessStatus.Check : ChessStatus.Mate; } else if (hasMoves) { ChessStatus = ChessStatus.Ok; } else { ChessStatus = ChessStatus.Stalemate; } }
// Определяет мат, шах или пат белым. public static void CalculateChessStatus() { var isCheck = IsCheckForWhite(board); var hasMoves = board.GetPieces(PieceColor.White) .Any(whiteLocation => board.GetPiece(whiteLocation) .GetMoves(whiteLocation, board) .Any(x => CheckForSafeMoves(whiteLocation, x))); // if (isCheck) // if (hasMoves) // ChessStatus = ChessStatus.Check; // else ChessStatus = ChessStatus.Mate; // else if (hasMoves) ChessStatus = ChessStatus.Ok; // else ChessStatus = ChessStatus.Stalemate; if (isCheck && hasMoves) { ChessStatus = ChessStatus.Check; } }
// Определяет мат, шах или пат белым. public static void CalculateChessStatus() { var isCheck = IsCheckForWhite(); var hasMoves = false; foreach (var locFrom in board.GetPieces(PieceColor.White)) { foreach (var locTo in board.Get(locFrom).Piece.GetMoves(locFrom, board)) { var old = board.Get(locTo); board.Set(locTo, board.Get(locFrom)); board.Set(locFrom, ColoredPiece.Empty); if (!IsCheckForWhite()) { hasMoves = true; } board.Set(locFrom, board.Get(locTo)); board.Set(locTo, old); } } if (isCheck) { if (hasMoves) { ChessStatus = ChessStatus.Check; } else { ChessStatus = ChessStatus.Mate; } } else if (hasMoves) { ChessStatus = ChessStatus.Ok; } else { ChessStatus = ChessStatus.Stalemate; } }
// Определяет мат, шах или пат белым. public static void CalculateChessStatus() { var isCheck = IsCheck(PieceColor.White); var hasMoves = false; foreach (var locFrom in board.GetPieces(PieceColor.White)) { foreach (var locTo in board.GetPiece(locFrom).GetMoves(locFrom, board)) { var old = board.GetPiece(locTo); Exchange(locTo, locFrom, board.GetPiece(locFrom), null); if (!IsCheck(PieceColor.White)) { hasMoves = true; } Exchange(locFrom, locTo, board.GetPiece(locTo), old); } } if (isCheck) { if (hasMoves) { ChessStatus = ChessStatus.Check; } else { ChessStatus = ChessStatus.Mate; } } else if (hasMoves) { ChessStatus = ChessStatus.Ok; } else { ChessStatus = ChessStatus.Stalemate; } ChessStatus = hasMoves ? isCheck ? ChessStatus.Check : ChessStatus.Mate : ChessStatus.Stalemate }
// Определяет мат, шах или пат белым. public static void CalculateChessStatus() { var isCheck = IsCheckForWhite(); var hasMoves = false; foreach (var locFrom in board.GetPiecesLocations(PieceColor.White)) { foreach (var locTo in board.GetPiece(locFrom).GetMoves(locFrom, board)) { var currentPiece = board.GetPiece(locTo); MakeStep(locTo, locFrom); hasMoves = !IsCheckForWhite(); MakeStep(locFrom, locTo, currentPiece); } } if (isCheck) { if (hasMoves) { ChessStatus = ChessStatus.Check; } else { ChessStatus = ChessStatus.Mate; } } else if (hasMoves) { ChessStatus = ChessStatus.Ok; } else { ChessStatus = ChessStatus.Stalemate; } }