Guest User

Untitled

a guest
Aug 19th, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 11.26 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4. #define bool int
  5. #define false 0
  6. #define true 1
  7.    
  8. void inicializar_tablero (char & A,char &B,char &C,char &D,char &E,char &F,char &G,char &H,char &I);
  9. void pantalla_inicio();
  10. void elegir_ficha(char&,char&);
  11. void elegir_turno(int &turno);
  12. void quiere_seguir(int&);
  13. void jugar(char ficha_jug, char ficha_maq,
  14.            char &A,char &B,char &C,
  15.            char &D,char &E,char &F,
  16.            char &G,char &H,char &I,
  17.            int &turno);
  18. void juega_jugador(char ficha_jug,
  19.                    char &A,char &B,char &C,
  20.                    char &D,char &E,char &F,
  21.                    char &G,char &H,char &I);
  22. void juega_maq(char ficha_maq,
  23.                char &A,char &B,char &C,
  24.                char &D,char &E,char &F,
  25.                char &G,char &H,char &I);
  26. void pantalla_salida();
  27. void evalua_tablero(char A,char B,char C,
  28.                     char D,char E,char F,
  29.                     char G,char H,char I,
  30.                     char ficha_maq,char ficha_maq,
  31.                     bool &ganador, bool &empate);
  32. int gano_jugador(char,char,char,char,char,char,char,char,char,char);
  33. int gano_maquina(char,char,char,char,char,char,char,char,char,char);
  34. void mostrar_tablero (char A,char B,char C,      
  35.                           char D,char E,char F,
  36.                           char G,char H,char I);
  37.  
  38. main()
  39. {
  40.       int seguir_jugando=0, turno;
  41.       char ficha_jug, ficha_maq,A,B,C,D,E,F,G,H,I;
  42.        
  43.       while(seguir_jugando==0)
  44.       {
  45.            inicializar_tablero(A,B,C,D,E,F,G,H,I); /*Se dibuja el tablero y se inicializan las variables como vacias*/
  46.            pantalla_inicio(); /*Solo una presentacion del juego*/
  47.            elegir_ficha(ficha_jug, ficha_maq);
  48.            elegir_turno(turno);
  49.            jugar(ficha_jug,ficha_maq,A,B,C,D,E,F,G,H,I,turno);
  50.            quiere_seguir(seguir_jugando);
  51.            
  52.            printf("Gracias por jugar, vuelva pronto :D\n");
  53.       }
  54.       pantalla_salida();
  55. }
  56.  
  57. void inicializar_tablero (char &A,char &B,char &C,         /* Aqui se inicializa el tablero y se dibuja*/
  58.                           char &D,char &E,char &F,
  59.                           char &G,char &H,char &I)
  60. {
  61.         (A)=' ';(B)=' ';(C)=' ';(D)=' ';(E)=' ';(F)=' ';(G)=' ';(H)=' ';(I)=' ';
  62.         printf("                         A|B|C\n");
  63.         printf("                         -----\n");
  64.         printf("                         D|E|F\n");
  65.         printf("                         -----\n");
  66.         printf("                         G|H|I\n");
  67.         printf("Este es su tablero, por favor ingrese las opciones\n");
  68.         printf("   |    |    \n");
  69.         printf(" %c | %c  | %c \n",A,B,C);
  70.         printf("-------------\n");
  71.         printf(" %c | %c  | %c \n",D,E,F);
  72.         printf("-------------\n");
  73.         printf(" %c | %c  | %c \n",G,H,I);
  74.         printf("   |    |    \n");
  75.        
  76. }
  77.  
  78. void mostrar_tablero (char A,char B,char C,      
  79.                           char D,char E,char F,
  80.                           char G,char H,char I)
  81. {
  82.         printf("<<<<<TABLERO<<<<<\n");
  83.         printf("   |    |    \n");
  84.         printf(" %c | %c  | %c \n",A,B,C);
  85.         printf("-------------\n");
  86.         printf(" %c | %c  | %c \n",D,E,F);
  87.         printf("-------------\n");
  88.         printf(" %c | %c  | %c \n",G,H,I);
  89.         printf("   |    |    \n");
  90.        
  91. }
  92.  
  93. void pantalla_inicio()
  94. {
  95.      printf("Bienvenido a mi juego ^.^\n");
  96. }
  97.  
  98. void elegir_ficha(char &ficha_jug, char &ficha_maq)   /* Este procedimiento tiene el proposito de darle al usuario las opciones de ficha
  99.                                                        el juego, en este caso una X o un O*/
  100. {
  101.      int opcion;
  102.      
  103.      printf("Que ficha desea utilizar?\n");
  104.      printf("Opcion 1: X; Opcion 2: O\n");
  105.      scanf("%i", &opcion);
  106.      while(opcion!=1 && opcion!=2)
  107.      {
  108.            printf("Por favor ingrese opcion valida\n");
  109.            scanf("%i", &opcion);
  110.      }
  111.      if(opcion==1)
  112.      {
  113.            (ficha_maq)='O'; (ficha_jug)= 'X';
  114.      }
  115.      else
  116.      {
  117.            (ficha_maq)= 'X'; (ficha_jug)= 'O';
  118.      }
  119. }
  120.  
  121. void elegir_turno(int &turno)                                /* Como su nombre lo indica, este procedimiento permite al usuario elegir el turno mediante las opciones*/
  122. {
  123.      int opcion;
  124.      printf("¿Quien desea que comience?\n");
  125.      printf("opcion 1: usted, opcion 2: la computadora\n");
  126.      scanf("%i", &opcion);
  127.      while(opcion!=1 && opcion!=2)
  128.      {
  129.            printf("Por favor ingrese opcion valida\n");
  130.            scanf("%i", &opcion);
  131.      }
  132.      if(opcion==1)
  133.      {
  134.            (turno)=1;      
  135.      }
  136.      else
  137.      {
  138.            (turno)=2;
  139.      }
  140. }
  141.  
  142. void jugar(char ficha_jug, char ficha_maq,
  143.            char &A,char &B,char &C,
  144.            char &D,char &E,char &F,
  145.            char &G,char &H,char &I,
  146.            int  &turno)
  147. {
  148.      bool empate = false;
  149.      bool ganador = false;
  150.      //char ficha;
  151.      
  152.      while(empate==false && ganador==false)                  // mientras no exista un empate o ganador sigue jugando
  153.      {
  154.              if((turno)==1)
  155.              {
  156.                   juega_jugador(ficha_jug,A,B,C,D,E,F,G,H,I);
  157.                   printf("jugando usted...\n");
  158.                   mostrar_tablero (A,B,C,D,E,F,G,H,I);         //actualiza tablero
  159.                   (turno)=2;
  160.              }
  161.              else
  162.              {     printf("jugando ordenador...\n");
  163.                   juega_maq(ficha_maq,A,B,C,D,E,F,G,H,I);
  164.                    mostrar_tablero (A,B,C,D,E,F,G,H,I);         //actualiza tablero
  165.                   (turno)=1;
  166.              }
  167.              evalua_tablero(A,B,C,D,E,F,G,H,I,ficha_jug,ficha_maq,ganador,empate);
  168.      }
  169.      if(empate)
  170.      {    
  171.          printf("Es un empate");
  172.      }
  173.      else
  174.      {
  175.         if(gano_jugador(ficha_jug,A,B,C,D,E,F,G,H,I))
  176.         {
  177.              printf("Felicitaciones!!!!....le gano a alguien");
  178.         }
  179.         else
  180.         {
  181.             printf("No le gana ni siquiera a la computadora");
  182.         }
  183.      }    
  184. }
  185.  
  186. void juega_jugador(char ficha_jug,
  187.                    char &A,char &B,char &C,
  188.                    char &D,char &E,char &F,
  189.                    char &G,char &H,char &I)
  190. {
  191.      bool estaba_vacia=true;
  192.      char opcion;
  193.      
  194.      while(estaba_vacia)
  195.      {
  196.            printf("Elija posicion para jugar");
  197.            fflush( stdin );  // limpia cache guardado
  198.            scanf("%c", &opcion);
  199.            while(opcion!= 'A' && opcion!= 'B' && opcion!= 'C' &&
  200.                  opcion!= 'D' && opcion!= 'E' && opcion!= 'F' &&
  201.                  opcion!= 'G' && opcion!= 'H' && opcion!= 'I')
  202.            {
  203.                  printf("Ingrese una letra valida del tablero");
  204.                  fflush( stdin );
  205.                  scanf("%c", &opcion);
  206.            }
  207.            
  208.            if(opcion=='A' && A==' ')
  209.                 A=ficha_jug; estaba_vacia= false;
  210.            if(opcion=='B' && B==' ')
  211.                 B=ficha_jug; estaba_vacia= false;
  212.            if(opcion=='C' && C==' ')
  213.                 C=ficha_jug; estaba_vacia= false;
  214.            if(opcion=='D' && D==' ')
  215.                 D=ficha_jug; estaba_vacia= false;
  216.            if(opcion=='E' && E==' ')
  217.                 E=ficha_jug; estaba_vacia= false;
  218.            if(opcion=='F' && F==' ')
  219.                 F=ficha_jug; estaba_vacia= false;
  220.            if(opcion=='G' && G==' ')
  221.                 G=ficha_jug; estaba_vacia= false;
  222.            if(opcion=='H' && H==' ')
  223.                 H=ficha_jug; estaba_vacia= false;
  224.            if(opcion=='I' && I==' ')
  225.                 I=ficha_jug; estaba_vacia= false;
  226.            if(estaba_vacia)
  227.                 printf("\nIngrese una posicion vacia");
  228.                 getche();    // pausa                    
  229.      }
  230. }
  231.  
  232. void juega_maq(char ficha_maq,
  233.                char &A,char &B,char &C,
  234.                char &D,char &E,char &F,
  235.                char &G,char &H,char &I)
  236. {
  237.        bool estaba_vacia=false;
  238.  
  239.        if (A== ' ' && estaba_vacia==false)
  240.        {
  241.            A= ficha_maq;
  242.            estaba_vacia=true;
  243.        }
  244.        if (B== ' ' && estaba_vacia==false)
  245.        {
  246.            B= ficha_maq;
  247.            estaba_vacia=true;
  248.        }
  249.        if (C== ' ' && estaba_vacia==false)
  250.        {
  251.            C= ficha_maq;
  252.            estaba_vacia=true;
  253.        }
  254.        if (D== ' ' && estaba_vacia==false)
  255.        {
  256.            D= ficha_maq;
  257.            estaba_vacia=true;
  258.        }
  259.         if (E== ' ' && estaba_vacia==false)
  260.        {
  261.            E= ficha_maq;
  262.            estaba_vacia=true;
  263.        }
  264.         if (F== ' ' && estaba_vacia==false)
  265.        {
  266.            F= ficha_maq;
  267.            estaba_vacia=true;
  268.        }
  269.         if (G== ' ' && estaba_vacia==false)
  270.        {
  271.            G= ficha_maq;
  272.            estaba_vacia=true;
  273.        }
  274.         if (H== ' ' && estaba_vacia==false)
  275.        {
  276.            H= ficha_maq;
  277.            estaba_vacia=true;
  278.        }
  279.        if (I== ' ' && estaba_vacia==false)
  280.        {
  281.            I= ficha_maq;
  282.            estaba_vacia=true;
  283.        }
  284. }
  285.  
  286. int gano_jugador(char ficha_jug,
  287.                  char A, char B, char C,
  288.                  char D, char E, char F,
  289.                  char G, char H, char I)
  290. {
  291.       bool gano_jugador=false;
  292.      
  293.       if(A==B && B==C && C==ficha_jug)
  294.             gano_jugador=true;
  295.       if(D==E && E==F && F==ficha_jug)
  296.             gano_jugador=true;
  297.       if(G==H && H==I && I==ficha_jug)
  298.             gano_jugador=true;
  299.       if(A==D && D==G && G==ficha_jug)
  300.             gano_jugador=true;
  301.       if(B==E && E==H && H==ficha_jug)
  302.             gano_jugador=true;
  303.       if(C==F && F==I && I==ficha_jug)
  304.             gano_jugador=true;                              
  305.       if(A==E && E==I && I==ficha_jug)
  306.             gano_jugador=true;      
  307.       if(C==E && E==G && G==ficha_jug)
  308.             gano_jugador=true;                  
  309.       return(gano_jugador);
  310. }
  311.  
  312. void evalua_tablero(char A,char B,char C,
  313.                    char D,char E,char F,
  314.                    char G,char H,char I,
  315.                    char ficha_jug,char ficha_maq,
  316.                    bool &ganador, bool &empate)
  317. {
  318.       //ganador=false;
  319.       //empate = false;
  320.        
  321.       if((A==B && B==C && C==ficha_jug) || (A==B && B==C && C==ficha_maq) ||
  322.          (D==E && E==F && F==ficha_jug) || (D==E && E==F && F==ficha_maq) ||
  323.          (G==H && H==I && I==ficha_jug) || (G==H && H==I && I==ficha_maq) ||
  324.          (A==D && D==G && G==ficha_jug) || (A==D && D==G && G==ficha_maq) ||
  325.          (B==E && E==H && H==ficha_jug) || (B==E && E==H && H==ficha_maq) ||
  326.          (C==E && E==G && G==ficha_jug)|| (C==E && E==G && G==ficha_maq))
  327.       {
  328.      
  329.            (ganador)=true;
  330.            return;
  331.       }
  332.       else
  333.       {
  334.            if(A!=' ' && B!=' ' && C!=' ' &&
  335.               D!=' ' && E!=' ' && F!=' ' &&
  336.               G!=' ' && H!=' ' && I!=' ')
  337.               {
  338.                    printf("Hay un empate");
  339.                    (empate)=true;
  340.                    return;
  341.               }
  342.       }                                            
  343. }
  344.  
  345. void quiere_seguir(int &otra)
  346. {
  347.     char opcion;
  348.      
  349.     printf("¿ Desea seguir s/n?\n");
  350.     scanf (" %c",&opcion);
  351.     if(opcion== 'n' || opcion=='N')
  352.     {
  353.                 otra=1;
  354.     }
  355. }
  356.  
  357. void pantalla_salida()
  358. {
  359.      system("pause");
  360. }
Add Comment
Please, Sign In to add comment