This article provides a sample TIC TAC TOE 2 player game in C#.

Introduction

Tic Tac Toe is a simple game that, if played optimally by both the players, will always result in a tie. However, many players (especially the younger children) still enjoy it, and Tic Tac Toe can be made significantly more complex by increasing the size of the board.

It is a two player game. The goal of Tic Tac Toe is to be the first player to get three in a row on a 3x3 grid, or you can increase the number of boards.

Diagram

Tic Tac Toe game

Global variables

// here we define variables

int xWins = 0;

int yWins = 0;

int d = 0;

Button[] b = new Button[9];

Form load event

//Here form will be loaded like a program load in to memory

private void Form1_Load(object sender, EventArgs e)

{

// here is the loop of 9 iterations because we want 3x3 board and then
//putting in theflowLayoutPanel

for (int i = 0; i < 9; i++)

{

b[i] = new Button();

b[i].Width = 100;

b[i].Height = 100;

b[i].Click += new EventHandler(Form1_Click);

flowLayoutPanel1.Controls.Add(b[i]);

}

}

Reset Function

/// Reset is function who clear the board.

/// </summary>

void reset()

{

for (int i = 0; i < 9; i++)

{

b[i].Enabled = true;

b[i].Text = "";

draw = 0;

}

}

Form click event

void Form1_Click(object sender, EventArgs e)

{

Button bt = (Button)sender;

if (flag == 0)

{

bt.Text = "X";

label10.Text = "O";

flag = 1;

}

else

{

bt.Text = "O";

label10.Text = "X";

flag = 0;

}

bt.Enabled = false;

draw++;

//call check funtion for conditions

check();

if (draw == 9)

{

MessageBox.Show("Game Draw");

d++;

label6.Text = d.ToString();

reset();

}

}

Check Function

void check() // Here is the check() function in which conditions will full fill.

{

//FOr Rows

if (b[0].Text == b[1].Text && b[1].Text == b[2].Text && b[0].Text!="")

{

MessageBox.Show(b[0].Text + " Wins");

if (b[0].Text == "X")

{

xWins++;

label3.Text = xWins.ToString();

}

else

{

yWins++;

label4.Text = yWins.ToString();

}

reset();

}

if (b[3].Text == b[4].Text && b[4].Text == b[5].Text && b[3].Text != "")

{

MessageBox.Show(b[3].Text + " Wins");

if (b[3].Text == "X")

{

xWins++;

label3.Text = xWins.ToString();

}

else

{

yWins++;

label4.Text = yWins.ToString();

}

reset();

}

if (b[6].Text == b[7].Text && b[7].Text == b[8].Text && b[6].Text != "")

{

MessageBox.Show(b[6].Text + " Wins");

if (b[6].Text == "X")

{

xWins++;

label3.Text = xWins.ToString();

}

else

{

yWins++;

label4.Text = yWins.ToString();

}

reset();

}

//For Coloums

if (b[0].Text == b[3].Text && b[3].Text == b[6].Text && b[0].Text != "")

{

MessageBox.Show(b[0].Text + " Wins");

if (b[0].Text == "X")

{

xWins++;

label3.Text = xWins.ToString();

}

else

{

yWins++;

label4.Text = yWins.ToString();

}

reset();

}

if (b[1].Text == b[4].Text && b[4].Text == b[7].Text && b[1].Text != "")

{

MessageBox.Show(b[1].Text + " Wins");

if (b[1].Text == "X")

{

xWins++;

label3.Text = xWins.ToString();

}

else

{

yWins++;

label4.Text = yWins.ToString();

}

reset();

}

if (b[2].Text == b[5].Text && b[5].Text == b[8].Text && b[2].Text != "")

{

MessageBox.Show(b[2].Text + " Wins");

if (b[2].Text == "X")

{

xWins++;

label3.Text = xWins.ToString();

}

else

{

yWins++;

label4.Text = yWins.ToString();

}

reset();

}

//For Diagnols

if (b[0].Text == b[4].Text && b[4].Text == b[8].Text && b[0].Text != "")

{

MessageBox.Show(b[0].Text + " Wins");

if (b[0].Text == "X")

{

xWins++;

label3.Text = xWins.ToString();

}

else

{

yWins++;

label4.Text = yWins.ToString();

}

reset();

}

if (b[2].Text == b[4].Text && b[4].Text == b[6].Text && b[2].Text != "")

{

MessageBox.Show(b[2].Text + " Wins");

if (b[2].Text == "X")

{

xWins++;

label3.Text = xWins.ToString();

}

else

{

yWins++;

label4.Text = yWins.ToString();

}

reset();

}

}

I have also attached the source code so you can download it and run it on your PC.