Skip to main content

Tic-Tac-Toe Game Design


Tic - Tac - Toe Game Design

Algorithm:

  1. Take a 2 D Array of size 3X3 initialized to NULL value.
  2. Take position for input. Input should be alter automatically as input taken one by one.
  3. count number of X and O in the Array
  4. if any count of X or O is equal to 3 then go to step 5
  5. check continuity of X or O row-wise, if found go to step 10
  6.  check continuity of X or O column-wise, if found go to step 10
  7. check continuity of X or O in Diagonal or Counter Diagonal wise, if found go to step 10
  8. if total input is less than 9 go to step 2
  9. Conclude:: Totally messed up..... go to Step 11
  10. Display the Owner.....
  11. 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]);
                }
            }
   

It is a simple and basic logic design of the game named "Tic-Tac-Toe".

Comments

Popular posts from this blog

Day of Week according to Date

We have 7 days in a week. And the first Day of the Date System is Sunday . And it should be. So, 01.01.0001, i.e., First Date of Christ was Sunday. We just number the days as follows. 0 = Sunday 1 = Monday 2 = Tuesday 3 = Wednessday 4 = Thursday 5 = Friday 6 = Saturday So, we can handle every day by the reminder of 7. Cause, u just see, after every 7 days the same day is repeated. Then, lets a rough Calculation. 01/01/0001 => Sunday = 0 Now, we just try to find out the day on 1st January on next year, i.e., 01/01/0002 0001 has 365 days. So, after 365 days which day will come? To find out the answer of this question we have to perform following calculation. 7 ) 365 ( 52 35 ----- 15 14 ---- 1 The reminder is 1, i.e.,Monday. But, using this method, it is very critical to find out the day of 1st January of 1988. So, we have an another idea. Find out how many Leap years are present before current year. Suppose it is L . So, L = y/4 If Current year is...

IntArray Class Definition:: It can hold an array of Integer with Diffrent Size

A Class named ' intarray ' which can store an integer array of different size. This Class contains:: O Constructor with deafault argument value At the time of Object creation if array size is missing then An array of size 0 will be created. O Copy Constructor This Constructor is used to create a new Object from an existing Object. O Overloaded Operator = This operator is overloaded to assign an intarray object into another object, simply as two integer variables can be made. O Overloading Operator [ ] As array element can be reffered by its position declaring in Subscript operator ( [ ] ), here every element of an object array can be reffered by [ ] operator. O Overloading Operator >> This is an input operator . Here we can take input to a object simply by this line cin >> a; . Here a is an intarray object. O Overloading Operator This is an output operator . Here we can get the output of an intarray object by this line cout . Here a is an intarray ob...