Esempio n. 1
0
 protected static IEnumerable<BoardCoordinate> GetRadialDiagonalFrom(BoardCoordinate startingPosition, int distance)
 {
     yield return new BoardCoordinate(startingPosition.X + distance, startingPosition.Y + distance);
     yield return new BoardCoordinate(startingPosition.X + distance, startingPosition.Y - distance);
     yield return new BoardCoordinate(startingPosition.X - distance, startingPosition.Y + distance);
     yield return new BoardCoordinate(startingPosition.X - distance, startingPosition.Y - distance);
 }
Esempio n. 2
0
        public void AddPiece(Piece piece, BoardCoordinate moveTarget)
        {
            if (!moveTarget.IsCoordinateValidForBoardSize(BoardSize))
            {
                throw new ArgumentException("moveTarget");
            }

            this.pieces[moveTarget.X, moveTarget.Y] = piece;
        }
Esempio n. 3
0
        public override IEnumerable<BoardCoordinate> GetMovesFrom(BoardCoordinate startingLocation, int boardSize = Board.DefaultBoardSize)
        {
            yield return new BoardCoordinate(startingLocation.X, startingLocation.Y + 1);

            if (!this.HasMoved)
            {
                yield return new BoardCoordinate(startingLocation.X, startingLocation.Y + 2);
            }
        }
Esempio n. 4
0
        public override IEnumerable<BoardCoordinate> GetMovesFrom(BoardCoordinate startingLocation, int boardSize = Board.DefaultBoardSize)
        {
            var allDistancesFromStartingLocation = Enumerable.Range(1, boardSize + 1);

            var allPossibleBoardCoordinates = allDistancesFromStartingLocation.SelectMany(sp => GetRadialDiagonalFrom(startingLocation, sp));

            var legalBoardCoordinates = allPossibleBoardCoordinates.Where(bc => bc.IsCoordinateValidForBoardSize(boardSize));

            return legalBoardCoordinates;
        }
Esempio n. 5
0
        public override IEnumerable<BoardCoordinate> GetMovesFrom(BoardCoordinate startingLocation, int boardSize = Board.DefaultBoardSize)
        {
            var availableCoorinates = Enumerable.Range(1, boardSize);

            var verticalMoves = availableCoorinates.Where(y => startingLocation.Y != y)
                .Select(y => new BoardCoordinate(startingLocation.X, y));

            var horizonalMoves = availableCoorinates.Where(x => startingLocation.X != x)
                .Select(x => new BoardCoordinate(x, startingLocation.Y));

            return verticalMoves.Union(horizonalMoves);
        }
Esempio n. 6
0
        public override IEnumerable<BoardCoordinate> GetMovesFrom(BoardCoordinate startingLocation, int boardSize = Board.DefaultBoardSize)
        {
            var allPotentialMoves = new List<BoardCoordinate>
            {
                new BoardCoordinate(startingLocation.X + 2, startingLocation.Y + 1),
                new BoardCoordinate(startingLocation.X + 2, startingLocation.Y - 1),
                new BoardCoordinate(startingLocation.X + 1, startingLocation.Y + 2),
                new BoardCoordinate(startingLocation.X + 1, startingLocation.Y - 2),
                new BoardCoordinate(startingLocation.X - 2, startingLocation.Y + 1),
                new BoardCoordinate(startingLocation.X - 2, startingLocation.Y - 1),
                new BoardCoordinate(startingLocation.X - 1, startingLocation.Y + 2),
                new BoardCoordinate(startingLocation.X - 1, startingLocation.Y - 2)
            };

            return allPotentialMoves.Where(bc => bc.IsCoordinateValidForBoardSize(boardSize));
        }
Esempio n. 7
0
        public override IEnumerable<BoardCoordinate> GetMovesFrom(BoardCoordinate startingLocation, int boardSize = Board.DefaultBoardSize)
        {
            var movesWithinABoardSize = GetAllRadialMovesFrom(startingLocation, boardSize);

            return movesWithinABoardSize.Where(bc => bc.IsCoordinateValidForBoardSize(boardSize));
        }
Esempio n. 8
0
 public Piece GetPiece(BoardCoordinate squareIn)
 {
     return this.pieces[squareIn.X, squareIn.Y];
 }
Esempio n. 9
0
 public abstract IEnumerable<BoardCoordinate> GetMovesFrom(BoardCoordinate startingLocation, int boardSize = Board.DefaultBoardSize);
Esempio n. 10
0
        protected static IEnumerable<BoardCoordinate> GetRadialDiagonalFromInclusive(BoardCoordinate startingPosition, int distance)
        {
            var squaresToRadiate = Enumerable.Range(1, distance);

            return squaresToRadiate.SelectMany(sq => GetRadialDiagonalFrom(startingPosition, sq));
        }
Esempio n. 11
0
 protected static IEnumerable<BoardCoordinate> GetAllRadialMovesFrom(BoardCoordinate startingLocation, int distance)
 {
     return GetRadialDiagonalFromInclusive(startingLocation, distance)
         .Union(GetRadialAdjacentFromInclusive(startingLocation, distance));
 }
Esempio n. 12
0
        public override IEnumerable<BoardCoordinate> GetMovesFrom(BoardCoordinate startingLocation, int boardSize = Board.DefaultBoardSize)
        {
            var oneSquareAwayMoves = GetAllRadialMovesFrom(startingLocation, 1);

            return oneSquareAwayMoves.Where(bc => bc.IsCoordinateValidForBoardSize(boardSize));
        }