示例#1
0
        public List <Position> applyMove(Board board, IPiece piece)
        {
            Position p = piece.Position;
            Position possible;

            List <Position> moves = new List <Position>();

            int scalar;

            for (scalar = 1; scalar < Chess.Board.BOARD_DIMENSION; scalar++)
            {
                possible = new Position(p.Column + scalar * x, p.Row + scalar * y);
                Position.Placement placement = board.validPosition(piece, possible);

                switch (placement)
                {
                case Position.Placement.VALID:
                case Position.Placement.CAPTURE:
                    moves.Add(possible);
                    break;

                case Position.Placement.BLOCKED:
                case Position.Placement.ILLEGAL:
                default:
                    break;
                }

                if (placementWillTerminateVector(placement))
                {
                    break;
                }
            }

            return(moves);
        }
示例#2
0
        Boolean placementWillTerminateVector(Position.Placement placement)
        {
            switch (placement)
            {
            case Position.Placement.VALID:
                return(false);

            case Position.Placement.CAPTURE:
            case Position.Placement.BLOCKED:
            case Position.Placement.ILLEGAL:
            default:
                return(true);
            }
        }
示例#3
0
文件: FixedMove.cs 项目: jsok/Chess
        public List <Position> applyMove(Board board, IPiece piece)
        {
            Position p        = piece.Position;
            Position possible = new Position(p.Column + x, p.Row + y);

            List <Position> moves = new List <Position>();

            Position.Placement placement = board.validPosition(piece, possible);

            switch (placement)
            {
            case Position.Placement.VALID:
            case Position.Placement.CAPTURE:
                moves.Add(possible);
                break;

            case Position.Placement.BLOCKED:
            case Position.Placement.ILLEGAL:
            default:
                break;
            }

            return(moves);
        }