Tic - Tac - Toe Game Design
Algorithm:
- Take a 2 D Array of size 3X3 initialized to NULL value.
- Take position for input. Input should be alter automatically as input taken one by one.
- count number of X and O in the Array
- if any count of X or O is equal to 3 then go to step 5
- check continuity of X or O row-wise, if found go to step 10
- check continuity of X or O column-wise, if found go to step 10
- check continuity of X or O in Diagonal or Counter Diagonal wise, if found go to step 10
- if total input is less than 9 go to step 2
- Conclude:: Totally messed up..... go to Step 11
- Display the Owner.....
- The End
Program Design (in JAVA):
import java.io.*;
class Game
{
public static void main (String args[]) throws IOException
{
BufferedReader inp=new BufferedReader (new InputStreamReader (System.in));
int z=0;
int flag=0;
int xcount=0, ocount=0;
char game[][]=new char[3][3];
char ch;
int i,j;
// Initialization of game Array
for(i=0;i<=2;i++)
{
for(j=0;j<=2;j++)
{
game[i][j]=' ';
}
}
do{
// Display Player's Board
System.out.println(game[0][0]+" | "+game[0][1]+" | "+game[0][2]);
System.out.println("- + - + -");
System.out.println(game[1][0]+" | "+game[1][1]+" | "+game[1][2]);
System.out.println("- + - + -");
System.out.println(game[2][0]+" | "+game[2][1]+" | "+game[2][2]);
// Take Input
if(z%2==0)
{
System.out.println("Position for O:: ");
ch='O';
}
else
{
System.out.println("Position for X:: ");
ch='X';
}
System.out.println("Input row::");
int r=Integer.parseInt(inp.readLine ());
System.out.println("Input column::");
int c=Integer.parseInt(inp.readLine ());
if(game[r][c]!=' ')
{
z--;
System.out.println("Don't Cheat!!!");
}
else
game[r][c]=ch;
// Counting No. of Same input
xcount=0;
ocount=0;
for(i=0;i<=2;i++)
for(j=0; j<=2; j++)
{
if(game[i][j]=='O')
ocount=ocount+1;
if(game[i][j]=='X')
xcount=xcount+1;
}
if(xcount>2 || ocount>2)
{
// Row-wise checking
for(i=0;i<=2; i++)
{ xcount=0;
ocount=0;
for(j=0; j<=2; j++)
{
if(game[i][j]=='O')
ocount+=1;
if(game[i][j]=='X')
xcount+=1;
}
if(xcount==3)
{
System.out.println("X has won");
flag=1;
}
if(ocount==3)
{
System.out.println("O has won");
flag=1;
}
if(flag==1)
break;
}
// Column-wise checking
for(i=0;i<=2; i++)
{ xcount=0;
ocount=0;
for(j=0; j<=2; j++)
{
if(game[j][i]=='O')
ocount+=1;
if(game[j][i]=='X')
xcount+=1;
}
if(xcount==3)
{
System.out.println("X has won");
flag=1;
}
if(ocount==3)
{
System.out.println("O has won");
flag=1;
}
if(flag==1)
break;
}
// Fwd Diagon checking
xcount=0;
ocount=0;
for(i=0;i<=2; i++)
{
if(game[i][i]=='O')
ocount+=1;
if(game[i][i]=='X')
xcount+=1;
}
if(xcount==3)
{
System.out.println("X has won");
flag=1;
}
if(ocount==3)
{
System.out.println("O has won");
flag=1;
}
if(flag==1)
break;
// Rvs Diagon checking
xcount=0;
ocount=0;
for(i=0;i<=2; i++)
{
if(game[i][2-i]=='O')
ocount+=1;
if(game[i][2-i]=='X')
xcount+=1;
}
if(xcount==3)
{
System.out.println("X has won");
flag=1;
break;
}
if(ocount==3)
{
System.out.println("O has won");
flag=1;
break;
}
}
if(xcount==3 || ocount==3)
break;
z=z+1;
} while(z<9);
if(flag==0)
System.out.println("Sorry !!! None has won!!!");
// Display Player's Board
System.out.println(game[0][0]+" | "+game[0][1]+" | "+game[0][2]);
System.out.println("- + - + -");
System.out.println(game[1][0]+" | "+game[1][1]+" | "+game[1][2]);
System.out.println("- + - + -");
System.out.println(game[2][0]+" | "+game[2][1]+" | "+game[2][2]);
}
}
System.out.println(game[0][0]+" | "+game[0][1]+" | "+game[0][2]);
System.out.println("- + - + -");
System.out.println(game[1][0]+" | "+game[1][1]+" | "+game[1][2]);
System.out.println("- + - + -");
System.out.println(game[2][0]+" | "+game[2][1]+" | "+game[2][2]);
}
}
It is a simple and basic logic design of the game named "Tic-Tac-Toe".
Comments