private IEnumerable <int> GetQueenMoves(IPosition state, int from)
        {
            foreach (var direction in RookMoves[from])
            {
                foreach (var i in direction)
                {
                    if (state.DiskAt(i, 0) != Disk.None)
                    {
                        yield return(i);

                        break;
                    }
                }
            }

            foreach (var direction in BishopMoves[from])
            {
                foreach (var i in direction)
                {
                    if (state.DiskAt(i, 0) != Disk.None)
                    {
                        yield return(i);

                        break;
                    }
                }
            }
        }
 private IEnumerable <int> GetKnightMoves(IPosition state, int from)
 {
     foreach (var i in KnightMoves[from])
     {
         if (state.DiskAt(i, 0) != Disk.None)
         {
             yield return(i);
         }
     }
 }
Beispiel #3
0
        private static void PrintPosition(IPosition position)
        {
            Console.WriteLine();

            for (int i = 0; i < Constants.BoardSize; i++)
            {
                for (int j = 0; j < Constants.BoardSize; j++)
                {
                    for (int k = 0; k < 10; k++)
                    {
                        switch (position.DiskAt(Constants.BoardSize * i + j, k))
                        {
                        case Disk.None:
                            Console.Write(string.Format(" {0}", "."));
                            break;

                        case Disk.Red:
                            Console.ForegroundColor = ConsoleColor.Red;
                            Console.Write(string.Format(" {0}", "|"));
                            break;

                        case Disk.Yellow:
                            Console.ForegroundColor = ConsoleColor.Yellow;
                            Console.Write(string.Format(" {0}", "|"));
                            break;

                        default:
                            throw new ArgumentOutOfRangeException($"Unknown disk type: {position.DiskAt(Constants.BoardSize * i + j, k)}");
                        }
                        Console.ForegroundColor = ConsoleColor.White;
                    }
                    Console.Write(" ");
                }
                Console.WriteLine();
            }
            Console.WriteLine();
        }