protected override List <PawnMove> GetCaptureList(Dot pos, BoardState bState, Dot dir, PawnMove pMove) { if (CanCapture(pos, bState, dir) == false) { return(new List <PawnMove>()); } var capPawn = bState.GetPawn(pos.GetMoved(dir)); if (pMove.GetCapturedList().Contains(capPawn)) { return(new List <PawnMove>()); } var destPos = pos.GetMoved(dir.X * 2, dir.Y * 2); bool isDamePos = IsDameLanePos(destPos, bState); var destMove = pMove.CreateIncrMove(destPos, capPawn, isDamePos); return(GetCaptureList(destPos, bState, destMove)); }
protected Pawn GetCapturedPawn(Dot pos, BoardState boardState, Dot dir) { pos = pos.GetMoved(dir); while (boardState.IsOnBoard(pos) && boardState.GetColor(pos) == PawnColor.NONE) { pos = pos.GetMoved(dir); } if (boardState.IsOnBoard(pos) == false || IsOponentColor(boardState.GetColor(pos)) == false) { return(null); } var dest = pos.GetMoved(dir); if (boardState.IsOnBoard(dest) == false || boardState.GetColor(dest) != PawnColor.NONE) { return(null); } return(boardState.GetPawn(pos)); }