public object Clone() { ChineseChessPiece piece = new ChineseChessPiece() { Name = Name, Position = (ChineseChessPosition)Position.Clone() }; return(piece); }
public static IEnumerable <ChineseChessPosition> PossibleMovesByPiece(ChineseChessPiece piece, Dictionary <ChineseChessPosition, Boolean> boardStates, Boolean isLowerTeam) { var name = piece.Name; List <ChineseChessPosition> listMoves = new List <ChineseChessPosition>(); var curRow = piece.Position.Row; var curCol = piece.Position.Column; switch (name) { case "j": listMoves = PossibleMovesForJu(curRow, curCol, boardStates); break; case "m": listMoves = PossibleMovesForMa(curRow, curCol, boardStates); break; case "x": listMoves = PossibleMovesForXiang(curRow, curCol, boardStates, isLowerTeam); break; case "s": listMoves = PossibleMovesForShi(curRow, curCol, boardStates, isLowerTeam); break; case "k": listMoves = PossibleMovesForKing(curRow, curCol, boardStates).ToList <ChineseChessPosition>(); break; case "p": listMoves = PossibleMovesForPao(curRow, curCol, boardStates); break; case "z": listMoves = PossibleMovesForZu(curRow, curCol, boardStates, isLowerTeam); break; default: throw new Exception("Unsupported name"); } return(FilterBoundedMoves(curRow, curCol, listMoves, boardStates)); }
public void MovePieceTo(ChineseChessPiece piece, ChineseChessPosition pos, Boolean?isCapture) { piece.MoveToPosition(pos); Boolean bCap = false; if (isCapture == null) { foreach (var piece2 in OppoPieces) { if (piece2.Position == pos) { bCap = true; break; } } } if (bCap) { CaptureOppoPiece(pos); } }