コード例 #1
0
ファイル: Game.cs プロジェクト: jingram3/tictactoe-ai
 public void start()
 {
     int winner = 0;
     CPUPlayer cpu = null;
     if(numPlayers == 1)
         cpu = new CPUPlayer (cpuPlayer);
     while (winner == 0) {
         board.print ();
         Console.WriteLine (String.Format ("Player{0} ({1}'s) turn", turn+1, pieces[turn]));
         int move;
         if (numPlayers == 1 && turn == cpuPlayer) { //cpu's turn
             move = cpu.makeMove (board);
         } else {
             Console.Write ("Enter position 0-8: ");
             move = int.Parse (Console.ReadLine ()); //get move
         }
         while (move < 0 || move > 8 || !board.makeMove (move, pieces[turn])) { //invalid move
             Console.Write ("Invalid move.\nEnter position 0-8: ");
             move = int.Parse (Console.ReadLine ()); //get move again
         }
         numMoves++;
         winner = determineWinner ();
         turn ^= 1; //flip bit
     }
     Console.Write ("Game Over. ");
     if (winner == 3)
         Console.WriteLine ("Tie game!");
     else
         Console.WriteLine (String.Format ("Player{0} has won!", winner));
     board.print ();
 }
コード例 #2
0
        static void Main(string[] args)
        {
            var    field   = new Field();
            Player player1 = new HumanPlayer('X');
            Player player2 = new CPUPlayer('O');

            Console.WriteLine(field);

            var players = new[] { player1, player2 };
            var player  = 0;

            while (true)
            {
                var currentPlayer = players[player];
                // "1 2" --> row = 1 a column = 2
                int row, column;
                currentPlayer.GetPlayerInput(out row, out column);

                while (row < 0 || row > 2 ||
                       column < 0 || column > 2 ||
                       field.GetField(row, column) != ' ')
                {
                    currentPlayer.GetPlayerInput(out row, out column);
                }

                field.SetField(row, column, currentPlayer.C);

                Console.WriteLine(field);

                player = player == 0 ? 1 : 0;

                var winner = WinChecker.Check(field.ToCharTable());
                if (winner != -1)
                {
                    Console.WriteLine();
                    Console.WriteLine($"The winner is: {(winner == 0 ? player1.C : player2.C)}");
                    Console.WriteLine("Congratulations!!!");
                    Console.WriteLine("Do you wish to play again? (y - yes, n - no)");
                    var input = Console.ReadLine();
                    if (input != "y")
                    {
                        break;
                    }

                    field.Reset();
                    Console.WriteLine(field);
                    player = 0;
                }
            }
        }
コード例 #3
0
        public void start()
        {
            int       winner = 0;
            CPUPlayer cpu    = null;

            if (numPlayers == 1)
            {
                cpu = new CPUPlayer(cpuPlayer);
            }
            while (winner == 0)
            {
                board.print();
                Console.WriteLine(String.Format("Player{0} ({1}'s) turn", turn + 1, pieces[turn]));
                int move;
                if (numPlayers == 1 && turn == cpuPlayer)                   //cpu's turn
                {
                    move = cpu.makeMove(board);
                }
                else
                {
                    Console.Write("Enter position 0-8: ");
                    move = int.Parse(Console.ReadLine());                           //get move
                }
                while (move < 0 || move > 8 || !board.makeMove(move, pieces[turn])) //invalid move
                {
                    Console.Write("Invalid move.\nEnter position 0-8: ");
                    move = int.Parse(Console.ReadLine());                       //get move again
                }
                numMoves++;
                winner = determineWinner();
                turn  ^= 1;                //flip bit
            }
            Console.Write("Game Over. ");
            if (winner == 3)
            {
                Console.WriteLine("Tie game!");
            }
            else
            {
                Console.WriteLine(String.Format("Player{0} has won!", winner));
            }
            board.print();
        }