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

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Juego 4 en linea. Ayuda!!!
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] 3 Ir Abajo Respuesta Imprimir
Autor Tema: Juego 4 en linea. Ayuda!!!  (Leído 10,948 veces)
mathias_vg

Desconectado Desconectado

Mensajes: 39


Ver Perfil
Re: Juego 4 en linea. Ayuda!!!
« Respuesta #10 en: 5 Junio 2013, 15:52 pm »

Si uso DevC++, debido a que me piden que se entregue para que funcione con ese compilador. Como puedo hacer para que me funcione en DevC++?

Muchas Gracias


En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Juego 4 en linea. Ayuda!!!
« Respuesta #11 en: 5 Junio 2013, 15:58 pm »

Si uso DevC++, debido a que me piden que se entregue para que funcione con ese compilador. Como puedo hacer para que me funcione en DevC++?

Muchas Gracias

Estoy en un ordenador de prestado, pero me hará el loco e instalaré el Dev-C++ a  ver qué pasa. Tardaré unos minutitos.

Saluditos, otra vez! .... ..


En línea

mathias_vg

Desconectado Desconectado

Mensajes: 39


Ver Perfil
Re: Juego 4 en linea. Ayuda!!!
« Respuesta #12 en: 5 Junio 2013, 16:05 pm »

Ok, espero tu respuesta. muchas gracias por tu tiempo leosansan. Saludos!
En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Juego 4 en linea. Ayuda!!!
« Respuesta #13 en: 5 Junio 2013, 16:41 pm »

Ok, espero tu respuesta. muchas gracias por tu tiempo leosansan. Saludos!


¡Pá tras ni pá coger impulso!, como diría un buen canarion.

Es como volver a las cavernas, menos mal que está la imagen del post anterior para comprobar que efectivamente compila, no así en Dev-C++.

No acabo de comprender, si de entender, los múltiples mensajes que "larga" tu compilador. En esencia creo que el problema lo presenta por la declaración de las variables globales y el uso de un parámetro, dim o dim_plus para dimensionar las matrices, ya que no son variables constantes, que es lo que supongo espera el compilador, así como la declaración de variables "en medio" del código, cosa no permitida en C89 y sí en C99, así como el uso que hago de arrays de longitud variable o arrays cuya dimensión no es una constante definida previamente sino que se "escanea" en medio del código.

En fin, que no soy un experto en Dev-C++,nací al mundo del C/C++ de  la mano del Code::Blocks, habiendo probado primero con el tuyo, Pelles C, Borland Builder, VisualStudio y algunos más y de todos ellos el que más me convenció para mis propósitos fue el Code::Blocks, con diferencia.

Espero que alguien entre quienes sigan el tema tenga más conocimientos de Dev-C++ y del lenguaje C que yo y pueda hacerlo rular en el dichoso Dev-C++.

Sorry, muchos sorry, la intención era buena, pero no pienso dejar mi Code::Blocks, en el que incluso puedo configurar lo para que acepte las novedades del C++11, por un compilador que no sé si ni tan siquiera llegó a adaptarse a las especificaciones del C99, más que nada por los años que hace que no se actualiza.

De todas formas siempre estoy abierto a aprender, cualquier sugerencia y/o lección magistral que me den será bienvenida, tanto de C como de Dev-C++.

Pero lo positivo es que tienes al menos un código por el que guiarte para tu tarea, trata de adaptarlo. Yo si fuera la adaptación para algo más nuevo me molestaría en hacerlo, pero como dije al principio "¡Pá tras ni pá coger impulso!".

Saluditos! .... ..
En línea

mathias_vg

Desconectado Desconectado

Mensajes: 39


Ver Perfil
Re: Juego 4 en linea. Ayuda!!!
« Respuesta #14 en: 5 Junio 2013, 16:48 pm »

Ok voy a tratar de verlo con algun compañero de clase que han tenido el mismo problema pero creo que lograron solucionarlo, cualquier cosa te comento luego para ver bien en que quedo esto jeje.

Saludos!!! y una vez mas gracias jeej
En línea

mathias_vg

Desconectado Desconectado

Mensajes: 39


Ver Perfil
Re: Juego 4 en linea. Ayuda!!!
« Respuesta #15 en: 5 Junio 2013, 21:18 pm »

leosansan, eh estado tratando de seguir con el juego y hasta ahora he avanzado un poco aca abajo te cuelgo lo que puede hacer, a ver que tan bien esta o que me podes sugerir.

