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

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  alguien que me diga el error es el juego de conecta cuatro en codigo c
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: alguien que me diga el error es el juego de conecta cuatro en codigo c  (Leído 2,950 veces)
cisar

Desconectado Desconectado

Mensajes: 1


Ver Perfil
alguien que me diga el error es el juego de conecta cuatro en codigo c
« en: 20 Mayo 2013, 02:09 am »

#include <stdio.h>
#include <stdlib.h>

int juego();
int main()
{

   int d, played=0;

    while(d!=2)
    {   system("cls");
      printf("Conecta 4\n------\n");
      printf("1)Jugar\n");
      printf("2)Salir\n\n");
      printf("\tJuegos jugados:%d\n", played);
       scanf("%d", &d);                //pide opción del menú.
       switch(d)
       {   case 1:
              juego();                //llama a la función juego.
              played++;              //el contador de juegos se incrementa.
          break;
          case 2:
          break;
          default:
              printf("\nError.. Solo elige 1 o 2...\n");

          break;
      }
   }
    return 0;

   }

int juego()
{
    int tablero[6][7], i, j, won=0, turno=1, seleccion;
    for(i=0;i<7;i++)
        for(j=0;j<6;j++)
            tablero[j]=0;     //Pone todo vacio
    while(!won)
    {   system("cls");
        for(i=0;i<7;i++)
            printf(" %d\t", i+1);  //imprime la numeración de las columnas
        printf("\n");
        for(i=0;i<6;i++)
        {    for(j=0;j<7;j++)                    //recorre cada espacio del tablero
                if(tablero[j]==0)
                   printf("( )\t");            //imprimiendo la matriz, y segun lo que tenga
                else if(tablero[j]==1)
                   printf("(X)\t");            //pone un espacio, X, o O
                else
                    printf("(O)\t");
            printf("\n");
        }
        if(turno==1)
            printf("\nTurno de X.");
        else
            printf("\nTurno de O.");
        printf("En que columna tiraras?");
        scanf("%d", &seleccion);
        seleccion--;  //porque esta numerado desde el 1, y la compu cuenta desde el 0.
        if(tablero[seleccion][0]!=0)
            printf("\nError columna llena o fuera de rango\n");
        else
        {   for(i=0;i<6;i++)
                if(tablero[seleccion][i+1]!=0||i==5)
                {   tablero[seleccion]=turno;   //si el espacio que sigue esta lleno, o esta en el borde, lo ocupa.
                    i=6;
                }

            for(i=0;i<7;i++)
            {   for(j=0;j<6;j++)
                {   if(tablero[j]==1||tablero[j]==2)
                       {
                            if(tablero[j]==tablero[j+1]&&tablero[j]==tablero[j+2]&&tablero[j]==tablero[j+3])
                                won=1; //checa para la derecha

                            if(tablero[j]==tablero[i+1][j]&&tablero[j]==tablero[i+2][j]&&tablero[j]==tablero[i+3][j])
                                won=1;  //checa para abajo

                            if(tablero[j]==tablero[i+1][j+1]&&tablero[j]==tablero[i+2][j+2]&&tablero[j]==tablero[i+3][j+3])
                                won=1;//diagonal a derecha
                        if(tablero[j]==tablero[i+1][j-1]&&tablero[j]==tablero[i+2][j-2]&&tablero[j]==tablero[i+3][j-3])
                                won=1; //diag izquierda
                    }
                }
            }
            if(won==1)
            {   system("cls");

                for(i=0;i<7;i++)
                    printf(" %d\t", i+1);  //imprime la numeración de las columnas
                printf("\n");
                for(i=0;i<7;i++)
                {
                    for(j=0;j<6;j++)
                        if(tablero[j]==0)
                            printf("( )\t");
                        else if(tablero[j]==1)
                            printf("(X)\t");
                        else
                            printf("(O)\t");
                    printf("\n");
                }
                printf("Bien! gano ");
                if(turno==1)
                    printf("X\n");
                else
                    printf("O\n");
            }
            if(turno==1)
                turno=2;     //cambia los turnos
            else
                turno=1;

        }
    }
    fflush(stdin);
    getchar();

    return juego;
}


En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: alguien que me diga el error es el juego de conecta cuatro en codigo c
« Respuesta #1 en: 20 Mayo 2013, 15:00 pm »

