elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Juego del gato
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: Juego del gato  (Leído 21,883 veces)
m@o_614


Desconectado Desconectado

Mensajes: 389


Ver Perfil
Re: Juego del gato
« Respuesta #10 en: 25 Abril 2012, 04:03 am »

muchas gracias s00rk ya me fije en donde me estaba equivocando en validar segunda fila no era i=1,j=1 era i=1,j=0 :o y ya le agregue tambien la diagonal invertida

Código
  1. int i,j,suma=0;
  2.    for(i=0;i<MAX_FILA;i++)
  3.    {
  4.        if((gato[i][i])==X_ASCII)//VALIDAR DIAGONAL
  5.           suma=suma+gato[i][i];
  6.    }
  7.    if(suma==264)
  8.       printf("El ganador es el jugador X\n");
  9.  
  10.    for(i=2,j=0;j<MAX_COLUM;i--,j++)//VALIDA DIAGONAL INVERTIDA
  11.    {
  12.        if((gato[i][j]==X_ASCII))
  13.           suma=suma+gato[i][j];
  14.    }
  15.    if(suma==264)
  16.       printf("El ganador es el jugador X\n");
  17.  
  18.    for(i=0,j=0;j<MAX_COLUM;j++)//VALIDA LA PRIMERA FILA
  19.    {
  20.       if((gato[i][j])==X_ASCII)//aqui tambien me falta validar para O pero eso ya despues
  21.          suma=suma+gato[i][j];
  22.    }
  23.    if(suma==264)
  24.       printf("El ganador es el jugador X\n");
  25.  
  26.    for(i=1,j=0;j<MAX_COLUM;j++)//VALIDA SEGUNDA FILA
  27.    {
  28.        if((gato[i][j])==X_ASCII)
  29.           suma=suma+gato[i][j];
  30.    }
  31.    if(suma==264)
  32.       printf("El ganador es el jugador X\n");
  33.  
  34.    for(i=2,j=0;j<MAX_COLUM;j++)//VALIDA TERCER FILA
  35.    {
  36.        if(gato[i][j]==X_ASCII)
  37.           suma=suma+gato[i][j];
  38.    }
  39.    if(suma==264)
  40.       printf("El ganador es el jugador X\n");

todavia me faltan varias cosas más pero como todavia estoy un poco verde para programar voy a paso de tortuga :-\


En línea

s00rk

Desconectado Desconectado

Mensajes: 195



Ver Perfil
Re: Juego del gato
« Respuesta #11 en: 25 Abril 2012, 18:16 pm »

Algo que te falta ahi es terminar el metodo si es que gano y si no gano regresar la suma a 0, para en el siguiente chequeo tenga 0 y no lo que ya tenia anteriormente ya que de esa forma si en el primero se encontro una X, pero no e toda la diagonal suma ya tendra un valor y si en una fila estan todas las X, pero como suma ya tenia un valor pues ya con eso no encontrara un ganador.

Ejemplo:

if(suma == 264)
{
    // Mensaje de ganador
    return; // Termina el metodo o la funcion ..
}
suma = 0; // Regresamos suma a su valor original


En línea

m@o_614


Desconectado Desconectado

Mensajes: 389


Ver Perfil
Re: Juego del gato
« Respuesta #12 en: 30 Abril 2012, 03:20 am »

pues aqui tengo el codigo, ahora ya compila bien a excepcion de dos errores que encontre, el primero

que las primeras veces que le meto X u O a la matriz me verifica perfectamente si hay ganador o no, pero a partir como del 5to turno ya no lo hace :-\ me aparece que el ganador es X, cuando en realidad no hay ganador

