Beispiel #1
0
        static void Main(string[] args)
        {
            bool stop = false;

            while (!stop)
            {
                bool          userFirst = false;
                TicTacToeGame game      = new TicTacToeGame();
                Console.WriteLine("Пользователь играет против компьютера, Вы хотите сделать первый ход? [y/n]");
                if (Console.ReadLine() == "y")
                {
                    userFirst = true;
                }

                Console.WriteLine("{0} играет первый", userFirst ? "Пользователь" : "Компьютер");

                while (!game.Current.IsTerminalNode())
                {
                    if (userFirst)
                    {
                        game.GetNextMoveFromUser();
                        game.ComputerMakeMove();
                    }
                    else
                    {
                        game.ComputerMakeMove();
                        game.GetNextMoveFromUser();
                    }
                }
                Console.WriteLine("Финальное поле \n" + game.Current);
                if (game.Current.RecursiveScore < -200)
                {
                    Console.WriteLine("O выиграл.");
                }
                else if (game.Current.RecursiveScore > 200)
                {
                    Console.WriteLine("X выиграл.");
                }
                else
                {
                    Console.WriteLine("Ничья.");
                }

                Console.WriteLine("Ещё раз?[y/n]");
                if (Console.ReadLine() == "n")
                {
                    stop = true;
                }
            }

            Console.WriteLine(" ");
        }
Beispiel #2
0
        static void Main(string[] args)
        {
            TicTacToeGame game = new TicTacToeGame();

            bool stop = false;

            while (!stop)
            {
                bool userFirst = false;
                game = new TicTacToeGame();
                Console.WriteLine("Play first?[y/n]");

                if (Console.ReadLine().StartsWith("y", StringComparison.InvariantCultureIgnoreCase))
                {
                    userFirst = true;
                }

                int depth = 8;


                Console.WriteLine("{0} play first", userFirst ? "User" : "Computer");

                while (!game.Current.IsTerminalNode())
                {
                    if (userFirst)
                    {
                        game.GetNextMoveFromUser();
                        game.ComputerMakeMove(depth);
                    }
                    else
                    {
                        game.ComputerMakeMove(depth);
                        game.GetNextMoveFromUser();
                    }
                }
                Console.WriteLine("The final result is \n" + game.Current);
                if (game.Current.RecursiveScore < -200)
                {
                    Console.WriteLine("O has won.");
                }
                else if (game.Current.RecursiveScore > 200)
                {
                    Console.WriteLine("X has won.");
                }
                else
                {
                    Console.WriteLine("Tie.");
                }
            }
        }
Beispiel #3
0
        static void Main(string[] args)
        {
            TicTacToeGame game = new TicTacToeGame();

            Console.WriteLine("Winning positions for playerO:");
            List <Board>  history = new List <Board>();
            Queue <Board> q       = new Queue <Board>();

            q.Enqueue(game.GetInitNode());
            int total = 0;

            while (q.Count > 0)
            {
                Board b    = q.Dequeue();
                Board next = b.FindNextMove(9);
                if (Math.Abs(b.RecursiveScore) >= 200 && next != null)
                {
                    if (b.RecursiveScore < 0 &&
                        !next.GameOver &&
                        history.Find(x => Board.IsSimilarBoard(x, b)) == null)
                    {
                        history.Add(b);
                        Console.WriteLine("[{0}] Winner is {1}:\n{2}, next move is:\n{3}", total, b.RecursiveScore < 0 ? "PlayerO" : "PlayerX", b, next);
                        total++;
                    }
                }
                else
                {
                    foreach (Board c in b.GetChildren())
                    {
                        q.Enqueue(c);
                    }
                }
            }

            bool stop = false;

            while (!stop)
            {
                bool userFirst = false;
                game = new TicTacToeGame();
                Console.WriteLine("User play against computer, Do you place the first step?[y/n]");
                if (Console.ReadLine().StartsWith("y", StringComparison.InvariantCultureIgnoreCase))
                {
                    userFirst = true;
                }

                int depth = 8;
                Console.WriteLine("Please select level:[1..8]. 1 is easiet, 8 is hardest");
                int.TryParse(Console.ReadLine(), out depth);

                Console.WriteLine("{0} play first, level={1}", userFirst ? "User" : "Computer", depth);

                while (!game.Current.IsTerminalNode())
                {
                    if (userFirst)
                    {
                        game.GetNextMoveFromUser();
                        game.ComputerMakeMove(depth);
                    }
                    else
                    {
                        game.ComputerMakeMove(depth);
                        game.GetNextMoveFromUser();
                    }
                }
                Console.WriteLine("The final result is \n" + game.Current);
                if (game.Current.RecursiveScore < -200)
                {
                    Console.WriteLine("PlayerO has won.");
                }
                else if (game.Current.RecursiveScore > 200)
                {
                    Console.WriteLine("PlayerX has won.");
                }
                else
                {
                    Console.WriteLine("It is a tie.");
                }

                Console.WriteLine("Try again?[y/n]");
                if (!Console.ReadLine().StartsWith("y", StringComparison.InvariantCultureIgnoreCase))
                {
                    stop = true;
                }
            }

            Console.WriteLine("bye");
        }