Usa las etiquetas GESHI

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int juego();
  5. int main()
  6. {
  7.  
  8.   int d, played=0;
  9.  
  10.    while(d!=2)
  11.    {   system("cls");
  12.      printf("Conecta 4\n------\n");
  13.      printf("1)Jugar\n");
  14.      printf("2)Salir\n\n");
  15.      printf("\tJuegos jugados:%d\n", played);
  16.       scanf("%d", &d);                //pide opción del menú.
  17.       switch(d)
  18.       {   case 1:
  19.              juego();                //llama a la función juego.
  20.              played++;              //el contador de juegos se incrementa.
  21.          break;
  22.          case 2:
  23.          break;
  24.          default:
  25.              printf("\nError.. Solo elige 1 o 2...\n");
  26.  
  27.          break;
  28.      }
  29.   }
  30.    return 0;
  31.  
  32.   }

Por otro lado, deberías decirnos el error. Así acabamos antes (de momento veo que no has inicializado la variable d).


« Última modificación: 20 Mayo 2013, 15:02 pm por amchacon » En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
s00rk

Desconectado Desconectado

Mensajes: 195



Ver Perfil
Re: alguien que me diga el error es el juego de conecta cuatro en codigo c
« Respuesta #2 en: 20 Mayo 2013, 16:45 pm »

Cuando indicas donde puso la ficha el jugador esta mal
tablero[seleccion]=turno;

Es una matriz no un vector, debes indicarle ambos puntos sobre donde guardaras, igualmente cuando buscas quien gano estas solo indicando un punto y no ambos.
En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: alguien que me diga el error es el juego de conecta cuatro en codigo c
« Respuesta #3 en: 20 Mayo 2013, 17:29 pm »

Si estaban puestos. Lo que ocurre que al no meter el código entre las etiquetas GeSHi de C++ no salen. Simplemente lo que pongo a continuación es el mismo código entre dichas etiquetas:


Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int juego();
  5. int main()
  6. {
  7.  
  8. int d=3, played=0;
  9.  
  10.    while(d!=2)
  11.    {   system("cls");
  12. printf("\tJuegos jugados:%d\n", played);
  13. printf("Conecta 4\n------\n");
  14. printf("1)Jugar\n");
  15. printf("2)Salir\n\n");
  16.    scanf("%d", &d);                //pide opción del menú.
  17.     switch(d)
  18.     {   case 1:
  19.        juego();                //llama a la función juego.
  20.        played++;              //el contador de juegos se incrementa.
  21.    break;
  22.    case 2:
  23.    break;
  24.    default:
  25.        printf("\nError.. Solo elige 1 o 2...\n");
  26.  
  27.    break;
  28. }
  29. }
  30.    return 0;
  31.  
  32. }
  33.  
  34. int juego()
  35. {
  36.    int tablero[6][7], i, j, won=0, turno=1, seleccion;
  37.    for(i=0;i<7;i++)
  38.        for(j=0;j<6;j++)
  39.            tablero[i][j]=0;     //Pone todo vacio
  40.    while(!won)
  41.    {   system("cls");
  42.        for(i=0;i<7;i++)
  43.            printf(" %d\t", i+1);  //imprime la numeración de las columnas
  44.        printf("\n");
  45.        for(i=0;i<6;i++)
  46.        {    for(j=0;j<7;j++)                    //recorre cada espacio del tablero
  47.                if(tablero[j][i]==0)
  48.                   printf("( )\t");            //imprimiendo la matriz, y segun lo que tenga
  49.                else if(tablero[j][i]==1)
  50.                   printf("(X)\t");            //pone un espacio, X, o O
  51.                else
  52.                    printf("(O)\t");
  53.            printf("\n");
  54.        }
  55.        if(turno==1)
  56.            printf("\nTurno de X.");
  57.        else
  58.            printf("\nTurno de O.");
  59.        printf("En que columna tiraras?");
  60.        scanf("%d", &seleccion);
  61.        seleccion--;  //porque esta numerado desde el 1, y la compu cuenta desde el 0.
  62.        if(tablero[seleccion][0]!=0)
  63.            printf("\nError columna llena o fuera de rango\n");
  64.        else
  65.        {   for(i=0;i<6;i++)
  66.                if(tablero[seleccion][i+1]!=0||i==5)
  67.                {   tablero[seleccion][i]=turno;   //si el espacio que sigue esta lleno, o esta en el borde, lo ocupa.
  68.                    i=6;
  69.                }
  70.  
  71.            for(i=0;i<7;i++)
  72.            {   for(j=0;j<6;j++)
  73.                {   if(tablero[i][j]==1||tablero[i][j]==2)
  74.                       {
  75.                            if(tablero[i][j]==tablero[i][j+1]&&tablero[i][j]==tablero[i][j+2]&&tablero[i][j]==tablero[i][j+3])
  76.                                won=1; //checa para la derecha
  77.  
  78.                            if(tablero[i][j]==tablero[i+1][j]&&tablero[i][j]==tablero[i+2][j]&&tablero[i][j]==tablero[i+3][j])
  79.                                won=1;  //checa para abajo
  80.  
  81.                            if(tablero[i][j]==tablero[i+1][j+1]&&tablero[i][j]==tablero[i+2][j+2]&&tablero[i][j]==tablero[i+3][j+3])
  82.                                won=1;//diagonal a derecha
  83.                        if(tablero[i][j]==tablero[i+1][j-1]&&tablero[i][j]==tablero[i+2][j-2]&&tablero[i][j]==tablero[i+3][j-3])
  84.                                won=1; //diag izquierda
  85.                    }
  86.                }
  87.            }
  88.            if(won==1)
  89.            {   system("cls");
  90.  
  91.                for(i=0;i<7;i++)
  92.                    printf(" %d\t", i+1);  //imprime la numeración de las columnas
  93.                printf("\n");
  94.                for(i=0;i<7;i++)
  95.                {
  96.                    for(j=0;j<6;j++)
  97.                        if(tablero[j][i]==0)
  98.                            printf("( )\t");
  99.                        else if(tablero[j][i]==1)
  100.                            printf("(X)\t");
  101.                        else
  102.                            printf("(O)\t");
  103.                    printf("\n");
  104.                }
  105.                printf("Bien! gano ");
  106.                if(turno==1)
  107.                    printf("X\n");
  108.                else
  109.                    printf("O\n");
  110.            }
  111.            if(turno==1)
  112.                turno=2;     //cambia los turnos
  113.            else
  114.                turno=1;
  115.  
  116.        }
  117.    }
  118.    fflush(stdin);
  119.    getchar();
  120.  
  121.    return juego;
  122. }
  123.  


