public static void AddAllPossibleBishopMoves(List <FastMove> moves, FastIndex start, Team team, FastBoardNode boardNode, bool generateQuiet = true)
 {
     FastIndex[][] bishopRays = PrecomputedMoveData.bishopRays[start.ToByte()];
     foreach (var ray in bishopRays)
     {
         AddRayMoves(moves, start, team, boardNode, ray, generateQuiet);
     }
 }
 public static void AddAllPossibleRookDirectionalMoves(List <FastMove> moves, FastIndex start, Team team, FastBoardNode boardNode, bool generateQuiet = true)
 {
     FastIndex[][] rookRays = PrecomputedMoveData.rookRays[start.ToByte()];
     foreach (var directionalIndexes in rookRays)
     {
         AddRayMoves(moves, start, team, boardNode, directionalIndexes, generateQuiet);
     }
 }
Esempio n. 3
0
 public void IndexByteAllValuesTest()
 {
     for (byte i = 0; i < 85; i++)
     {
         FastIndex index = FastIndex.FromByte(i);
         Assert.AreEqual(i, index.ToByte());
     }
 }
 public static void AddAllPossibleKnightMoves(List <FastMove> moves, FastIndex start, Team team, FastBoardNode boardNode, bool generateQuiet = true)
 {
     foreach (var target in PrecomputedMoveData.knightMoves[start.ToByte()])
     {
         if (boardNode.TryGetPiece(target, out (Team team, FastPiece piece)occupier))
         {
             if (occupier.team != team)
             {
                 moves.Add(new FastMove(start, target, MoveType.Attack));
             }
         }
         else if (generateQuiet)
         {
             moves.Add(new FastMove(start, target, MoveType.Move));
         }
     }
 }
    public static void AddAllPossibleRookMoves(List <FastMove> moves, FastIndex start, Team team, FastBoardNode boardNode, bool generateQuiet = true)
    {
        AddAllPossibleRookDirectionalMoves(moves, start, team, boardNode, generateQuiet);

        if (generateQuiet)
        {
            foreach (var target in PrecomputedMoveData.kingMoves[start.ToByte()])
            {
                if (boardNode.TryGetPiece(target, out (Team team, FastPiece piece)occupier))
                {
                    if (occupier.team == team && Contains(DefendableTypes, occupier.piece))
                    {
                        moves.Add(new FastMove(start, target, MoveType.Defend));
                    }
                }
            }
        }
    }