Write a C program to implement a TIC TAC TOE game

By | 03.12.2016

C program to implement a TIC TAC TOE game


Write a C program to implement a TIC TAC TOE game.This program is a small game Tic Tac Toe in C programming.

Here two users can play this game and after completing the game program will show the winner user name. This program is created using by Two Dimensional Array


Below is the source code of the C program to implement a TIC TAC TOE game which is successfully compiled and run on the windows system.The Output of the program is shown below.


SOURCE CODE : :


#include<stdio.h>
#include<conio.h>

void Board();
void PlayerX();
void PlayerO();
void Player_win();
void check();
int win=0,wrong_X=0,wrong_O=0,chk=0;

char name_X[30];
char name_O[30];
int pos_for_X[3][3];
int pos_for_O[3][3];
int pos_marked[3][3];

void main()
{
        int i,ch,j;
        char ans;

        do
        {

                printf("\n\t\t\t\tTIC TAC TOE");
                printf("\n\t\t\t\t");
                for(i=1;i<=11;i++)
                {

                        printf("*");
                }
                printf("\n1.Start The Game");
                printf("\n2.Quit The Game");
                printf("\nEnter your choice(1-2) : ");
                scanf("%d",&ch);
                switch(ch)
                {
                        case 1:
                                chk=0;
                                win=0;
                                for(i=1;i<=3;i++)
                                {
                                        for(j=1;j<=3;j++)
                                        {
                                                pos_for_X[i][j]=0;
                                                pos_for_O[i][j]=0;
                                                pos_marked[i][j]=0;
                                        }
                                }
                                printf("\n\n");

                                printf("\nEnter the name of the player playing for \'X\': ");
                                fflush(stdin);
                                gets(name_X);
                                printf("\nEnter the name of the player playing for \'O\': ");
                                fflush(stdin);
                                gets(name_O);
                                Board();
                                for(;;)
                                {
                                        if(win==1)
                                                break;
                                        check();
                                        if(chk==9)
                                        {
                                                printf("\n\t\t\tMATCH DRAWS!!");
                                                printf("\nPress any key....");
                                                break;
                                        }
                                        else
                                                chk=0;
                                        printf("\nTURN FOR %s:",name_X);
                                        PlayerX();
                                        do
                                        {
                                                if(wrong_X!=1)
                                                        break;
                                                wrong_X=0;
                                                printf("\nTURN FOR %s:",name_X);
                                                PlayerX();
                                        }while(wrong_X==1);
                                        check();
                                        if(chk==9)
                                        {
                                                printf("\n\t\t\tMATCH DRAWS");
                                                printf("\nPress any key....");
                                                break;
                                        }
                                        else
                                                chk=0;
                                        printf("\nTURN FOR %s:",name_O);
                                        PlayerO();
                                        do
                                        {
                                                if(wrong_O!=1)
                                                        break;
                                                wrong_O=0;
                                                printf("\nTURN FOR %s:",name_O);
                                                PlayerO();
                                        }while(wrong_O==1);

                                        }
                                Board();
                                if(win!=1)
                                {
                                        printf("\n\t\t\tMATCH DRAWS!!");
                                        printf("\nPress any key.......");
                                }

                                break;
                        case 2:
                                printf("\n\n\n\t\t\tThank You For Playing The Game.");
                                printf("\n\t\t\t###############################");

                                exit(1);
                                break;
                }
                printf("\nWant To Play(Y/N) ? ");
                fflush(stdin);
                scanf("%c",&ans);
        }while(ans=='y' || ans=='Y');
}


void Board()
{
        int i,j;

        printf("\n\t\t\t\tTIC TAC TOE BOARD");
        printf("\n\t\t\t\t*****************");
        printf("\n\n\n");
        printf("\n\t\t\t    1\t      2\t        3");
        for(i=1;i<=3;i++)
        {
                printf("\n \t\t\t _____________________________");
                printf("\n \t\t\t?\t  ?\t   ?\t     ?");
                printf("\n\t\t%d\t",i);
                for(j=1;j<=3;j++)
                {

                        if(pos_for_X[i][j]==1)
                        {
                                printf("    X");
                                printf("     ");
                        }
                        else if(pos_for_O[i][j]==1)
                        {
                                printf("    O");
                                printf("     ");
                        }
                        else
                        {
                                printf("          ");
                                continue;
                        }
                }
                printf("\n\t\t\t?\t  ?\t   ?\t     ?");
        }
        printf("\n\t\t\t------------------------------");
        Player_win();
}


