public static IEnumerable <Loc> _TilesCovered(Board currentBoard, byte row, byte col) { var covered = new List <Loc>(); for (int i = 1; i < 8; i++) { var loc = new Loc(row + i, col + i); if (!Board.InsideBoard(loc)) { break; } covered.Add(loc); if (currentBoard.IsOccupied(loc)) { break; } } for (int i = 1; i < 8; i++) { var loc = new Loc(row + i, col - i); if (!Board.InsideBoard(loc)) { break; } covered.Add(loc); if (currentBoard.IsOccupied(loc)) { break; } } for (int i = 1; i < 8; i++) { var loc = new Loc(row - i, col + i); if (!Board.InsideBoard(loc)) { break; } covered.Add(loc); if (currentBoard.IsOccupied(loc)) { break; } } for (int i = 1; i < 8; i++) { var loc = new Loc(row - i, col - i); if (!Board.InsideBoard(loc)) { break; } covered.Add(loc); if (currentBoard.IsOccupied(loc)) { break; } } return(covered); }
public virtual IEnumerable<Board> PossibleMoves(Board currentBoard, byte row, byte col) { var currentLoc = new Loc(row, col); foreach (var loc in TilesCovered(currentBoard, row, col)) { if (!currentBoard.IsOccupied(loc, IsWhite)) yield return currentBoard.WithNewLocation(currentLoc, loc); } }
public virtual IEnumerable <Board> PossibleMoves(Board currentBoard, byte row, byte col) { var currentLoc = new Loc(row, col); foreach (var loc in TilesCovered(currentBoard, row, col)) { if (!currentBoard.IsOccupied(loc, IsWhite)) { yield return(currentBoard.WithNewLocation(currentLoc, loc)); } } }
public override IEnumerable<Board> PossibleMoves(Board currentBoard, byte row, byte col) { var direction = -1; if (IsWhite) direction = 1; if (row + direction < 0 || row + direction > 7) yield break; var newLoc = new Loc(row + direction, col); var currentLoc = new Loc(row, col); if (!currentBoard.IsOccupied(newLoc)) { yield return currentBoard.WithNewLocation(currentLoc, newLoc); } }
public override IEnumerable<Loc> TilesCovered(Board currentBoard, byte row, byte col) { for (sbyte i = -1; i < 2; i++) { for (sbyte j = -1; j < 2; j++) { if (row + i < 0 || row + i > 7) continue; if (col + j < 0 || col + j > 7) continue; var loc = new Loc((byte)(row + i), (byte)(col + j)); if (!currentBoard.IsOccupied(loc, IsWhite)) { yield return loc; } } } }
public override IEnumerable <Board> PossibleMoves(Board currentBoard, byte row, byte col) { var direction = -1; if (IsWhite) { direction = 1; } if (row + direction < 0 || row + direction > 7) { yield break; } var newLoc = new Loc(row + direction, col); var currentLoc = new Loc(row, col); if (!currentBoard.IsOccupied(newLoc)) { yield return(currentBoard.WithNewLocation(currentLoc, newLoc)); } }
public override IEnumerable <Loc> TilesCovered(Board currentBoard, byte row, byte col) { for (sbyte i = -1; i < 2; i++) { for (sbyte j = -1; j < 2; j++) { if (row + i < 0 || row + i > 7) { continue; } if (col + j < 0 || col + j > 7) { continue; } var loc = new Loc((byte)(row + i), (byte)(col + j)); if (!currentBoard.IsOccupied(loc, IsWhite)) { yield return(loc); } } } }
public static IEnumerable<Loc> _TilesCovered(Board currentBoard, byte row, byte col) { var covered = new List<Loc>(); for (int i = 1; i < 8; i++) { var loc = new Loc(row + i, col); if (!Board.InsideBoard(loc)) break; covered.Add(loc); if (currentBoard.IsOccupied(loc)) break; } for (int i = 1; i < 8; i++) { var loc = new Loc(row - i, col); if (!Board.InsideBoard(loc)) break; covered.Add(loc); if (currentBoard.IsOccupied(loc)) break; } for (int i = 1; i < 8; i++) { var loc = new Loc(row, col + i); if (!Board.InsideBoard(loc)) break; covered.Add(loc); if (currentBoard.IsOccupied(loc)) break; } for (int i = 1; i < 8; i++) { var loc = new Loc(row, col - i); if (!Board.InsideBoard(loc)) break; covered.Add(loc); if (currentBoard.IsOccupied(loc)) break; } return covered; }