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); }
public void AddPiece(Piece piece, BoardCoordinate moveTarget) { if (!moveTarget.IsCoordinateValidForBoardSize(BoardSize)) { throw new ArgumentException("moveTarget"); } this.pieces[moveTarget.X, moveTarget.Y] = piece; }
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); } }
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; }
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); }
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)); }
public override IEnumerable<BoardCoordinate> GetMovesFrom(BoardCoordinate startingLocation, int boardSize = Board.DefaultBoardSize) { var movesWithinABoardSize = GetAllRadialMovesFrom(startingLocation, boardSize); return movesWithinABoardSize.Where(bc => bc.IsCoordinateValidForBoardSize(boardSize)); }
public Piece GetPiece(BoardCoordinate squareIn) { return this.pieces[squareIn.X, squareIn.Y]; }
public abstract IEnumerable<BoardCoordinate> GetMovesFrom(BoardCoordinate startingLocation, int boardSize = Board.DefaultBoardSize);
protected static IEnumerable<BoardCoordinate> GetRadialDiagonalFromInclusive(BoardCoordinate startingPosition, int distance) { var squaresToRadiate = Enumerable.Range(1, distance); return squaresToRadiate.SelectMany(sq => GetRadialDiagonalFrom(startingPosition, sq)); }
protected static IEnumerable<BoardCoordinate> GetAllRadialMovesFrom(BoardCoordinate startingLocation, int distance) { return GetRadialDiagonalFromInclusive(startingLocation, distance) .Union(GetRadialAdjacentFromInclusive(startingLocation, distance)); }
public override IEnumerable<BoardCoordinate> GetMovesFrom(BoardCoordinate startingLocation, int boardSize = Board.DefaultBoardSize) { var oneSquareAwayMoves = GetAllRadialMovesFrom(startingLocation, 1); return oneSquareAwayMoves.Where(bc => bc.IsCoordinateValidForBoardSize(boardSize)); }