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(" "); }
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."); } } }
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"); }