Nota en el juego fije la coordenada Y (dim) porque tengo que colocar la ficha en el lugar mas bajo posible.

Aguardo tus comentarios, saludos!!!

Código
  1. #include <stdio.h>
  2. #include <iostream.h>
  3. int main()
  4. {
  5.  
  6.    char d;
  7.    printf("\n\n\n     JUEGO CUATRO EN LINEA\n\n\n\n\n\n\n");
  8.    printf("       Nueva partida (S/N)");
  9.    scanf("%c",&d);
  10.    int n=0,i=0,j=0,dim=0,resto=0;
  11.    printf("\n\n\n\nIngresa la dimension del tablero de juego:\n\n");
  12.    scanf (" \n%d",&dim);
  13.    char matriz[dim][dim];
  14.    do
  15.    {
  16.        for (i=1;i<=dim;i++)
  17.        {
  18.            for (j=1;j<=dim;j++)
  19.            {
  20.                if ((matriz[i][j]!='X') && (matriz[i][j]!='O'))
  21.                    printf("%c ",'.');
  22.                else
  23.                    printf ("%c ",'X');
  24.            }
  25.            printf("\n");
  26.        }
  27.        while (resto<=(dim*dim))
  28.        {
  29.         if ((resto%2)==0)
  30.        {
  31.         printf("\nJuega JUGADOR 1: ");
  32.         scanf (" %d",&n);
  33.            matriz[dim][n]='O';
  34.            printf ("%c\n",matriz[dim][n]);
  35.            for (i=1;i<=dim;i++)
  36.        {
  37.            for (j=1;j<=dim;j++)
  38.            {
  39.                if ((matriz[i][j]!='X') && (matriz[i][j]!='O'))
  40.                    printf("%c ",'.');
  41.                else
  42.                    if ((matriz[i][j]!='X') && (matriz[i][j]!='.'))
  43. printf ("%c ",'O');
  44. else
  45. printf ("%c ",'X');
  46.            }
  47.            printf("\n");
  48.        }
  49.        }
  50.        else
  51.        {
  52.         printf("\nJuega JUGADOR 2: ");
  53.            scanf (" %d",&n);
  54.            matriz[dim][n]='X';
  55.            printf ("%c\n",matriz[dim][n]);
  56.            for (i=1;i<=dim;i++)
  57.        {
  58.            for (j=1;j<=dim;j++)
  59.            {
  60.                if ((matriz[i][j]!='X') && (matriz[i][j]!='O'))
  61.                    printf("%c ",'.');
  62.                else
  63.                if ((matriz[i][j]!='X') && (matriz[i][j]!='.'))
  64. printf ("%c ",'O');
  65. else
  66. printf ("%c ",'X');
  67.  
  68.            }
  69.            printf("\n");
  70.        }
  71.        }
  72.        resto++;
  73.        }
  74.  
  75.     }while (1);
  76.    return 0;
  77.    system("PAUSE");
  78. }
  79.  
  80.  
En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Juego 4 en linea. Ayuda!!!
« Respuesta #16 en: 5 Junio 2013, 22:25 pm »

leosansan, eh estado tratando de seguir con el juego y hasta ahora he avanzado un poco aca abajo te cuelgo lo que puede hacer, a ver que tan bien esta o que me podes sugerir.

Nota en el juego fije la coordenada Y (dim) porque tengo que colocar la ficha en el lugar mas bajo posible.

Aguardo tus comentarios, saludos!!!


Lamento tener que corregir a quien te puso esta tarea ya que su nombre es "conecta 4", donde las fichas obligatoriamente "caen" al fondo, de ahí que se rellenen de esa manera. En cambio, en el "cuatro en ralla" se "escribe" en cualquier posición, de ahí que tanto amchacon como yo te hallamos dicho que eran dos los scanf, uno para cada coordenada. Pero en el conecta-4 efectivamente sólo hace falta uno ya que la ficha "cae" en la columna indicada por el scanf y se parará cuando tropiece con otra.