Saluditos!. .... ..
« Última modificación: 20 Mayo 2013, 18:47 pm por leosansan » En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: alguien que me diga el error es el juego de conecta cuatro en codigo c
« Respuesta #4 en: 20 Mayo 2013, 18:25 pm »

¡¡¡Ya puedes jugar!!!, tan solo tenías mal declaradas las dimensiones de la matriz tablero en los for. Te he incluido una pequeña variante por si entran un caracter no numérico no se quede en un bucle el programa:

Código
  1.  
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4.  
  5. int juego();
  6. int main()
  7. {
  8.  
  9. int d,played=0,cont=0;
  10.    while(d!=2)
  11.    {   //system("cls");
  12. cont=0;
  13. printf("Conecta 4\n------\n");
  14. printf("1)Jugar\n");
  15. printf("2)Salir\n\n");
  16. printf("\tJuegos jugados:%d\n", played);
  17.    cont=scanf("%d", &d);
  18.    if (cont==0){
  19.            d=3;
  20.            while(getchar()!='\n');
  21.    }
  22.  
  23.                        //pide opción del menú.
  24.     switch(d)
  25.     {   case 1:
  26.        juego();                //llama a la función juego.
  27.        played++;              //el contador de juegos se incrementa.
  28.    break;
  29.    case 2:
  30.    break;
  31.    default:
  32.        printf("\nError.. Solo elige 1 o 2...\n");
  33.  
  34.    break;
  35. }
  36. }
  37.    return 0;
  38.  
  39. }
  40.  
  41. int juego()
  42. {
  43.    int tablero[6][7], i, j, won=0, turno=1, seleccion;
  44.    for(i=0;i<6;i++)
  45.        for(j=0;j<7;j++)
  46.            tablero[i][j]=0;     //Pone todo vacio
  47.    while(!won)
  48.    {   system("cls");
  49.        for(i=0;i<6;i++)
  50.            printf(" %d\t", i+1);  //imprime la numeración de las columnas
  51.        printf("\n");
  52.        for(i=0;i<6;i++)
  53.        {    for(j=0;j<7;j++)                    //recorre cada espacio del tablero
  54.                if(tablero[j][i]==0)
  55.                   printf("( )\t");            //imprimiendo la matriz, y segun lo que tenga
  56.                else if(tablero[j][i]==1)
  57.                   printf("(X)\t");            //pone un espacio, X, o O
  58.                else
  59.                    printf("(O)\t");
  60.            printf("\n");
  61.        }
  62.        if(turno==1)
  63.            printf("\nTurno de X.");
  64.        else
  65.            printf("\nTurno de O.");
  66.        printf("En que columna tiraras?");
  67.        scanf("%d", &seleccion);
  68.        seleccion--;  //porque esta numerado desde el 1, y la compu cuenta desde el 0.
  69.        if(tablero[seleccion][0]!=0)
  70.            printf("\nError columna llena o fuera de rango\n");
  71.        else
  72.        {   for(i=0;i<6;i++)
  73.                if(tablero[seleccion][i+1]!=0||i==5)
  74.                {   tablero[seleccion][i]=turno;   //si el espacio que sigue esta lleno, o esta en el borde, lo ocupa.
  75.                    i=6;
  76.                }
  77.  
  78.            for(i=0;i<7;i++)
  79.            {   for(j=0;j<6;j++)
  80.                {   if(tablero[i][j]==1||tablero[i][j]==2)
  81.                       {
  82.                            if(tablero[i][j]==tablero[i][j+1]&&tablero[i][j]==tablero[i][j+2]&&tablero[i][j]==tablero[i][j+3])
  83.                                won=1; //checa para la derecha
  84.  
  85.                            if(tablero[i][j]==tablero[i+1][j]&&tablero[i][j]==tablero[i+2][j]&&tablero[i][j]==tablero[i+3][j])
  86.                                won=1;  //checa para abajo
  87.  
  88.                            if(tablero[i][j]==tablero[i+1][j+1]&&tablero[i][j]==tablero[i+2][j+2]&&tablero[i][j]==tablero[i+3][j+3])
  89.                                won=1;//diagonal a derecha
  90.                        if(tablero[i][j]==tablero[i+1][j-1]&&tablero[i][j]==tablero[i+2][j-2]&&tablero[i][j]==tablero[i+3][j-3])
  91.                                won=1; //diag izquierda
  92.                    }
  93.                }
  94.            }
  95.            if(won==1)
  96.            {   system("cls");
  97.  
  98.                for(i=0;i<7;i++)
  99.                    printf(" %d\t", i+1);  //imprime la numeración de las columnas
  100.                printf("\n");
  101.                for(i=0;i<7;i++)
  102.                {
  103.                    for(j=0;j<6;j++)
  104.                        if(tablero[j][i]==0)
  105.                            printf("( )\t");
  106.                        else if(tablero[j][i]==1)
  107.                            printf("(X)\t");
  108.                        else
  109.                            printf("(O)\t");
  110.                    printf("\n");
  111.                }
  112.                printf("Bien! gano ");
  113.                if(turno==1)
  114.                    printf("X\n");
  115.                else
  116.                    printf("O\n");
  117.            }
  118.            if(turno==1)
  119.                turno=2;     //cambia los turnos
  120.            else
  121.                turno=1;
  122.  
  123.        }
  124.    }
  125.    fflush(stdin);
  126.    getchar();
  127.  
  128.    return juego;
  129. }
  130.  

Ssaluditos!. ... ..

P.D: Sería interesante que desarrollaras una variante donde el "otro" jugador sea "la máquina". LLeva algo de desarrollo de I.A pero vale la pena el intentarlo.
« Última modificación: 20 Mayo 2013, 18:45 pm por leosansan » En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: alguien que me diga el error es el juego de conecta cuatro en codigo c
« Respuesta #5 en: 21 Mayo 2013, 17:18 pm »

¡¡¡Ya puedes jugar!!:

   Sólo comentar que en lugar de un tablero "aburrido" como éste:



   podemos tener algo más "vistoso", sin usar librerías adicionales":



   siguiendo lo indicado en

http://foro.elhacker.net/programacion_cc/c-t390579.0.html

    sin más que añadir a lo expuesto en el post que indico encima system("color 70)" ....... ¡y a  jugar con colorines!.


¡Saluditos! .... ..
« Última modificación: 21 Mayo 2013, 22:15 pm por leosansan » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines