I have been studying C#, and I am trying to model the Tic Tac Toe game. Is my program reasonable or is there anything I need to improve?
enum Result
{
None,
Win,
Draw
}
public class TicTacToe
{
static char[] board = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
char player = 'O';
Result result = Result.None;
public void PlayGame()
{
Intro();
do
{
Console.Clear();
Console.WriteLine("Player 1 : O Player 2 : X");
DrawBoard();
Console.WriteLine($"\nPlayer {player}'s Turn \nPlease Enter the empty number");
label:
int choice = 0;
while (!int.TryParse(Console.ReadLine(), out choice))
{
Console.WriteLine("Enter the num please");
}
if (choice >= 10)
{
Console.WriteLine("Please enter btw 1 - 9");
goto label;
}
if (board[choice] != 'X' && board[choice] != 'O')
{
board[choice] = player;
ChangeTurn();
}
CheckWin();
} while (result != Result.Draw && result != Result.Win);
Console.Clear();
DrawBoard();
GameResult();
Console.ReadKey();
}
void ChangeTurn()
{
if (player == 'X')
player = 'O';
else if (player == 'O')
player = 'X';
}
void GameResult()
{
if (result == Result.Win)
{
ChangeTurn();
Console.WriteLine("Player {0} has won", player);
}
else if(result == Result.Draw)
{
Console.WriteLine("Draw");
}
Console.ReadLine();
}
void Intro()
{
Console.WriteLine("Welcome to TieTacToe");
Console.WriteLine("Press any Key to continue");
Console.ReadKey();
Console.Clear();
}
void DrawBoard()
{
int x = 1;
Console.WriteLine();
for (int row = 0; row < 3; row++)
{
Console.Write("| ");
for (int col = 0; col < 3; col++)
{
Console.Write(board[x]);
Console.Write(" | ");
x++;
}
Console.WriteLine();
}
}
void CheckWin()
{
// horzontial
if (board[1] == board[2] && board[2] == board[3])
{
result = Result.Win;
}
else if (board[4] == board[5] && board[5] == board[6])
{
result = Result.Win;
}
else if (board[7] == board[8] && board[8] == board[9])
{
result = Result.Win;
}
// vertical
else if (board[1] == board[4] && board[4] == board[7])
{
result = Result.Win;
}
else if (board[2] == board[5] && board[5] == board[8])
{
result = Result.Win;
}
else if (board[3] == board[6] && board[6] == board[9])
{
result = Result.Win;
}
// X
else if (board[1] == board[5] && board[5] == board[9])
{
result = Result.Win;
}
else if (board[3] == board[5] && board[5] == board[7])
{
result = Result.Win;
}
else if (board[1] != '1' && board[2] != '2' && board[3] != '3' && board[4] != '4' && board[5] != '5' && board[6] != '6' && board[7] != '7' && board[8] != '8' && board[9] != '9')
{
result = Result.Draw;
}
else
{
result = Result.None;
}
}
}