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