Guest User

Untitled

a guest
Oct 18th, 2018
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.40 KB | None | 0 0
  1. /*
  2. Tic-tac-toe
  3. -----------
  4.  
  5. :: By TheTooxicoo
  6.  
  7. :: 04/09/2012
  8.  
  9. :: Visit TheTooxicoo.Blogspot.com for more source codes
  10. */
  11.  
  12. #include <stdio.h>
  13.  
  14.  
  15. #define FICHA_1 'X'
  16. #define FICHA_2 'O'
  17.  
  18.  
  19. // Los créditos del programa
  20. char creditos[] = "Tic-tac-toe\n-----------\n\n:: By TheTooxicoo\n\n:: 04/09/2012\n\n:: Visit TheTooxicoo.Blogspot.com for more source codes\n";
  21. // El tablero de juego
  22. char tablero[3][3] = {
  23.  
  24.     {' ', ' ', ' '},
  25.     {' ', ' ', ' '},
  26.     {' ', ' ', ' '}
  27. };
  28.  
  29. // Las fichas de juego
  30. char jugador[1] = {'X', 'O'};
  31.  
  32. // Turno del jugador
  33. int turno = 1;
  34.  
  35. // El bucle principal comprobará constantemente si 'ejecutando' vale distinto de 0 para seguir ejecutandose
  36. int ejecutando = 1;
  37.  
  38. // Dibujar el tablero (casillas y fichas de juego)
  39. void dibujar_tablero( void );
  40.  
  41. // Realiza un movimiento
  42. void realizar_movimiento( void );
  43.  
  44. // Comprueba las horizontales
  45. void comprobar_horizontales( void );
  46.  
  47. // Comprueba las verticales
  48. void comprobar_verticales( void );
  49.  
  50. // Comprueba las diagonales
  51. void comprobar_diagonales( void );
  52.  
  53. // Declara ganador a uno de los jugadores
  54. void partida_ganada( char texto[100] );
  55.  
  56. int main() {
  57.  
  58.     printf( "%s", creditos );
  59.     printf( "\n\n>> Pulsa Enter..." );
  60.  
  61.     getchar();
  62.  
  63.     while( ejecutando != 0 ) {
  64.  
  65.         system( "cls" );
  66.  
  67.         dibujar_tablero();
  68.  
  69.         realizar_movimiento();
  70.     }
  71.  
  72.  
  73.     return 0;
  74. }
  75.  
  76.  
  77. void dibujar_tablero( void ) {
  78.  
  79.     int i, j;
  80.  
  81.     for( i = 0; i < 3; i++) {
  82.  
  83.         for( j = 0; j < 3; j++) {
  84.  
  85.             printf( "[%c]", tablero[i][j] );
  86.         }
  87.  
  88.         printf( "\n" );
  89.     }
  90. }
  91.  
  92. void realizar_movimiento( void ) {
  93.  
  94.     int fila, columna, movimiento_correcto;
  95.  
  96.     comprobar_horizontales();
  97.     comprobar_verticales();
  98.     comprobar_diagonales();
  99.  
  100.     printf( "Fila: " );
  101.     scanf( "%i", &fila );
  102.  
  103.     printf( "Columna: " );
  104.     scanf( "%i", &columna );
  105.  
  106.     if( fila == 1 || fila == 2 || fila == 3 || columna == 1 || columna == 2 || columna == 3 ) {
  107.  
  108.         if( tablero[fila-1][columna-1] == ' ' ) {
  109.  
  110.             movimiento_correcto = 1;
  111.         }
  112.     }
  113.     else {
  114.  
  115.         movimiento_correcto = 0;
  116.     }
  117.  
  118.     if( movimiento_correcto == 1 ) {
  119.  
  120.         switch( turno ) {
  121.  
  122.             case 1:
  123.  
  124.                 tablero[fila-1][columna-1] = FICHA_1;
  125.                 break;
  126.  
  127.             case 2:
  128.  
  129.                 tablero[fila-1][columna-1] = FICHA_2;
  130.                 break;
  131.         }
  132.  
  133.         if( turno == 1 ) {
  134.  
  135.             turno = 2;
  136.         }
  137.         else {
  138.  
  139.             turno = 1;
  140.         }
  141.  
  142.     }
  143. }
  144.  
  145. void comprobar_horizontales( void ) {
  146.  
  147.     if( tablero[0][0] != ' ' && tablero[0][0] == tablero[0][1] && tablero[0][0] == tablero[0][2] ) {
  148.  
  149.         partida_ganada( "Linea horizontal 1 completada.\n" );
  150.     }
  151.     else if( tablero[1][0] != ' ' && tablero[1][0] == tablero[1][1] && tablero[1][0] == tablero[1][2] ) {
  152.  
  153.         partida_ganada( "Linea horizontal 2 completada.\n" );
  154.     }
  155.     else if( tablero[2][0] != ' ' && tablero[2][0] == tablero[2][1] && tablero[2][0] == tablero[2][2] ) {
  156.  
  157.         partida_ganada( "Linea horizontal 3 completada.\n" );
  158.     }
  159. }
  160.  
  161. void comprobar_verticales( void ) {
  162.  
  163.     if( tablero[0][0] != ' ' && tablero[0][0] == tablero[1][0] && tablero[0][0] == tablero[2][0] ) {
  164.  
  165.         partida_ganada( "Linea vertical 1 completada.\n" );
  166.     }
  167.     else if( tablero[0][1] != ' ' && tablero[0][1] == tablero[1][1] && tablero[0][1] == tablero[2][1] ) {
  168.  
  169.         partida_ganada( "Linea vertical 2 completada.\n" );
  170.     }
  171.     else if( tablero[0][2] != ' ' && tablero[0][2] == tablero[1][2] && tablero[0][2] == tablero[2][2] ) {
  172.  
  173.         partida_ganada( "Linea vertical 2 completada.\n" );
  174.     }
  175. }
  176.  
  177. void comprobar_diagonales( void ) {
  178.  
  179.     if( tablero[0][0] != ' ' && tablero[0][0] == tablero[1][1] && tablero[0][0] == tablero[2][2] ) {
  180.  
  181.         partida_ganada( "Linea diagonal 1 completada.\n" );
  182.     }
  183.     else if( tablero[0][2] != ' ' && tablero[0][2] == tablero[1][1] && tablero[0][2] == tablero[2][0] ) {
  184.  
  185.         partida_ganada( "Linea diagonal 2 completada.\n" );
  186.     }
  187. }
  188.  
  189. void partida_ganada( char texto[100] ) {
  190.  
  191.     printf( "%s", texto );
  192.  
  193.     switch( turno ) {
  194.  
  195.         case 1:
  196.  
  197.             printf( "Ha ganado el jugador 2.\n" );
  198.             break;
  199.  
  200.         case 2:
  201.  
  202.             printf( "Ha ganado el jugador 1.\n" );
  203.             break;
  204.     }
  205.  
  206.     getchar();
  207.     getchar();
  208.  
  209.     exit( 0 );
  210. }
Add Comment
Please, Sign In to add comment