Advertisement
Md_hosen_zisad

tic_tca_toe new

Nov 12th, 2019
770
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 15.97 KB | None | 0 0
  1. #include<stdio.h>
  2. int board [4] [4];
  3. void initailize()
  4. {
  5.     int i,j;
  6.     for(i=1;i<=3;i++)
  7.         for(j=1;j<=3;j++)
  8.         board [i][j]=2;
  9.         printf("\nThe board is initialized");
  10.     }
  11.  
  12.     void print_board(){
  13.       printf("\n\n");
  14.       int i,j;
  15.       for(i=1;i<=3;i++)
  16.         {
  17.         for(j=1;j<=3;j++)
  18.         if(j!=3)
  19.             {
  20.         if (board [i][j]==2)
  21.             printf("   |");
  22.         else if( board [i][j]==3)
  23.             printf(" X |");
  24.         else
  25.             printf(" 0 |");
  26.         }
  27.          else{
  28.             if (board [i][j]==2)
  29.             printf("   ");
  30.         else if( board [i][j]==3)
  31.              printf(" X ");
  32.         else
  33.              printf(" 0 ");
  34.          }
  35.          if(i!=3){
  36.             printf("\n-----------\n");
  37.          }
  38.  
  39.         }
  40.         printf("\n\n");
  41.       }
  42.  
  43.       int Make2(){
  44.         if (board[2][2]==2)
  45.            return 5;
  46.         else if (board[1][2]==2)
  47.             return 2;
  48.       else  if (board[2][1]==2)
  49.             return 4;
  50.      else   if (board[2][3]==2)
  51.            return 6;
  52.            else
  53.             return  8;
  54.       }
  55.       void Go(int player, int position){
  56.  
  57.            if(position==1)
  58.             board[1][1]=player;
  59.           else if(position==2)
  60.               board[1][2]=player;
  61.             else if(position==3)
  62.                board[1][3]=player;
  63.             else if(position==4)
  64.                board[2][1]=player;
  65.             else if(position==5)
  66.                board[2][2]=player;
  67.             else if(position==6)
  68.                board[2][3]=player;
  69.             else if(position==7)
  70.                board[3][1]=player;
  71.             else if(position==8)
  72.                board[3][2]=player;
  73.             else if(position==9)
  74.               board[3][3]=player;
  75.       }
  76. int PossWinX()
  77. {
  78.     if(board[1][1]*board[1][2]*board[1][3]==18)
  79.     {
  80.         if(board[1][1]==2)
  81.             return 1;
  82.         else if(board[1][2]==2)
  83.             return 2;
  84.         else
  85.             return 3;
  86.     }
  87.     else if(board[2][1]*board[2][2]*board[2][3]==18)
  88.     {
  89.         if(board[2][1]==2)
  90.             return 4;
  91.         else if(board[2][2]==2)
  92.             return 5;
  93.         else
  94.             return 6;
  95.     }
  96.     else if(board[3][1]*board[3][2]*board[3][3]==18)
  97.     {
  98.         if(board[3][1]==2)
  99.             return 7;
  100.         else if(board[3][2]==2)
  101.             return 8;
  102.         else
  103.             return 9;
  104.     }
  105.     else if(board[1][1]*board[2][1]*board[3][1]==18)
  106.     {
  107.          if(board[1][1]==2)
  108.             return 1;
  109.          else if(board[2][1]==2)
  110.             return 4;
  111.          else
  112.             return 7;
  113.     }
  114.     else if(board[1][2]*board[2][2]*board[3][2]==18)
  115.     {
  116.         if(board[1][2]==2)
  117.             return 2;
  118.         else if(board[2][2]==2)
  119.             return 5;
  120.         else
  121.             return 8;
  122.     }
  123.     else if(board[1][3]*board[2][3]*board[3][3]==18)
  124.     {
  125.         if(board[1][3]==2)
  126.             return 3;
  127.         else if(board[2][3]==2)
  128.             return 6;
  129.         else
  130.             return 9;
  131.     }
  132.     else if(board[1][1]*board[2][2]*board[3][3]==18)
  133.     {
  134.         if(board[1][1]==2)
  135.             return 1;
  136.         else if(board[2][2]==2)
  137.             return 5;
  138.         else
  139.            return 9;
  140.     }
  141.     else if(board[1][3]*board[2][2]*board[3][1]==18)
  142.     {
  143.         if(board[1][1]==2)
  144.             return 3;
  145.         else if(board[2][2]==2)
  146.             return 5;
  147.         else
  148.             return 7;
  149.     }
  150.     else
  151.         return 0;
  152.  
  153. }
  154.  
  155. int PossWinO()
  156. {
  157.     if(board[1][1]*board[1][2]*board[1][3]==50)
  158.     {
  159.         if(board[1][1]==2)
  160.             return 1;
  161.         else if(board[1][2]==2)
  162.             return 2;
  163.         else
  164.             return 3;
  165.     }
  166.     else if(board[2][1]*board[2][2]*board[2][3]==50)
  167.     {
  168.         if(board[2][1]==2)
  169.             return 4;
  170.         else if(board[2][2]==2)
  171.             return 5;
  172.         else
  173.             return 6;
  174.     }
  175.     else if(board[3][1]*board[3][2]*board[3][3]==50)
  176.     {
  177.         if(board[3][1]==2)
  178.             return 7;
  179.         else if(board[3][2]==2)
  180.             return 8;
  181.         else
  182.             return 9;
  183.     }
  184.     else if(board[1][1]*board[2][1]*board[3][1]==50)
  185.     {
  186.          if(board[1][1]==2)
  187.             return 1;
  188.          else if(board[2][1]==2)
  189.             return 4;
  190.          else
  191.             return 7;
  192.     }
  193.     else if(board[1][2]*board[2][2]*board[3][2]==50)
  194.     {
  195.         if(board[1][2]==2)
  196.             return 2;
  197.         else if(board[2][2]==2)
  198.             return 5;
  199.         else
  200.             return 8;
  201.     }
  202.     else if(board[1][3]*board[2][3]*board[3][3]==50)
  203.     {
  204.         if(board[1][3]==2)
  205.             return 3;
  206.         else if(board[2][3]==2)
  207.             return 6;
  208.         else
  209.             return 9;
  210.     }
  211.     else if(board[1][1]*board[2][2]*board[3][3]==50)
  212.     {
  213.         if(board[1][1]==2)
  214.             return 1;
  215.         else if(board[2][2]==2)
  216.             return 5;
  217.         else
  218.             return 9;
  219.     }
  220.     else if(board[1][3]*board[2][2]*board[3][1]==50)
  221.     {
  222.         if(board[1][3]==2)
  223.             return 3;
  224.         else if(board[2][2]==2)
  225.             return 5;
  226.         else
  227.             return 7;
  228.     }
  229.     else
  230.         return 0;
  231.  
  232. }
  233.  
  234. int check()
  235.     {
  236.         if(board[1][1]*board[1][2]*board[1][3]==125)
  237.             return 5;
  238.     else if(board[2][1]*board[2][2]*board[2][3]==125)
  239.         return 5;
  240.     else if(board[3][1]*board[3][2]*board[3][3]==125)
  241.         return 5;    else if(board[1][1]*board[2][1]*board[3][1]==125)
  242.         return 5;
  243.     else if(board[1][2]*board[2][2]*board[3][2]==125)
  244.         return 5;
  245.     else if(board[1][3]*board[2][3]*board[3][3]==125)
  246.         return 5;
  247.     else if(board[1][1]*board[2][2]*board[3][3]==125)
  248.         return 5;
  249.     else if(board[1][3]*board[2][2]*board[3][1]==125)
  250.         return 5;
  251.     else if(board[1][1]*board[1][2]*board[1][3]==27)
  252.             return 3;
  253.     else if(board[2][1]*board[2][2]*board[2][3]==27)
  254.         return 3;
  255.     else if(board[3][1]*board[3][2]*board[3][3]==27)
  256.         return 3;
  257.     else if(board[1][1]*board[2][1]*board[3][1]==27)
  258.         return 3;
  259.     else if(board[1][2]*board[2][2]*board[3][2]==27)
  260.         return 3;
  261.     else if(board[1][3]*board[2][3]*board[3][3]==27)
  262.         return 3;
  263.     else if(board[1][1]*board[2][2]*board[3][3]==27)
  264.         return 3;
  265.     else if(board[1][3]*board[2][2]*board[3][1]==27)
  266.         return 3;
  267.     else
  268.         return 0;
  269.  
  270.  
  271.     }
  272.     int anywhere(){
  273.     int i , j;
  274.     for(i=1; i<=3; i++)
  275.         for(j=1;j<=3;j++)
  276.             if(board[i][j]==2)
  277.                     {
  278.                         return (3*(i-1)+j);
  279.                         break;
  280.                         break;
  281.  
  282.                     }
  283.  
  284.     }
  285.  
  286.  
  287.     int check_input(int position)
  288.     {
  289.         if(position==1)
  290.           if(board[1][1]==2)
  291.             return 0;
  292.           else
  293.             return 1;
  294.  
  295.           else if(position==2)
  296.               if(board[1][2]==2)
  297.                 return 0;
  298.               else
  299.                return 1;
  300.  
  301.           else if(position==3)
  302.               if(board[1][3]==2)
  303.               return 0;
  304.               else
  305.               return 1;
  306.  
  307.           else if(position==4)
  308.                if(board[2][1]==2)
  309.                 return 0;
  310.                else
  311.                 return 1;
  312.         else if(position==5)
  313.                if(board[2][2]==2)
  314.                 return 0;
  315.                else
  316.                 return 1;
  317.         else if(position==6)
  318.                if(board[2][3]==2)
  319.                 return 0;
  320.                else
  321.                 return 1;
  322.         else if(position==7)
  323.                if(board[3][1]==2)
  324.                 return 0;
  325.                else
  326.                 return 1;
  327.         else if(position==8)
  328.                if(board[3][2]==2)
  329.                 return 0;
  330.                else
  331.                 return 1;
  332.             else if(position==9)
  333.              if(board[3][3]==2)
  334.                 return 0;
  335.              else
  336.              return 1;
  337.     }
  338.     void Play_X(){
  339.         int player,position,status;
  340.         initailize();
  341.         //Turn1
  342.         print_board();
  343.         printf("\nEnter the position of your move :::");
  344.         scanf("%d",&position);
  345.         Go(3,position);
  346.         printf("\nAfter turn 1 the board is as below :::");
  347.         print_board();
  348.         //Turn2
  349.         if(board[2][2]==2)
  350.             Go(5,5);
  351.         else
  352.             Go(5,1);
  353.         printf("\nAfter turn 2 the board is as below ::: \n");
  354.         print_board();
  355.         //Turn 3
  356.         T3:
  357.             {
  358.  
  359.         printf("\nEnter the position of your move :::");
  360.         scanf("%d",&position);
  361.         if(check_input(position)==1)
  362.         {
  363.           printf("\nPosition is previously taken... Enter Another position.\n");
  364.           goto T3;
  365.         }
  366.             }
  367.         Go(3,position);
  368.         printf("\nAfter turn 3 the board is as below ::: \n");
  369.         print_board();
  370.         //Turn 4
  371.         if(PossWinX()!=0)
  372.             Go(5,PossWinX());
  373.         else
  374.             Go(5,Make2());
  375.         printf("\nAfter turn 4 the board is as below :::\n");
  376.         print_board();
  377.         //Turn 5
  378.         T5:
  379.             {
  380.  
  381.         printf("\nEnter the position of your move :::");
  382.         scanf("%d",&position);
  383.         if(check_input(position)==1)
  384.         {
  385.           printf("\nPosition is previously taken... Enter Another position.\n");
  386.           goto T5;
  387.         }
  388.             }
  389.         Go(3,position);
  390.         printf("\nAfter turn 5 the board is as below :::\n ");
  391.         print_board();
  392.         if(check()!=0)
  393.         {
  394.             status=check();
  395.             goto result;
  396.         }
  397.         //Turn 6
  398.         if(PossWinO()!=0)
  399.             Go(5,PossWinO());
  400.         else if(PossWinX()!=0)
  401.             Go(5,PossWinX());
  402.         else
  403.             Go(5,Make2());
  404.         printf("\nAfter turn 6 the board is as below ::: \n");
  405.         print_board();
  406.         if(check()!=0)
  407.         {
  408.             status=check();
  409.             goto result;
  410.         }
  411.         //Turn 7
  412.  
  413.  
  414.         T7:
  415.             {
  416.  
  417.         printf("\nEnter the position of your move :::");
  418.         scanf("%d",&position);
  419.         if(check_input(position)==1)
  420.         {
  421.           printf("\nPosition is previously taken... Enter Another position.\n");
  422.           goto T7;
  423.         }}
  424.  
  425.         Go(3,position);
  426.         printf("\nAfter turn 7 the board is as below :::\n ");
  427.         print_board();
  428.         if(check()!=0)
  429.         {
  430.             status=check();
  431.             goto result;
  432.         }
  433.         //Turn 8
  434.         if(PossWinO()!=0)
  435.             Go(5,PossWinO());
  436.         else if(PossWinX()!=0)
  437.             Go(5,PossWinX());
  438.         else
  439.             Go(5,anywhere());
  440.         printf("\nAfter turn 8 the board is as below :::\n");
  441.         print_board();
  442.         if(check()!=0)
  443.         {
  444.             status=check();
  445.             goto result;
  446.         }
  447.         //Turn 9
  448.         T9:
  449.             {
  450.  
  451.         printf("\nEnter the position of your move :::");
  452.         scanf("%d",&position);
  453.         if(check_input(position)==1)
  454.         {
  455.           printf("\nPosition is previously taken... Enter Another position.\n");
  456.           goto T9;
  457.         }
  458.             }
  459.  
  460.         Go(3,position);
  461.         printf("\nAfter Turn 9 the board is as below :::\n");
  462.         print_board();
  463.         if(check()!=0)
  464.         {
  465.             status=check();
  466.             goto result;
  467.         }
  468.         result :
  469.             if(status==3)
  470.                 printf("\nHurrey!!!! Player X(Human) Wins the game !!!!!\n");
  471.             else if(status==5)
  472.                 printf("\nAaaahhh!!! Player O(Computer) Wins the Game !!!!!\n");
  473.             else
  474.                 printf("\nThe game is Drawn !!!!!\n");
  475.         }
  476.  
  477.         void Play_O(){
  478.         int player,position,status;
  479.         initailize();
  480.  
  481.         //Turn1
  482.         print_board();
  483.          Go(3,1);
  484.         printf("\nAfter turn 1 the board is as below ::: \n");
  485.         print_board();
  486.         //Turn2
  487.         T2:
  488.             {
  489.  
  490.         printf("\nEnter the position of your move :::");
  491.         scanf("%d",&position);
  492.        if(check_input(position)==1)
  493.        {
  494.            printf("\nPosition is previously taken....Enter another position.\n");
  495.            goto T2;
  496.        }
  497.             }
  498.             Go(5,position);
  499.             printf("\nAfter turn 2 the board is as below :::\n");
  500.             print_board();
  501.  
  502.         //Turn 3
  503.         if(board[3][3]==2)
  504.             Go(3,9);
  505.             else
  506.                 Go(3,3);
  507.         printf("\nAfter turn 3 the board is as below ::: \n");
  508.         print_board();
  509.  
  510.         //Turn 4
  511.         T4:
  512.             {
  513.         printf("\nEnter the position of your move :::");
  514.         scanf("%d",&position);
  515.        if(check_input(position)==1)
  516.        {
  517.            printf("\nPosition is previously taken....Enter another position.\n");
  518.            goto T4;
  519.        }
  520.             }
  521.              Go(5,position);
  522.             printf("\nAfter turn 4 the board is as below :::\n");
  523.             print_board();
  524.  
  525.         //Turn 5
  526.  
  527.             if(PossWinX()!=0)
  528.             Go(3,PossWinX());
  529.             else if(PossWinO()!=0)
  530.                 Go(3,PossWinO());
  531.             else if(board[3][1]==2)
  532.                 Go(3,7);
  533.             else
  534.                 Go(3,3);
  535.         printf("\nAfter turn 5 the board is as below ::: \n");
  536.         print_board();
  537.  
  538.         if(check()!=0)
  539.         {
  540.             status=check();
  541.             goto result;
  542.         }
  543.         //Turn 6
  544.         T6:
  545.             {
  546.  
  547.         printf("\nEnter the position of your move :::");
  548.         scanf("%d",&position);
  549.         if(check_input(position)==1)
  550.         {
  551.           printf("\nPosition is previously taken... Enter Another position.\n");
  552.           goto T6;
  553.         }}
  554.  
  555.         Go(5,position);
  556.         printf("\nAfter turn 6 the board is as below :::\n ");
  557.         print_board();
  558.         if(check()!=0)
  559.         {
  560.             status=check();
  561.             goto result;
  562.         }
  563.         //Turn 7
  564.  
  565.         if(PossWinX()!=0)
  566.             Go(3,PossWinX());
  567.         else if(PossWinO()!=0)
  568.             Go(3,PossWinO());
  569.         else
  570.             Go(3,anywhere());
  571.             printf("\nAfter turn 7 the board is as below :::\n ");
  572.         print_board();
  573.         if(check()!=0)
  574.         {
  575.             status=check();
  576.             goto result;
  577.         }
  578.  
  579.  
  580.  
  581.         //Turn 8
  582.         T8:
  583.             {
  584.  
  585.         printf("\nEnter the position of your move :::");
  586.         scanf("%d",&position);
  587.         if(check_input(position)==1)
  588.         {
  589.           printf("\nPosition is previously taken... Enter Another position.\n");
  590.           goto T8;
  591.         }
  592.             }
  593.  
  594.         Go(5,position);
  595.         printf("\nAfter Turn 8 the board is as below :::\n");
  596.         print_board();
  597.         if(check()!=0)
  598.         {
  599.             status=check();
  600.             goto result;
  601.         }
  602.         //Turn 9
  603.  
  604.            if(PossWinX()!=0)
  605.             Go(3,PossWinX());
  606.         else if(PossWinO()!=0)
  607.             Go(3,PossWinO());
  608.         else
  609.             Go(3,anywhere());
  610.             printf("\nAfter turn 9 the board is as below :::\n ");
  611.         print_board();
  612.         if(check()!=0)
  613.         {
  614.             status=check();
  615.             goto result;
  616.         }
  617.         result :
  618.             if(status==3)
  619.                 printf("\nHurrey!!!! Player X(Human) Wins the game !!!!!\n");
  620.             else if(status==5)
  621.                 printf("\nAaaahhh!!! Player O(Computer) Wins the Game !!!!!\n");
  622.             else
  623.                 printf("\nThe game is Drawn !!!!!\n");
  624.         }
  625.  
  626.  
  627.  
  628. int main(){
  629.  
  630.  
  631.  
  632.     int choice;
  633.     while(1){
  634.         printf("\nEnter 3 for play as X");
  635.         printf("\nEnter 5 for play as O");
  636.         printf("\nEnter 100 for exit");
  637.         printf("\nEnter your choice :::");
  638.         scanf("%d",&choice);
  639.  
  640.         if(choice==100)
  641.           break;
  642.           else if(choice==3)
  643.             Play_X();
  644.             else if(choice==5)
  645.                 Play_O();
  646.             else
  647.            printf("\n\n your choice is wrong!!\n");
  648.  
  649.  
  650.  
  651.           }
  652.  
  653.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement