private char currentPlayer;
private void InitializeBoard()
for (int i = 0; i < board.Length; i++)
private void DisplayBoard()
Console.WriteLine($" _____ _____ _____ ");
Console.WriteLine($"| | | |");
Console.WriteLine($"| {board[0]} | {board[1]} | {board[2]} |");
Console.WriteLine($"|_____|_____|_____| ");
Console.WriteLine($"| | | | ");
Console.WriteLine($"| {board[3]} | {board[4]} | {board[5]} |");
Console.WriteLine($"|_____|_____|_____| ");
Console.WriteLine($"| | | | ");
Console.WriteLine($"| {board[6]} | {board[7]} | {board[8]} |");
Console.WriteLine($"|_____|_____|_____| ");
Console.Write($"Player {currentPlayer}, select position (1-9): ");
validMove = int.TryParse(Console.ReadLine(), out move) && move >= 1 && move <= 9 && board[move - 1] == ' ';
Console.WriteLine("Wrong position! Try again!");
board[move - 1] = currentPlayer;
gameOver = CheckForWin() || CheckForTie();
currentPlayer = (currentPlayer == 'X') ? 'O' : 'X';
private bool CheckForWin()
return (board[0] == board[1] && board[1] == board[2] && board[0] != ' ') ||
(board[3] == board[4] && board[4] == board[5] && board[3] != ' ') ||
(board[6] == board[7] && board[7] == board[8] && board[6] != ' ') ||
(board[0] == board[3] && board[3] == board[6] && board[0] != ' ') ||
(board[1] == board[4] && board[4] == board[7] && board[1] != ' ') ||
(board[2] == board[5] && board[5] == board[8] && board[2] != ' ') ||
(board[0] == board[4] && board[4] == board[8] && board[0] != ' ') ||
(board[2] == board[4] && board[4] == board[6] && board[2] != ' ');
private bool CheckForTie()
foreach (char cell in board)
private void DisplayResult()
if (currentPlayer == 'X')
Console.WriteLine($"Player O has won!");
Console.WriteLine($"Player X has won!");
Console.WriteLine("The game end! It is draw!");
static void Main(string[] args)
Game_X_O game = new Game_X_O();