y el segundo que le implemente una bandera ganador para que el do-while me siga iterando mientras el numero de turnos sea menos o igual a 9 y la bandera sea igual a 0(osea que todavia no haya encontrado ganador)pero en vez de romper el ciclo inmediatamente cuando una de estas condiciones no se cumple me itera una vez más antes de salirse del ciclo.

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4.  
  5. #define MAX_FILA 3
  6. #define MAX_COLUM 3
  7. #define MAX_JUG 2
  8. #define MAX_TURNO 9
  9. #define O_ASCII 79
  10. #define X_ASCII 88
  11.  
  12. void turno_jugador();
  13. void imprimir_tablero(char gato[MAX_FILA][MAX_COLUM]);
  14. int verificar_ganador(char gato[MAX_FILA][MAX_COLUM]);
  15.  
  16. int main()
  17. {
  18.    printf("Juego del Gato v1.0\n");
  19.    turno_jugador();
  20.    return 0;
  21. }
  22.  
  23. void imprimir_tablero(char gato[MAX_FILA][MAX_COLUM])
  24. {
  25.    int i,j;
  26.    for(i=0;i<MAX_FILA;i++)
  27.    {
  28.        for(j=0;j<MAX_COLUM;j++)
  29.        {
  30.            if((gato[i][j]=='X')||(gato[i][j]=='O'))
  31.                printf("%c",gato[i][j]);
  32.            else
  33.               printf(" ");
  34.               printf("|");
  35.        }
  36.        printf("\n");
  37.           printf("______");
  38.        printf("\n");
  39.    }
  40. }
  41.  
  42. int verificar_ganador(char gato[MAX_FILA][MAX_COLUM])
  43. {
  44.    int i,j,suma=0,ganador;
  45.  
  46.    for(i=0;i<MAX_FILA;i++)
  47.    {
  48.        for(j=0;j<MAX_COLUM;j++)
  49.        {
  50.            if((gato[i][j])==X_ASCII)//me falta validar para O tambien, pero eso despues
  51.               suma=suma+gato[i][j];
  52.        }
  53.    }
  54.     if(suma==264)
  55.     {
  56.         printf("El ganador es el jugador X\n");
  57.         ganador=1;
  58.     }
  59.     else
  60.        ganador=0;
  61.     return ganador;
  62. }
  63. void turno_jugador()
  64. {
  65.    int fila,columna,i,turno,ganador;
  66.    char jugador[]={'X','O'},letra;
  67.    char gato[MAX_FILA][MAX_COLUM];
  68.    turno=1;
  69.    do
  70.    {
  71.        for(i=0;i<MAX_JUG;i++)
  72.        {
  73.            printf("Es turno del jugador %c\n",jugador[i]);
  74.            printf("Dime la fila (1 a 3): ");
  75.            scanf("%d",&fila);
  76.            printf("Dime la columna(1 a 3): ");
  77.            scanf("%d",&columna);
  78.            letra=jugador[i];
  79.            gato[fila-1][columna-1]=letra;
  80.            imprimir_tablero(gato);
  81.            ganador=verificar_ganador(gato);
  82.            printf("Pulse enter para continuar...\n");
  83.            getch();
  84.            system("cls");
  85.            turno++;
  86.        }
  87.    }while((turno<=MAX_TURNO)&&(!ganador));
  88. }
  89.  

de antemano gracias
En línea

s00rk

Desconectado Desconectado

Mensajes: 195



Ver Perfil
Re: Juego del gato
« Respuesta #13 en: 30 Abril 2012, 03:41 am »

El error de que aveces gana y no es verdad podria ser por esto mira imaginemos que nuestra tabla quedo asi:

X | X | O
O | X |

Aqui ya en el quinto movimienten tu codigo

Código
  1. for(i=0;i<MAX_FILA;i++)
  2.    {
  3.        for(j=0;j<MAX_COLUM;j++)
  4.        {
  5.            if((gato[i][j])==X_ASCII)//me falta validar para O tambien, pero eso despues
  6.               suma=suma+gato[i][j];
  7.        }
  8.    }

llegara a encontrar las 3 X primero por lo que al final en ese turno obtendras suma = 264, lo que vendria siend el ganador, para evitar esto ese bucle deberia quedar asi:

Código
  1. for(i=0;i<MAX_FILA;i++)
  2.    {
  3.        for(j=0;j<MAX_COLUM;j++)
  4.        {
  5.            if((gato[i][j])==X_ASCII)//me falta validar para O tambien, pero eso despues
  6.               suma=suma+gato[i][j];
  7.        }
  8.        if(suma == 264)
  9.        {
  10.            printf("El ganador es el jugador X\n");
  11.            ganador=true;
  12.        }
  13.        suma = 0;
  14.    }
  15. if(ganador) // Esto para asi ya no seguir buscando si ya se encontro el ganador
  16.    return true;

Luego tu error de que sigue dndo vuelta es por tu mismo while la variable ganador mejor tratala como bool y asi ya te funcionaria, junto con el codigo que te puse aqui corregido.
« Última modificación: 30 Abril 2012, 03:43 am por s00rk » En línea

Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Juego Gato Inteligente.
Programación C/C++
xcoverdalex 5 7,593 Último mensaje 2 Septiembre 2010, 15:00 pm
por xcoverdalex
Juego Gato
Java
Lain0x 2 9,681 Último mensaje 22 Marzo 2011, 05:43 am
por sapito169
juego del gato
Java
m@o_614 4 4,937 Último mensaje 8 Mayo 2012, 22:04 pm
por m@o_614
Ayuda con el juego del gato
Programación C/C++
Dieux Rablia 3 3,550 Último mensaje 20 Mayo 2012, 18:59 pm
por Dieux Rablia
Recomendad un juego al gato. « 1 2 3 »
Juegos y Consolas
Saberuneko 21 29,168 Último mensaje 19 Junio 2012, 13:40 pm
por Saberuneko
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines