Beispiel #1
0
        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);
        }
Beispiel #2
0
 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);
     }
 }
Beispiel #3
0
        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));
                }
            }
        }
Beispiel #4
0
        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);
            }
        }
Beispiel #5
0
 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;
             }
         }
     }
 }
Beispiel #6
0
        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));
            }
        }
Beispiel #7
0
 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);
             }
         }
     }
 }
Beispiel #8
0
        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;
        }