コード例 #1
0
        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));
        }
コード例 #2
0
ファイル: DamePawn.cs プロジェクト: Dawidsoni/checkers-game
        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));
        }