public static List <Board> GetSmart(int gameCount) { var boards = new List <Board>(); var startingPlayer = 1; for (int x = 0; x < gameCount; x++) { Board board = new Board(startingPlayer); //Console.WriteLine("-- Getting Smarter by Playing a New Game --"); var player = startingPlayer; var gameOver = false; do { if (player == 1) { board.Play(GetNextMove(board, 1)); } else { // Computer plays Opponent.MakeMove(boards, board); } if (board.Winner() != null) { //Console.WriteLine(board.WinnerText()); gameOver = true; } player = player * -1; } while (!gameOver); // Save this game; if (board.Winner() != null) { boards.Add(board); //board.Print(); //if (board.Winner() == -1) Console.WriteLine("I'll remember that strategy."); //if (board.Winner() == 1) Console.WriteLine("I won't make that mistake again."); } startingPlayer = startingPlayer * -1; } return(boards); }
private static void CPUMove() { Console.WriteLine("It's CPU's turn!"); board.DisplayBoard(); Point move = cpu.MakeMove(); Console.WriteLine("CPU moved to {0}", move.ToString()); Tile tile = (from t in board.Tiles where t.TileCoordinates.X == move.X && t.TileCoordinates.Y == move.Y select t).FirstOrDefault(); int index = board.Tiles.IndexOf(tile); board.Tiles[index].OccupiedBy = 'C'; cpu.Board = board; Console.ReadKey(); }
static void Main(string[] args) { Console.WriteLine("Welcome to Tic Tac Toe"); Console.WriteLine("Play by entering a coordinate (row, col): 1,1; 2,3; 3,1; etc"); Console.WriteLine(); var playAgain = true; int trainingGames = 1000; Console.WriteLine($"Just a second, I am playing {trainingGames} games just to get some strategy down..."); var boards = Opponent.GetSmart(trainingGames); var startingPlayer = 1; do { bool gameOver = false; Board board = new Board(startingPlayer); Console.WriteLine(); Console.WriteLine(); Console.WriteLine("-- New Game --"); Console.WriteLine(); var player = startingPlayer; do { if (player == 1) { board.Print(); var moveIsValid = false; int row = -1, col = -1; do { var rowcol = Console.ReadLine(); if (rowcol.StartsWith("q")) { Environment.Exit(0); } if (rowcol.Length == 3) { row = int.Parse(rowcol.Substring(0, 1)); col = int.Parse(rowcol.Substring(2, 1)); moveIsValid = board.IsValidMove(row - 1, col - 1); } } while (!moveIsValid); board.Play(row - 1, col - 1, 1); } else { // Computer plays Opponent.MakeMove(boards, board); } if (board.Winner() != null) { Console.WriteLine(board.WinnerText()); gameOver = true; } player = player * -1; } while (!gameOver); // Print final board; board.Print(); // Save this game; if (board.Winner() != null) { boards.Add(board); if (board.Winner() == -1) { Console.WriteLine("I'll remember that strategy."); } if (board.Winner() == 1) { Console.WriteLine("I won't make that mistake again."); } } startingPlayer = startingPlayer * -1; } while (playAgain); }