Tic-Tac-Toe, is a classic game for two players, X and O, who take turns marking the spaces in a 3×3 grid. The X player usually goes first. The player who succeeds in placing three respective marks in a horizontal, vertical, or diagonal row wins the game.Below are the source code of this game which I wrote in C#.
Tic Tac Toe :
Download this project from: www.ScriptHood.com
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace TicTacToe
{
///
/// Interaction logic for MainWindow.xaml
///
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
for (int i = 0; i < 9; i++)
{
isClicked[i] = false;
}
msgBox.Text = "X starts first!";
scoreX.Text = scrX.ToString();
scoreO.Text = scrO.ToString();
}
int scrX = 0;
int scrO = 0;
bool X = true;
bool O = false;
bool signal = false;
bool[] isClicked = new bool[9];
int counter = 0;
string[] array={"0","0","0","0","0","0","0","0","0"};
private void winnerX()
{
MessageBox.Show("Winner is X", "Winner", MessageBoxButton.OK, MessageBoxImage.Information);
msgBox.Text = "Winner is X. Restart game !";
scrX++;
scoreX.Text = scrX.ToString();
}
private void winnerO()
{
MessageBox.Show("Winner is O","Winner",MessageBoxButton.OK,MessageBoxImage.Information);
msgBox.Text = "Winner is O. Restart game !";
scrO++;
scoreO.Text = scrO.ToString();
}
private void isDrawBattle()
{
if ((counter == 9) && !(CheckForWin()))
{
MessageBox.Show("Draw battle", "Winner", MessageBoxButton.OK, MessageBoxImage.Information);
msgBox.Text = "Draw battle";
}
}
private void button1_Click(object sender, RoutedEventArgs e)
{
int button = 0;
if (signal)
{
return;
}
if (isClicked[0])
{
return;
}
if (X && (counter < 9))
{
msgBox.Text="Now its X's turn !";
button1.Content = "X";
array[button] = "x";
X = false;
O = true;
if (!signal)
{
msgBox.Text = "Now its O's turn !";
}
}
else if (O && (counter < 9))
{
msgBox.Text = "Not its O's turn !";
button1.Content = "O";
array[button] = "o";
O = false;
X = true;
if (!signal)
{
msgBox.Text = "Now its X's turn !";
}
}
else return;
counter++;
isClicked[0] = true;
if (CheckForWin())
{
return;
}
isDrawBattle();
}
private void button2_Click(object sender, RoutedEventArgs e)
{
int button = 1;
if (signal)
{
return;
}
if (isClicked[1])
{
return;
}
if (X && (counter < 9))
{
msgBox.Text = "Now its X's turn !";
button2.Content = "X";
array[button] = "x";
X = false;
O = true;
if (!signal)
{
msgBox.Text = "Now its O's turn !";
}
}
else if (O && (counter < 9))
{
msgBox.Text = "Now its O's turn !";
button2.Content = "O";
array[button] = "o";
O = false;
X = true;
if (!signal)
{
msgBox.Text = "Now its X's turn !";
}
}
else return;
counter++;
isClicked[1] = true;
if (CheckForWin())
{
return;
}
isDrawBattle();
}
private void button3_Click(object sender, RoutedEventArgs e)
{
int button = 2;
if (signal)
{
return;
}
if (isClicked[2])
{
return;
}
if (X && (counter < 9))
{
msgBox.Text = "Now its X's turn !";
button3.Content = "X";
array[button] = "x";
X = false;
O = true;
if (!signal)
{
msgBox.Text = "Now its O's turn !";
}
}
else if (O && (counter < 9))
{
msgBox.Text = "Now its O's turn !";
button3.Content = "O";
array[button] = "o";
O = false;
X = true;
if (!signal)
{
msgBox.Text = "Now its X's turn !";
}
}
else return;
counter++;
isClicked[2] = true;
if (CheckForWin())
{
return;
}
isDrawBattle();
}
private void button4_Click(object sender, RoutedEventArgs e)
{
int button = 3;
if (signal)
{
return;
}
if (isClicked[3])
{
return;
}
if (X && (counter < 9))
{
msgBox.Text = "Now its X's turn !";
button4.Content = "X";
array[button] = "x";
X = false;
O = true;
if (!signal)
{
msgBox.Text = "Now its O's turn !";
}
}
else if (O && (counter < 9))
{
msgBox.Text = "Now its O's turn !";
button4.Content = "O";
array[button] = "o";
O = false;
X = true;
if (!signal)
{
msgBox.Text = "Now its X's turn !";
}
}
else return;
counter++;
isClicked[3] = true;
if (CheckForWin())
{
return;
}
isDrawBattle();
}
private void button5_Click(object sender, RoutedEventArgs e)
{
int button = 4;
if (signal)
{
return;
}
if (isClicked[4])
{
return;
}
if (X && (counter < 9))
{
msgBox.Text = "Now its X's turn !";
button5.Content = "X";
array[button] = "x";
X = false;
O = true;
if (!signal)
{
msgBox.Text = "Now its O's turn !";
}
}
else if (O && (counter < 9))
{
msgBox.Text = "Now its O's turn !";
button5.Content = "O";
array[button] = "o";
O = false;
X = true;
if (!signal)
{
msgBox.Text = "Now its X's turn !";
}
}
else return;
counter++;
isClicked[4] = true;
if (CheckForWin())
{
return;
}
isDrawBattle();
}
private void button6_Click(object sender, RoutedEventArgs e)
{
int button = 5;
if (signal)
{
return;
}
if (isClicked[5])
{
return;
}
if (X && (counter<9))
{
msgBox.Text = "Now its X's turn !";
button6.Content = "X";
array[button] = "x";
X = false;
O = true;
if (!signal)
{
msgBox.Text = "Now its O's turn !";
}
}
else if (O && (counter < 9))
{
msgBox.Text = "Now its O's turn !";
button6.Content = "O";
array[button] = "o";
O = false;
X = true;
if (!signal)
{
msgBox.Text = "Now its X's turn !";
}
}
else return;
counter++;
isClicked[5] = true;
if (CheckForWin())
{
return;
}
isDrawBattle();
}
private void button7_Click(object sender, RoutedEventArgs e)
{
int button = 6;
if (signal)
{
return;
}
if (isClicked[6])
{
return;
}
if (X && (counter < 9))
{
msgBox.Text = "Now its X's turn !";
button7.Content = "X";
array[button] = "x";
X = false;
O = true;
if (!signal)
{
msgBox.Text = "Now its O's turn !";
}
}
else if (O && (counter < 9))
{
msgBox.Text = "Now its O's turn !";
button7.Content = "O";
array[button] = "o";
O = false;
X = true;
if (!signal)
{
msgBox.Text = "Now its X's turn !";
}
}
else return;
counter++;
isClicked[6] = true;
if (CheckForWin())
{
return;
}
isDrawBattle();
}
private void button8_Click(object sender, RoutedEventArgs e)
{
int button = 7;
if (signal)
{
return;
}
if (isClicked[7])
{
return;
}
if (X && (counter < 9))
{
msgBox.Text = "Now its X's turn !";
button8.Content = "X";
array[button] = "x";
X = false;
O = true;
if (!signal)
{
msgBox.Text = "Now its O's turn !";
}
}
else if (O && (counter < 9))
{
msgBox.Text = "Now its O's turn !";
button8.Content = "O";
array[button] = "o";
O = false;
X = true;
if (!signal)
{
msgBox.Text = "Now its X's turn !";
}
}
else return;
counter++;
isClicked[7] = true;
if (CheckForWin())
{
return;
}
isDrawBattle();
}
private void button9_Click(object sender, RoutedEventArgs e)
{
int button = 8;
if (signal)
{
return;
}
if (isClicked[8])
{
return;
}
if (X && (counter < 9))
{
msgBox.Text = "Now its X's turn !";
button9.Content = "X";
array[button] = "x";
X = false;
O = true;
if (!signal)
{
msgBox.Text = "Now its O's turn !";
}
}
else if (O && (counter < 9))
{
msgBox.Text = "Now its O's turn !";
button9.Content = "O";
array[button] = "o";
O = false;
X = true;
if (!signal)
{
msgBox.Text = "Now its X's turn !";
}
}
else return;
counter++;
isClicked[8] = true;
if (CheckForWin())
{
return;
}
isDrawBattle();
}
private void button10_Click(object sender, RoutedEventArgs e) /*Restart*/
{
button1.Content = button2.Content = button3.Content = button4.Content = button5.Content = button6.Content = button7.Content = button8.Content = button9.Content = "";
for (int i = 0; i < 9; i++)
{
isClicked[i] = false;
}
msgBox.Text = "X starts first!";
counter = 0;
signal = false;
X = true;
O = false;
for (int i = 0; i < 9; i++)
{
array[i] = "0";
}
}
private void button11_Click(object sender, RoutedEventArgs e)
{
scrX = scrO = 0;
scoreX.Text = scrX.ToString();
scoreO.Text = scrO.ToString();
msgBox.Text = "Scores are reseted!";
}
private bool CheckForWin()
{
bool flag = false;
if ((array[0] == array[1]) && (array[0] == array[2]) && (array[1] == array[2]) && (array[0] == "x"))
{
winnerX();
flag = true;
}
else if ((array[0] == array[1]) && (array[0] == array[2]) && (array[1] == array[2]) && (array[0] == "o"))
{
winnerO();
flag = true;
}
else if ((array[3] == array[4]) && (array[3] == array[5]) && (array[4] == array[5]) && (array[3] == "x"))
{
winnerX();
flag = true;
}
else if ((array[3] == array[4]) && (array[3] == array[5]) && (array[4] == array[5]) && (array[3] == "o"))
{
winnerO();
flag = true;
}
else if ((array[6] == array[7]) && (array[6] == array[8]) && (array[7] == array[8]) && (array[6] == "x"))
{
winnerX();
flag = true;
}
else if ((array[6] == array[7]) && (array[6] == array[8]) && (array[7] == array[8]) && (array[6] == "o"))
{
winnerO();
flag = true;
}
else if ((array[0] == array[3]) && (array[0] == array[6]) && (array[3] == array[6]) && (array[0] == "x"))
{
winnerX();
flag = true;
}
else if ((array[0] == array[3]) && (array[0] == array[6]) && (array[3] == array[6]) && (array[0] == "o"))
{
winnerO();
flag = true;
}
else if ((array[1] == array[4]) && (array[1] == array[7]) && (array[4] == array[7]) && (array[1] == "x"))
{
winnerX();
flag = true;
}
else if ((array[1] == array[4]) && (array[1] == array[7]) && (array[4] == array[7]) && (array[1] == "o"))
{
winnerO();
flag = true;
}
else if ((array[2] == array[5]) && (array[2] == array[8]) && (array[5] == array[8]) && (array[2] == "x"))
{
winnerX();
flag = true;
}
else if ((array[2] == array[5]) && (array[2] == array[8]) && (array[5] == array[8]) && (array[2] == "o"))
{
winnerO();
flag = true;
}
else if ((array[0] == array[4]) && (array[0] == array[8]) && (array[4] == array[8]) && (array[0] == "x"))
{
winnerX();
flag = true;
}
else if ((array[0] == array[4]) && (array[0] == array[8]) && (array[4] == array[8]) && (array[0] == "o"))
{
winnerO();
flag = true;
}
else if ((array[2] == array[4]) && (array[2] == array[6]) && (array[4] == array[6]) && (array[2] == "x"))
{
winnerX();
flag = true;
}
else if ((array[2] == array[4]) && (array[2] == array[6]) && (array[4] == array[6]) && (array[2] == "o"))
{
winnerO();
flag = true;
}
signal = flag;
return flag;
}
}
}

thank you!!!
ReplyDeletewhere should be the trigger of the game should be given??? to text box or to start button????
ReplyDelete27 errors : What the hack is Content ?
ReplyDelete