12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- using System.Diagnostics;
- using FourInARow;
- using MinMaxAB;
- internal class Program
- {
- const int depth = 9;
- const bool maxPlayer = false;
- const int alpha = int.MinValue;
- const int beta = int.MaxValue;
- private static void Main()
- {
- var board = new GameBoard(new(7, 6));
- var minmax = new MinMaxABFourInARowBoard();
- while (true)
- {
- AiMove(board, minmax);
- HumanMove(board, minmax);
- }
- }
- private static void AiMove(GameBoard board, MinMaxABFourInARowBoard minmax)
- {
- //Console.WriteLine(board);
- Console.WriteLine("Thinking...");
- var sw = new Stopwatch();
- sw.Start();
- var move = minmax.GetBestMove(board, depth);
- sw.Stop();
- Console.WriteLine($"Decision made in {sw.Elapsed}");
- //Console.Clear();
- board.PlaceCoin(Player.Computer, move);
- Console.WriteLine($"AI Moves {move + 1}");
- //Console.WriteLine(board);
- if (board.GetWinner() == Player.Computer)
- {
- Console.WriteLine("AI Wins");
- Environment.Exit(0);
- }
- if (!board.HasEmptyColumns())
- {
- Console.WriteLine("TIE");
- Environment.Exit(0);
- }
- }
- private static void HumanMove(GameBoard board, MinMaxABFourInARowBoard minmax)
- {
- Console.WriteLine(board);
- Console.Write("Your move: ");
- GC.Collect(2, GCCollectionMode.Aggressive);
- GC.WaitForFullGCComplete();
- board.PlaceCoin(Player.Human, int.Parse(Console.ReadLine()!) - 1);
- Console.Clear();
- if (board.GetWinner() == Player.Human)
- {
- Console.WriteLine("Human Wins");
- Environment.Exit(0);
- }
- if (!board.HasEmptyColumns())
- {
- Console.WriteLine("TIE");
- Environment.Exit(0);
- }
- }
- }
|