Te dejo en el código que te paso algunas sugerencias. Lamentablemente ya por hoy no tengo más tiempo. Por cierto, tienes mal una librería, te la dejo corregida. La stdlib sería para usar system y "limpiar la pantalla después de cada jugada:


Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main()
  4. {
  5.  
  6.    char d;
  7.    printf("\n\n\n     JUEGO CUATRO EN LINEA\n\n\n\n\n\n\n");
  8.    printf("       Nueva partida (S/N)");
  9.    scanf("%c",&d);   /*<==esto asi no sirve. Tienes que hacer un do-while*/
  10.    /*para si es "s" jugar y si no salir*/
  11.    int n=0,i=0,j=0,dim=0,resto=0,/*<<<<<esto es nuevo>>>>>*/jugador=1;
  12.    printf("\n\n\n\nIngresa la dimension del tablero de juego:\n\n");
  13.    scanf ("%d",&dim);
  14.    char matriz[dim][dim];
  15.    do
  16.    {
  17.        for (i=1;i<=dim;i++)
  18.        {
  19.            for (j=1;j<=dim;j++)
  20.            {
  21.                if ((matriz[i][j]!='X') && (matriz[i][j]!='O'))
  22.                    printf("%c ",'.');
  23.                else
  24.                    printf ("%c ",'X');
  25.            }
  26.            printf("\n");
  27.        }
  28.        while (resto<=(dim*dim))
  29.        {
  30.         /*if ((resto%2)==0)*/
  31.         if (jugador==1)/*el codigo es mas eficiente porque se
  32.                 ahorra dim*dim divisiones y calculo de restos*/
  33.        {
  34.         jugador++;
  35.         printf("\nJuega JUGADOR 1: ");
  36.         scanf (" %d",&n);
  37.            matriz[dim][n]='O';
  38.            printf ("%c\n",matriz[dim][n]);
  39.            for (i=1;i<=dim;i++)
  40.        {
  41.            for (j=1;j<=dim;j++)
  42.            {
  43.                /*<==aqui tienes que revisar los if porque si la posicion*/
  44.            /* esta ocupada por X o por O , entonces es matriz[dim-1][n]='O';
  45.             es decir, sube, Tal como lo tienes los valores que repiten posicion
  46.             borran a los anteriores y no sales nunca de la ultima linea*/
  47.                if ((matriz[i][j]!='X') && (matriz[i][j]!='O'))
  48.                    printf("%c ",'.');
  49.                else
  50.                    if ((matriz[i][j]!='X') && (matriz[i][j]!='.'))
  51. printf ("%c ",'O');
  52. else
  53. printf ("%c ",'X');
  54.            }
  55.            printf("\n");
  56.        }
  57.        }
  58.  
  59.        else
  60.        {
  61.            jugador=1;
  62.         printf("\nJuega JUGADOR 2: ");
  63.            scanf (" %d",&n);
  64.            matriz[dim][n]='X';
  65.            printf ("%c\n",matriz[dim][n]);
  66.            for (i=1;i<=dim;i++)
  67.        {
  68.            for (j=1;j<=dim;j++)
  69.            {
  70.                /*<==IDEM se superponen tal como esta*/
  71.                if ((matriz[i][j]!='X') && (matriz[i][j]!='O'))
  72.                    printf("%c ",'.');
  73.                else
  74.                if ((matriz[i][j]!='X') && (matriz[i][j]!='.'))
  75. printf ("%c ",'O');
  76. else
  77. printf ("%c ",'X');
  78.  
  79.            }
  80.            printf("\n");
  81.        }
  82.        }
  83.  
  84.        resto++;
  85.        }
  86.  
  87.     }while (1);
  88.    return 0;
  89.    system("PAUSE");
  90. }
  91.  

Saluditos! .... ..
« Última modificación: 9 Junio 2013, 22:49 pm por leosansan » En línea

mathias_vg

Desconectado Desconectado

Mensajes: 39


Ver Perfil
Re: Juego 4 en linea. Ayuda!!!
« Respuesta #17 en: 6 Junio 2013, 21:20 pm »

leosansan como estas?

Eh estado tratando de solucionar los problemas que me marcaste, mas precisamente que me imprima hacia arriba las jugadas pero no lo eh lo grado me podrias decir en que estoy fallando?

Cuelgo el codigo a continuacion

Muchas gracias

Código
  1. leosansan como estas?
  2.  
  3. Eh estado tratando de solucionar los problemas que me marcaste, mas precisamente que me imprima hacia arriba las jugadas pero no lo eh lo grado me podrias decir en que estoy fallando?
  4.  
  5. Cuelgo el codigo a continuacion
  6.  
  7. Muchas gracias
En línea

mathias_vg

Desconectado Desconectado

Mensajes: 39


