public override int GetHashCode() { return (Source.GetHashCode() ^ Destination.GetHashCode() ^ CapturedPiece.GetHashCode() ^ SpecialMoveType.GetHashCode()); }
public override void UnMakeMove(Board board) { PromotedPiece.RemoveMe(board); if (CapturedPiece != null) { CapturedPiece.PutMe(board); } Piece.PutMe(board); }
public override void MakeMove(Board board) { if (Piece.Color == Color.White) { CapturedPiece = To.To(Coordinate.Directions.South).GetPiece(board); } else { CapturedPiece = To.To(Coordinate.Directions.North).GetPiece(board); } CapturedPiece.RemoveMe(board); Piece.MoveTo(board, To); }
public override bool Equals(object obj) { var move = obj as Move; if (move == null) { return(false); } return (Source.Equals(move.Source) && Destination.Equals(move.Destination) && CapturedPiece.Equals(move.CapturedPiece) && SpecialMoveType.Equals(move.SpecialMoveType)); }
public override string ToString() { var piece = CapturedPiece.GetNotation(); var endingFile = MoveUtilities.GetFileFromInt(EndingSquare.Coordinate.File); var rank = EndingSquare.Coordinate.Rank; var isCapture = GetCaptureNotation(IsCapture); var check = GetCheckNotation(); var disambiguating = GetDisambiguating(); var promotion = GetPromotionNotation(); return(string.Format("{0}{1}{2}{3}{4}{5}{6}", piece, disambiguating, isCapture, endingFile, rank, promotion, check)); }
/// <summary> /// 生成文字描述。 /// </summary> public void GenerateFriendlyText() { var sb = new System.Text.StringBuilder(); sb.Append(Piece.GetFriendlyName()); sb.Append("从"); sb.Append(OriginalPosition.ToString()); sb.Append("到"); sb.Append(NewPosition.ToString()); if (IsCapture && CapturedPiece != null) { sb.Append(", 吃"); sb.Append(CapturedPiece.GetFriendlyName()); } if (Promotion.HasValue) { sb.Append(", 晋升为"); sb.Append(ChessGame.OriginalMapPgnCharToPiece(Promotion.Value, Player).GetFriendlyName()); } if (Castling.Equals(CastlingType.KingSide)) { sb.Append(", 王翼易位"); } if (Castling.Equals(CastlingType.QueenSide)) { sb.Append(", 后翼易位"); } if(IsEnpassant) { sb.Append(", 吃过路兵"); } if (IsCheckmate.HasValue && IsCheckmate.Value) { sb.Append(", 将死"); } else if (IsChecking.HasValue && IsChecking.Value) { sb.Append(", 将军"); } this._storedFriendlyText = sb.ToString(); }
public override string ToString() { if (IsKingSideCastle) { return($"{Player} castles king-side"); } if (IsQueenSideCastle) { return($"{Player} castles queen-side"); } return($"{Player} {PieceType} {From}->{To}" + (IsCapturing ? $" captures {CapturedPiece.GetPieceType()}" : "") + (IsWithCheck ? " with check" : "")); }
protected virtual void OnMovePlayed() { MovedPiece.OnPieceMoved(EndingSquare); CapturedPiece?.OnPieceCaptured(); }