void PlayerX()
{
        int row,col;
        if(win==1)
                return;
        printf("\nEnter the row no. : ");
        fflush(stdin);
        scanf("%d",&row);
        printf("Enter the column no. : ");
        fflush(stdin);
        scanf("%d",&col);
        if(pos_marked[row][col]==1 || row<1 || row>3 || col<1 || col>3)
        {
                printf("\nWRONG POSITION!! Press any key.....");
                wrong_X=1;

                Board();
        }
        else
        {
                pos_for_X[row][col]=1;
                pos_marked[row][col]=1;
                Board();
        }
}
void PlayerO()
{
        int row,col;
        if(win==1)
                return;
        printf("\nEnter the row no. : ");
        scanf("%d",&row);
        printf("Enter the column no. : ");
        scanf("%d",&col);
        if(pos_marked[row][col]==1 || row<1 || row>3 || col<1 || col>3)
        {
                printf("\nWRONG POSITION!! Press any key....");
                wrong_O=1;

                Board();
        }
        else
        {
                pos_for_O[row][col]=1;
                pos_marked[row][col]=1;
                Board();
        }
}
void Player_win()
{
        int i;
        for(i=1;i<=3;i++)
        {
                if(pos_for_X[i][1]==1 && pos_for_X[i][2]==1 && pos_for_X[i][3]==1)
                {
                        win=1;
                        printf("\n\nRESULT: %s wins!!",name_X);
                        printf("\nPress any key............");
                        return;
                }
        }
        for(i=1;i<=3;i++)
        {
                if(pos_for_X[1][i]==1 && pos_for_X[2][i]==1 && pos_for_X[3][i]==1)
                {
                        win=1;
                        printf("\n\nRESULT: %s wins!!",name_X);
                        printf("\nPress any key............");
                        return;
                }
        }
        if(pos_for_X[1][1]==1 && pos_for_X[2][2]==1 && pos_for_X[3][3]==1)
        {
                win=1;
                printf("\n\nRESULTL: %s wins!!",name_X);
                printf("\nPress any key......");
                return;
        }
        else if(pos_for_X[1][3]==1 && pos_for_X[2][2]==1 &&
pos_for_X[3][1]==1)
        {
                win=1;
                printf("\n\nRESULT: %s wins!!",name_X);
                printf("\nPress any key.....");
                return;
        }

        for(i=1;i<=3;i++)
        {
                if(pos_for_O[i][1]==1 && pos_for_O[i][2]==1 && pos_for_O[i][3]==1)
                {
                        win=1;
                        printf("\n\nRESULT: %s wins!!",name_O);
                        printf("\nPress any key.....");
                        return;
                }
        }
        for(i=1;i<=3;i++)
        {
                if(pos_for_O[1][i]==1 && pos_for_O[2][i]==1 && pos_for_O[3][i]==1)
                {
                        win=1;
                        printf("\n\nRESULT: %s wins!!",name_O);
                        printf("\nPress any key.....");
                        return;
                }
        }
        if(pos_for_O[1][1]==1 && pos_for_O[2][2]==1 && pos_for_O[3][3]==1)
        {
                win=1;
                printf("\n\nRESULT: %s wins!!",name_O);
                printf("\nPress any key.....");
                return;
        }
        else if(pos_for_O[1][3]==1 && pos_for_O[2][2]==1 &&
pos_for_O[3][1]==1)
        {
                win=1;
                printf("\n\nRESULT: %s wins!!",name_O);
                printf("\nPress any key.....");
                return;
        }
}
void check()
{
        int i,j;
        for(i=1;i<=3;i++)
        {
                for(j=1;j<=3;j++)
                {
                        if(pos_marked[i][j]==1)
                                chk++;
                        else
                                continue;
                }
        }
}

Also Read : : Write a C program to perform First Come First Serve Algorithm


OUTPUT : :


TIC TAC TOE
                                ***********
1.Start The Game
2.Quit The Game
Enter your choice(1-2) : 1



Enter the name of the player playing for 'X': John Smith

Enter the name of the player playing for 'O': Steve

                                TIC TAC TOE BOARD
                                *****************



                            1         2         3
                         _____________________________
                        ?         ?        ?         ?
                1
                        ?         ?        ?         ?
                         _____________________________
                        ?         ?        ?         ?
                2
                        ?         ?        ?         ?
                         _____________________________
                        ?         ?        ?         ?
                3
                        ?         ?        ?         ?
                        ------------------------------
TURN FOR John Smith:
Enter the row no. : 2
Enter the column no. : 2

                                TIC TAC TOE BOARD
                                *****************



                            1         2         3
                         _____________________________
                        ?         ?        ?         ?
                1
                        ?         ?        ?         ?
                         _____________________________
                        ?         ?        ?         ?
                2                     X
                        ?         ?        ?         ?
                         _____________________________
                        ?         ?        ?         ?
                3
                        ?         ?        ?         ?
                        ------------------------------
