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

Class Point:: It holds co-ordinates of a point in format (x,y)

A class Named "Point" which stores the Co-ordinates of a point in (x,y) Format. This Class Contains:: O Constructor with default arguments O Copy Constructor O Function to display which Co-ordinate a Point belongs to O Function to get value of x of a point O Function to get value of y of a point O Function to get the Radious Vector (r) of a point O Function to get the Theta of a point O Overloaded Operator - to find out distance between two points O Overloaded Operator >> to take input O Overloaded operator O Destructor #include<iostream.h> #include<math.h> class point{ //Data Members int x,y; //They hold the value of X and Y co-ordinate of a Point. public: //Member Functions point(int t1=0, int t2=0) //Constructor with default arguments. { x=t1; y=t2; } point(point &t) //Copy Constructor { x=t.x; y=t.y; } int coordinate(void); //It returns the point's Co-ordinate, e.g., 1, 2, 3, or 4th. int getx(...

How to set Set-Top Box to Resume automatically to last Channel after switch on?

How to set customised automatic Resume Channel to last viewed in Set-Top Box?  Introduction In the era of Digitally fast growing life WiFi enabled smart devices and also voice controlled smart devices are trying to be companion of every human being. But, all human do not change their habit at the same time. It may be cause of mental attachment or financial limits or unwillingness or though as unnecessary. What ever the reason may be, there exists the old technology, like IR(Infrared), RF(Radio Frequency), etc. So, this article for them who are using "Un-smart" TV like me in this time of Smart World. I was searching for a solution to set my Set-top Box of Videocon DTH (controlled by a RF Remote) to resume the last viewed channel when I power on my TV anytime. Suppose, I was watching NAT-Geo and switch off my (Un-smart) TV, even switch off the plug power at board. Now, after some time / on the next day, when I switch on my TV it will directly tune to the last viewed channel, i....