Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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();
        }
Esempio n. 3
0
        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);
        }