Ver Perfil
Re: Juego 4 en linea. Ayuda!!!
« Respuesta #18 en: 6 Junio 2013, 21:26 pm »

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main()
  4. {
  5.  
  6.    char d;
  7.    bool termino = false;
  8.    int n=0,i=0,j=0,dim1=0,dim2=0,resto=1,contador=1;
  9.    printf("\n\n\n     JUEGO CUATRO EN LINEA\n\n\n\n\n\n\n");
  10.    printf("       Nueva partida (S/N)  ");
  11.    scanf("%c",&d);
  12.    printf("\n");
  13.    printf("       JUGADOR 1  \n");
  14.    printf("       JUGADOR 2    ");
  15.    switch (d)
  16.    {
  17.        case 'N':case 'n':
  18.        termino = true;
  19.        break;
  20.         default: printf("\n\nError");
  21.        break;
  22.        case 'S': case's':
  23.    printf("\n\n\n\nIngresa la dimension del tablero de juego:\n\n");
  24.    scanf (" \n%d",&dim2);
  25.    dim1 = dim2;
  26.    char matriz[dim1][dim2];
  27.    do
  28.    {
  29.        for (i=1;i<=dim1;i++)
  30.        {
  31.            for (j=1;j<=dim2;j++)
  32.            {
  33.                if ((matriz[i][j]!='X') && (matriz[i][j]!='O'))
  34.                {
  35.                    printf("%c ",'.');
  36.                }
  37.                else
  38.                {
  39.                    printf ("%c ",'X');
  40.                }
  41.            }
  42.            printf("\n");
  43.        }
  44.        while (resto<=(dim2*dim2))
  45.        {
  46.         if ((resto%2)==0)
  47.        {
  48.         printf("\nJuega JUGADOR 1: ");
  49.         scanf (" %d",&n);
  50.            matriz[dim1][n]='O';
  51.            printf ("%c\n",matriz[dim1][n]);
  52.            for (i=1;i<=dim1;i++)
  53.            {
  54.            for (j=1;j<=dim2;j++)
  55.            {
  56.                  if ((matriz[i][j]=='X') || (matriz[i][j]=='O'))
  57.                {
  58.                   matriz[dim1-1][n]='O';   /* corregir */
  59.                }
  60.                if ((matriz[i][j]!='X') && (matriz[i][j]!='O'))
  61.                {
  62.                    printf("%c ",'.');
  63.                }
  64.                else
  65.                {
  66.                    if ((matriz[i][j]!='X') && (matriz[i][j]!='.'))
  67.                    {
  68. printf ("%c ",'O');
  69.                    }
  70. else
  71. {
  72.         printf ("%c ",'X');
  73.                    }
  74.                }
  75.            }
  76.            printf("\n");
  77.        }
  78.    }
  79.        else
  80.        {
  81.         printf("\nJuega JUGADOR 2: ");
  82.            scanf (" %d",&n);
  83.            matriz[dim1][n]='X';
  84.            printf ("%c\n",matriz[dim1][n]);
  85.            for (i=1;i<=dim1;i++)
  86.        {
  87.            for (j=1;j<=dim2;j++)
  88.            {
  89.                 if ((matriz[i][j]=='X') || (matriz[i][j]=='O'))
  90.                {
  91.                   matriz[dim1-1][n]='X';   /* corregir */
  92.                }
  93.                if ((matriz[i][j]!='X') && (matriz[i][j]!='O'))
  94.                {
  95.                    printf("%c ",'.');
  96.                }
  97.                else
  98.                {
  99.                if ((matriz[i][j]!='X') && (matriz[i][j]!='.'))
  100.                {
  101. printf ("%c ",'O');
  102.                }
  103. else
  104. {
  105.     printf ("%c ",'X');
  106.                    }
  107.                }
  108.  
  109.            }
  110.            printf("\n");
  111.        }
  112.        }
  113.        resto++;
  114.        }
  115.        printf("EMPATE\n\n");
  116.        system("PAUSE");
  117.     }while (1);
  118.    return 0;
  119.    break;
  120.  
  121.    }
  122.    while (!termino);
  123. }
  124.  
  125.  
En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Juego 4 en linea. Ayuda!!!
« Respuesta #19 en: 6 Junio 2013, 21:29 pm »

leosansan, eh estado tratando de seguir con el juego y hasta ahora he avanzado un poco aca abajo te cuelgo lo que puede hacer, a ver que tan bien esta o que me podes sugerir.


Por si te has quedado atascado, te paso el código "ligeramente modificado" para que no tengas problemas al compilar con el Dev-C++.