TURN FOR Steve:
Enter the row no. : 3
Enter the column no. : 3

                                TIC TAC TOE BOARD
                                *****************



                            1         2         3
                         _____________________________
                        ?         ?        ?         ?
                1
                        ?         ?        ?         ?
                         _____________________________
                        ?         ?        ?         ?
                2                     X
                        ?         ?        ?         ?
                         _____________________________
                        ?         ?        ?         ?
                3                               O
                        ?         ?        ?         ?
                        ------------------------------
TURN FOR John Smith:
Enter the row no. : 1
Enter the column no. : 3

                                TIC TAC TOE BOARD
                                *****************



                            1         2         3
                         _____________________________
                        ?         ?        ?         ?
                1                               X
                        ?         ?        ?         ?
                         _____________________________
                        ?         ?        ?         ?
                2                     X
                        ?         ?        ?         ?
                         _____________________________
                        ?         ?        ?         ?
                3                               O
                        ?         ?        ?         ?
                        ------------------------------
TURN FOR Steve:
Enter the row no. : 3
Enter the column no. : 1

                                TIC TAC TOE BOARD
                                *****************



                            1         2         3
                         _____________________________
                        ?         ?        ?         ?
                1                               X
                        ?         ?        ?         ?
                         _____________________________
                        ?         ?        ?         ?
                2                     X
                        ?         ?        ?         ?
                         _____________________________
                        ?         ?        ?         ?
                3           O                   O
                        ?         ?        ?         ?
                        ------------------------------
TURN FOR John Smith:
Enter the row no. : 3
Enter the column no. : 2

                                TIC TAC TOE BOARD
                                *****************



                            1         2         3
                         _____________________________
                        ?         ?        ?         ?
                1                               X
                        ?         ?        ?         ?
                         _____________________________
                        ?         ?        ?         ?
                2                     X
                        ?         ?        ?         ?
                         _____________________________
                        ?         ?        ?         ?
                3           O         X         O
                        ?         ?        ?         ?
                        ------------------------------
TURN FOR Steve:
Enter the row no. : 1
Enter the column no. : 2

                                TIC TAC TOE BOARD
                                *****************



                            1         2         3
                         _____________________________
                        ?         ?        ?         ?
                1                     O         X
                        ?         ?        ?         ?
                         _____________________________
                        ?         ?        ?         ?
                2                     X
                        ?         ?        ?         ?
                         _____________________________
                        ?         ?        ?         ?
                3           O         X         O
                        ?         ?        ?         ?
                        ------------------------------
TURN FOR John Smith:
Enter the row no. : 2
Enter the column no. : 1

                                TIC TAC TOE BOARD
                                *****************



                            1         2         3
                         _____________________________
                        ?         ?        ?         ?
                1                     O         X
                        ?         ?        ?         ?
                         _____________________________
                        ?         ?        ?         ?
                2           X         X
                        ?         ?        ?         ?
                         _____________________________
                        ?         ?        ?         ?
                3           O         X         O
                        ?         ?        ?         ?
                        ------------------------------
TURN FOR Steve:
Enter the row no. : 2
Enter the column no. : 3

                                TIC TAC TOE BOARD
                                *****************



                            1         2         3
                         _____________________________
                        ?         ?        ?         ?
                1                     O         X
                        ?         ?        ?         ?
                         _____________________________
                        ?         ?        ?         ?
                2           X         X         O
                        ?         ?        ?         ?
                         _____________________________
                        ?         ?        ?         ?
                3           O         X         O
                        ?         ?        ?         ?
                        ------------------------------
TURN FOR John Smith:
Enter the row no. : 1
Enter the column no. : 1

                                TIC TAC TOE BOARD
                                *****************



                            1         2         3
                         _____________________________
                        ?         ?        ?         ?
                1           X         O         X
                        ?         ?        ?         ?
                         _____________________________
                        ?         ?        ?         ?
                2           X         X         O
                        ?         ?        ?         ?
                         _____________________________
                        ?         ?        ?         ?
                3           O         X         O
                        ?         ?        ?         ?
                        ------------------------------
                        MATCH DRAWS
Press any key....
                                TIC TAC TOE BOARD
                                *****************



                            1         2         3
                         _____________________________
                        ?         ?        ?         ?
                1           X         O         X
                        ?         ?        ?         ?
                         _____________________________
                        ?         ?        ?         ?
                2           X         X         O
                        ?         ?        ?         ?
                         _____________________________
                        ?         ?        ?         ?
                3           O         X         O
                        ?         ?        ?         ?
                        ------------------------------
                        MATCH DRAWS!!
Press any key.......
Want To Play(Y/N) ? n

 

 

 

 

4 1 vote
Article Rating
Category: Advance Programs C Programming Tags:

About Tunde A

My name is Tunde Ajetomobi, a Tech Enthusiast and Growth Hacker. I enjoy creating helpful content that solves problem across different topics. Codezclub is my way of helping young aspiring programmers and students to hone their skills and find solutions on fundamental programming languages.

Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments