Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: daichi21 en 30 Noviembre 2016, 15:31 pm



Título: Juego Gato: definir ganador y repetir coordenada
Publicado por: daichi21 en 30 Noviembre 2016, 15:31 pm
Hola! tengo este proyecto de crear un juego gato. Tengo listo lo de ir seleccionando casillas, nombre de jugador, etc. Lo que se me dificulta o falta es cómo validar al ganador, o sea, en qué parte o cómo o con qué hacer la comparación de casillas para definir al ganador, tenía una idea con un if, pero no me funciona. También en el momento en que el jugador seleccione una casilla ocupada, lo regrese al paso en donde selecciona casilla, había pensado en un do-while con un switch, pero tampoco funciona. si me pudieran ayudar gracias, esto es lo que llevo:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. char gato[3][3];
  5.  
  6. struct jugador{
  7. char nombre[50]
  8. }j1,j2;
  9.  
  10. int main (){
  11. int x, y, i;
  12. printf("Jugador X ingresa tu nombre:");
  13. scanf("%s", &j1);
  14. printf("Jugador O ingresa tu nombre:");
  15. scanf("%s", &j2);
  16. system("cls");
  17. for(i=0; i<100; i++){
  18.    printf("*****GATO*****\n");
  19. printf("|%c| |%c| |%c|\n", gato[0][0], gato[0][1], gato[0][2]);
  20. printf("-----------\n");
  21. printf("|%c| |%c| |%c|\n", gato[1][0], gato[1][1], gato[1][2]);
  22. printf("-----------\n");
  23. printf("|%c| |%c| |%c|\n", gato[2][0], gato[2][1], gato[2][2]);
  24.    if(i%2!=0){
  25.        printf("%s, elige tu casilla en coordenadas x y y: \n", &j2);
  26. printf("Coordenada x:\n");
  27. scanf("%d", &x);
  28. printf("\n coordenada y:\n");
  29. scanf("%d", &y);
  30. y=y-1;
  31. x=x-1;
  32. if (gato[y][x]==' ',gato[y][x]==0){
  33.    gato[y][x]= 'O';}
  34.    else{
  35.        printf("elige otra casilla\n");
  36.        system("pause");
  37.    }
  38. system("cls");
  39.    }
  40.    else{
  41.        printf("%s, elige tu casilla en coordenadas x y y: \n", &j1);
  42. printf("Coordenada x:\n");
  43. scanf("%d", &x);
  44. printf("\n coordenada y:\n");
  45. scanf("%d", &y);
  46. y=y-1;
  47. x=x-1;
  48. if (gato[y][x]==' ',gato[y][x]==0){
  49.    gato[y][x]= 'X';
  50.    }
  51.    else{
  52.        printf("elige otra casilla\n");
  53.        system("pause");
  54.    }
  55.    system("cls");
  56. }
  57. }
  58. printf("Ganó el jugador");
  59. system("pause");
  60. return 0;
  61. }
  62.  

MOD: etiqueta GeSHi.


Título: Re: Juego Gato: definir ganador y repetir coordenada
Publicado por: Kenji-chan en 30 Noviembre 2016, 19:18 pm
mírate estos tutos quiza te sirvan
https://www.youtube.com/playlist?list=PLw8RQJQ8K1yQZyhplheIkd5qtuYXM-qtx