He mejorado por un lado el tema de las elecciones de las variables  y, por otro lado, ya puedes entrar las fichas sin que se superpongan y que "suban", vamos que puedes rellenar el tablero sin problemas.

Harina de otro costal es implementar las condiciones para ver quien gana,si hay empate y si se "salen" del tablero. Si tienes dificultad, si es que te lo piden también, avisa y veremos que se puede hacer. En realidad ya "casi" lo tengo hecho para el "otro" juego, el original de cuatro en línea, pero claro yo hago uso de funciones y no sé si tú puedes usarlas o no. Ya me dirás.

Eso sí, aclaro que no es el código que yo haría sino una mejora en el que has propuesto:


Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main()
  4. {
  5.  
  6.    char d;
  7.    printf("\n\n\n     JUEGO CONECTA CUATRO\n\n\n\n\n\n\n");
  8.    do
  9.    {
  10.        printf("       Nueva partida (S/N): ");
  11.        scanf("%c",&d);
  12.        if (d=='n' || d=='N')
  13.        {
  14.            puts ("Hasta lueguito.");
  15.            return 1;
  16.        }
  17.        if (d!='s' && d!='S')
  18.            puts ("Elija: s / n ");
  19.    }while (d!='s' && d!='S');
  20.  
  21.    int n=0,i=0,j=0,dim=0,resto=0,k=0,jugador=1;
  22.    printf("\n\n\n\nIngresa la dimension del tablero de juego(5-10):\n\n");
  23.    do
  24.    {
  25.        scanf (" \n%d",&dim);
  26.        if (dim<5 || dim>10)
  27.            puts("Opcion no valida.\nIngresa la dimension (5-10)");
  28.    }while (dim<5 || dim>10);
  29.  
  30.    char matriz[dim+1][dim+1];
  31.    system ("cls");
  32.    do
  33.    {
  34.        for (i=1;i<=dim;i++)
  35.        {
  36.            for (j=1;j<=dim;j++)
  37.            {
  38.                matriz[i][j]='.';
  39.                    printf("%c ",matriz[i][j]);
  40.            }
  41.            printf("\n");
  42.        }
  43.        while (resto<=(dim*dim))
  44.        {
  45.            if (jugador==1)
  46.            {
  47.                jugador++;
  48.                do
  49.                {
  50.                    //
  51.                    printf("\nJuega JUGADOR 1: ");
  52.                    scanf ("%d",&n);
  53.                    if (n<1 || n>5)
  54.                        puts ("Posicion no valida.\nEntre un nuevo valor.");
  55.                }while(n<1 || n>5);
  56.                for (k=dim;k>=1;k--)/*<==este for es mejorable*/
  57.                {
  58.                        if (matriz[k][n]!='.')
  59.                            continue;
  60.                        else
  61.                        {
  62.                            matriz[k][n]='O';
  63.                            break;
  64.                        }
  65.                }
  66.                printf("\n");
  67.                for (i=1;i<=dim;i++)
  68.                {
  69.                    for (j=1;j<=dim;j++)
  70.                    {
  71.                        printf ("%c ",matriz[i][j]);
  72.                    }
  73.                    printf("\n");
  74.                }
  75.            }
  76.            else
  77.            {
  78.                jugador=1;
  79.                do
  80.                {
  81.                    printf("\nJuega JUGADOR 2: ");
  82.                    scanf ("%d",&n);
  83.                    if (n<1 || n>5)
  84.                        puts ("Posicion no valida.\nEntre un nuevo valor.");
  85.                }while(n<1 || n>5);
  86.                for (k=dim;k>=1;k--)
  87.                {
  88.                        if (matriz[k][n]!='.')
  89.                            continue;
  90.                        else
  91.                        {
  92.                            matriz[k][n]='X';
  93.                            break;
  94.                        }
  95.                }
  96.                system ("cls");printf("\n");
  97.                for (i=1;i<=dim;i++)
  98.                {
  99.                    for (j=1;j<=dim;j++)
  100.                    {
  101.                        printf ("%c ",matriz[i][j]);
  102.                    }
  103.                    printf("\n");
  104.                }
  105.            }
  106.  
  107.        resto++;
  108.        }
  109.     }while (1);
  110.    return 0;
  111.    system("PAUSE");
  112. }
  113.  

Saluditos! .... ..

« Última modificación: 7 Junio 2013, 06:17 am por leosansan » En línea

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

Ir a:  

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