Título: Re: Juego Gato: definir ganador y repetir coordenada
Publicado por: KINGARZA en 3 Diciembre 2016, 22:12 pm
Hola que tal, hace poco me encargaron en el colegio un proyecto y opte por hacer un gato, eso de usar coordenadas (al momento de ingresarlas) en lo personal es un poco incomodo, espero y te ayude:
Código
  1. /**
  2.     Alumno: Luis Eduardo Garza Medina
  3.     programa: Juego
  4.     Nombre: Gato
  5.  
  6.     El juego posee un menu amigable con el usuario, entendible
  7.     para cualquier usuario.
  8.  
  9.     para el menu solo se usan las teclas: 'i', 'e' y 's';
  10.     y para jugar son los numeros, donde para acceder a una casilla debe presionarse
  11.     el siguiente numero:
  12.  
  13.     1 2 3
  14.     4 5 6
  15.     7 8 9
  16.  
  17.     el jugador uno es representado por un '1' equivalente a X
  18.     el jugador dos es representado por un '2' equivalente a O
  19.  
  20.     Al finalizar el programa, este indica los resultados finales de cada jugador.
  21. */
  22. #include <stdio.h>
  23. #include<windows.h>
  24. #define uno    gato[0][0]
  25. #define dos    gato[0][1]
  26. #define tres   gato[0][2]
  27. #define cuatro gato[1][0]
  28. #define cinco  gato[1][1]
  29. #define seis   gato[1][2]
  30. #define siete  gato[2][0]
  31. #define ocho   gato[2][1]
  32. #define nueve  gato[2][2]
  33. //el compilador sustituye la cadena en #define
  34. short gato[3][3] ={{0,0,0}, //definimos matriz
  35.                   {0,0,0},
  36.                   {0,0,0}};
  37. short won[2]; //definimos array
  38.  
  39. int verifica(){ //comprobamos si un jugador ya ganó
  40.    if(uno == dos && dos == tres)
  41.        return uno;
  42.    if(uno == cuatro && cuatro == siete)
  43.        return uno;
  44.    if(uno == cinco && cinco == nueve)
  45.        return uno;
  46.    if(tres == cinco && cinco == siete)
  47.        return tres;
  48.    if(tres == seis && seis == nueve)
  49.        return tres;
  50.    if(cuatro == cinco && cinco == seis)
  51.        return cuatro;
  52.    if(siete == ocho && ocho == nueve)
  53.        return siete;
  54.    if(dos == cinco && cinco == ocho)
  55.        return dos;
  56.    return 0;
  57. }
  58.  
  59. void mostrar(){ //ponemos en pantalla el gato
  60.    system("cls");
  61.    for(int i = 0; i < 3; i++){
  62.        for(int j = 0; j < 3; j++)
  63.            if(j < 2)
  64.                printf("%d|", gato[i][j]);
  65.            else
  66.                printf("%d", gato[i][j]);
  67.        if(i < 2)
  68.            printf("\n-----\n");
  69.        else
  70.            printf("\n");
  71.    }
  72. }
  73.  
  74. void instrucciones(){ //funcion que muestra las instrucciones del jueo
  75.    system("cls");
  76.    printf("Los controles son los numeros del 1 al 9, por ejemplo:\n\n");
  77.    printf("para acceder a la casilla superior izquierda se presiona 1\n\n");
  78.    printf("para acceder a la casilla inferorior intermedia se presiona 8\n\n");
  79.    system("pause");
  80. }
  81.  
  82. int main (){
  83.    short numero, k;
  84.    char opcion;
  85.    while(1){//while infinito
  86.        system("cls"); //limpia la pantalla
  87.        printf("JUEGO DEL GATO\n\n");
  88.        printf("Menu\n\n");
  89.        printf("presiona 'i' para ver instrucciones:\n");
  90.        printf("Presiona 'e' para comenzar\n");
  91.        printf("Presiona 's' para salir\n\n");
  92.        scanf("%s", &opcion);
  93.        switch(opcion){
  94.            case 'i':
  95.                instrucciones();
  96.            break;
  97.            case 'e':
  98.                memset(gato, 0, sizeof(gato));//inicializa la matriz con valores de 0
  99.                for(k = 1; k <= 9; k++){ //este for se repite 9 veces porque son 9 casillas
  100.                    mostrar();
  101.                    scanf("%d", &numero);
  102.                    if(numero == 1)
  103.                        if(k % 2 == 0) //la operacion del modulo ayuda a determinar de quien es el turno
  104.                            uno = 2;
  105.                        else
  106.                            uno = 1;
  107.                    else if(numero == 2)
  108.                        if(k % 2 == 0)
  109.                            dos = 2;
  110.                        else
  111.                            dos = 1;
  112.                    else if(numero == 3)
  113.                        if(k % 2 == 0)
  114.                            tres = 2;
  115.                        else
  116.                            tres = 1;
  117.                    else if(numero == 4)
  118.                        if(k % 2 == 0)
  119.                            cuatro = 2;
  120.                        else
  121.                            cuatro = 1;
  122.                    else if(numero == 5)
  123.                        if(k % 2 == 0)
  124.                            cinco = 2;
  125.                        else
  126.                            cinco = 1;
  127.                    else if(numero == 6)
  128.                        if(k % 2 == 0)
  129.                            seis = 2;
  130.                        else
  131.                            seis = 1;
  132.                    else if(numero == 7)
  133.                        if(k % 2 == 0)
  134.                            siete = 2;
  135.                        else
  136.                            siete = 1;
  137.                    else if(numero == 8)
  138.                        if(k % 2 == 0)
  139.                            ocho = 2;
  140.                        else
  141.                            ocho = 1;
  142.                    else if(numero == 9)
  143.                        if(k % 2 == 0)
  144.                            nueve = 2;
  145.                        else
  146.                            nueve = 1;
  147.                    int ganador = verifica();//le asignamos a ganador el valor que retorne la funcion verifica
  148.                    if(ganador > 0){
  149.                        mostrar();
  150.                        printf("\nEl jugador %d es el GANADOR", ganador);
  151.                        won[ganador - 1]++; //aumentamos en 1 el contador del ganador
  152.                        break;
  153.                    }
  154.                }
  155.                system("pause>null");
  156.            break;
  157.            case 's':
  158.                system("cls");
  159.                printf("El jugador 1 gano: %d partidas\n", won[0]);
  160.                printf("El jugador 2 gano: %d partidas\n", won[1]);
  161.                printf("Gracias por jugar!\n\n");
  162.                return 0;
  163.            break;
  164.            default:
  165.            break;
  166.        }
  167.    }
  168. }
  169.  
  170.