Juego 4 en linea. Ayuda!!!

Iniciado por mathias_vg, 3 Junio 2013, 16:47 PM

0 Miembros y 5 Visitantes están viendo este tema.

mathias_vg

Buenas tardes soy nuevo en el foro y recien me estoy iniciando en el tema de la programacion, estoy intentando hacer el juego 4 en linea pero ando bastante trancado, elijo la dimension de mi tablero y muestro el mismo sin problemas pero cuando hago la primer jugada ya me muestra cualquier cosa.
Les dejo el codigo abajo para ver si me pueden ayudar.


Desde ya, muchas gracias.


Estoy compilando con DevC++


Codigo:

#include <stdio.h>
main()
{
   // Elejimos la dimension del tablero
   int n,k;
   printf("Ingrese la dimension del tablero de juego: ");
   scanf("%d",&n);
   char matriz[n][n];
   int i,j;

   // Mostramos el tablero inicial
   for (i=0;i<n;i++)
    {
       for (j=0;j<n;j++)
        {
           printf("%c ",matriz[j]='-');
         }
printf("\n");
    }
    printf("Haga su jugada: ");
    scanf("%d",&k);
    matriz[k][n]='X';
    printf("%c",matriz[k][n]+matriz[j]);
}

amchacon

printf("Haga su jugada: ");
scanf("%d",&k);     
matriz[k][n]='X';


Has puesto la coordenada x pero no la y  :silbar:
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

leosansan

Cita de: amchacon en  4 Junio 2013, 14:08 PM
Código (cpp) [Seleccionar]
printf("Haga su jugada: ");
scanf("%d",&k);     
matriz[k][n]='X';

Has puesto la coordenada x pero no la y  :silbar:

Es decir debería ser algo así::

printf("Haga su jugada: ");
scanf("%d",&k); 
scanf("%d",&n);     
matriz[k][n]='X';


Y además:

Código (cpp) [Seleccionar]
printf("%c",matriz[k][n]+matriz[i][j]);

te dará un cararacter "rarito". Debe ser tan solo:

Código (cpp) [Seleccionar]
printf("%c",matriz[k][n]);

Saluditos! . ... ..

mathias_vg

Hola gracias por las prontas respuestas,

si pongo tan solo printf("%c",matriz[k][n]); me deja toda la matriz en X.

Logro hacer la matriz inicial pero cuando quiero colocar un valor no me da, se me modifican varios.

Les agradezco sus respuestas!

leosansan


Una pequeñita ayudita que te dibuja el tablero y te va poniendo las X:

Código (cpp) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int n=0,i=0,j=0,k=0,dim=0;
    puts ("Ingresa la dimension del tablero de juego:");
    scanf (" %d",&dim);
    char matriz[dim][dim];
    do
    {
        for (i=0;i<dim;i++)
        {
            for (j=0;j<dim;j++)
            {
                if (matriz[i][j]!='X' )
                    printf("%c ",'-');
                else
                    printf ("%c",'X');
            }
             putchar ('\n');
        }
        puts("\nHaga su jugada. Introduzca las coordenadas:");
        scanf (" %d",&k);
        scanf (" %d",&n);
        matriz[k][n]='X';
        printf ("%c\n",matriz[k][n]);
     }while (1);
    return 0;
}


Saluditos! .... ..

leosansan

#5
Cita de: leosansan en  5 Junio 2013, 01:04 AM
Una pequeñita ayudita que te dibuja el tablero y te va poniendo las X:


Ahora de pequeñita na´de na´. Para que te hagas una idea, el código que te paso rellena la matriz según el tamaño introducido, va colocando las fichas de los jugadores, teniendo en cuenta que no estén ya ocupadas y ...... ¡el tamaño de la consola se ajusta al tamaño de la matriz!.


Código (cpp) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

int dim=0,dim_plus=0,x=0,y=0, i=0,j=0,jugador =0;

void dibujar_tablero(int matriz[dim_plus][dim_plus],int dim);
void jugadores (int matriz [dim_plus][dim_plus], int dim, int jugador);

int main()
{
   char tamanyo_consola[80];
   do
   {
       puts ("\nIngresa la dimension del tablero de juego( 3-10):");
       if (scanf ("%d",&dim)==0)
       {
           while (getchar ()!='\n');
           puts ("\nOpción erronea.Vuelva a intentarlo:");
           dim=12;
       }
   }while (dim<3  || dim>10);
   dim_plus=dim+1;
   int matriz[dim_plus][dim_plus];
   for(i=0;i<=dim;i++)
       for(j=0;j<=dim;j++)
       {
           if (i==0  && j==0 )
               matriz[i][j]=0;
           else if (i==0 && j>0)
               matriz[i][j]=j;
           else if (j==0)
               matriz[i][j]=i;
           else
               matriz[i][j]=0;
       }
   int tam_x=0,tam_y=0;
   tam_x=6*dim+2; /* con estos valores puedes*/
   tam_y=dim+14; /*cambiar el tamanyo de la consola*/
   sprintf(tamanyo_consola, "MODE %d,%d", tam_x, tam_y);
   system ("pause");
   system ("cls");
   system(tamanyo_consola);
   do
   {
       dibujar_tablero( matriz, dim);
       jugadores ( matriz ,dim,jugador);
       jugador++;
       system ("cls");
       dibujar_tablero( matriz, dim);
       jugadores ( matriz ,dim,jugador);
       system ("cls");
       dibujar_tablero( matriz, dim);
       system ("cls");
       jugador=0;
   }while (1);
   return 0;
}

void dibujar_tablero(int matriz[dim_plus][dim_plus],int dim)
{
   for(i=0;i<=dim;i++){
       for(j=0;j<=dim;j++){
           if ( matriz[i][j]==11 )
               printf(" (X) ");
           else if ( matriz[i][j]==12 )
               printf (" (O) ");
           else if (i>=1 && j>=1)
               printf (" (-) ");
           else if (i==0 && j==0  )
               printf ("  ");
           else if (j==0  )
               printf (" %d",matriz[i][j]);
           else if (i==0 || j==0  )
               printf ("  %d  ",matriz[i][j]);
           else
               printf (" %d ",matriz[i][j]);
       }
       putchar ('\n');
   }
}
void jugadores (int matriz [dim_plus][dim_plus], int dim, int jugador)
{
       do
       {
           printf("\nJUGADOR %d. Haga su jugada.\nIntroduzca las coordenadas:",jugador+1);
           do
           {
               printf ("\nIngresa la coordenada X( 1-%d):",dim);
               if (scanf (" %d",&x)==0)
               {
                   while (getchar ()!='\n');
                   puts ("\nOpción erronea.Vuelva a intentarlo:");
                   x=dim;
               }
               else if (x<1  || x>dim)
                   puts ("Valor fuera de rango.");
           }while (x<1  || x>dim);
           do
           {
               printf ("Ingresa la coordenada Y( 1-%d):",dim);
               if (scanf (" %d",&y)==0)
               {
                   while (getchar ()!='\n');
                   puts ("\nOpción erronea.Vuelva a intentarlo:");
                   y=dim;
               }
               else if (y<1  || y>dim)
                   puts ("Valor fuera de rango.");
           }while (y<1  || y>dim);

           if (matriz[x][y]!=0)
               puts ("Posicion ocupada.\nIntroduzca nuevas coordenadas.");
       }while (matriz[x][y]!=0);
       system ("cls");
       if (jugador ==0)
           matriz[x][y]=11;
       else
           matriz[x][y]=12;
}


Cualquier duda, pregunta.

Y a ti te queda implementar la condición de cuando se gana. Espero ansioso tus aportaciones.


Saluditos! .... ..
P.D: ¡Y sin un solo goto!.

mathias_vg

Muchas gracias leosansan, me ha sido de gran ayuda, pero cuando intento complilar el ultimo codigo me sale error cuando llamo al procedimiento imprimir_matriz; tampoco me dejan utilizar la el comando getchar  :-X


leosansan

Cita de: mathias_vg en  5 Junio 2013, 13:54 PM
Muchas gracias leosansan, me ha sido de gran ayuda, pero cuando intento complilar el ultimo codigo me sale error cuando llamo al procedimiento imprimir_matriz; tampoco me dejan utilizar la el comando getchar  :-X


¿De qué código me estas hablando?. El mio no tiene ni lo uno ni lo otro.

Si es uno tuyo postealo para revisarlo, pero esta ves hazlo bien: picas en donde pone GeSHi y eliges C++ y en medio de las etiquetas que aparecen copias el código. Si no, es muy difícil de entender, toda vez que el código sin etiquetas no sale completo, como el original. No te olvides, es importante para los que queramos echarte una mano.


Saluditos! .... ..

mathias_vg

Código (cpp) [Seleccionar]
\Documents and Settings\MatiasC\Escritorio\Practico 1 Soluciones\Sin Nombre1.cpp 7 C:\Documents and Settings\MatiasC\Escritorio\Practico 1 Soluciones\C [Error] variable-size type declared outside of any function
\Documents and Settings\MatiasC\Escritorio\Practico 1 Soluciones\Sin Nombre1.cpp 7 C:\Documents and Settings\MatiasC\Escritorio\Practico 1 Soluciones\C [Error] variable-size type declared outside of any function
\Documents and Settings\MatiasC\Escritorio\Practico 1 Soluciones\Sin Nombre1.cpp 8 C:\Documents and Settings\MatiasC\Escritorio\Practico 1 Soluciones\C [Error] variable-size type declared outside of any function
\Documents and Settings\MatiasC\Escritorio\Practico 1 Soluciones\Sin Nombre1.cpp 8 C:\Documents and Settings\MatiasC\Escritorio\Practico 1 Soluciones\C [Error] variable-size type declared outside of any function
In function `int main()':
\Documents and Settings\MatiasC\Escritorio\Practico 1 Soluciones\Sin Nombre1.cpp 46 C:\Documents and Settings\MatiasC\Escritorio\Practico 1 Soluciones\C [Error] `dibujar_tablero' undeclared (first use this function)
46 [Error] (Each undeclared identifier is reported only once for each function it appears in.)
\Documents and Settings\MatiasC\Escritorio\Practico 1 Soluciones\Sin Nombre1.cpp 47 C:\Documents and Settings\MatiasC\Escritorio\Practico 1 Soluciones\C [Error] cannot convert `int (*)[((unsigned int)((int)dim_plus))]' to `int (*)[2]' for argument `1' to `void jugadores(int (*)[2], int, int)'
\Documents and Settings\MatiasC\Escritorio\Practico 1 Soluciones\Sin Nombre1.cpp 51 C:\Documents and Settings\MatiasC\Escritorio\Practico 1 Soluciones\C [Error] cannot convert `int (*)[((unsigned int)((int)dim_plus))]' to `int (*)[2]' for argument `1' to `void jugadores(int (*)[2], int, int)'
C:\Documents and Settings\MatiasC\Escritorio\Practico 1 Soluciones\C Documents and Settings\MatiasC\Escritorio\Practico 1 Soluciones\Sin Nombre1.cpp: At global scope:
\Documents and Settings\MatiasC\Escritorio\Practico 1 Soluciones\Sin Nombre1.cpp 61 C:\Documents and Settings\MatiasC\Escritorio\Practico 1 Soluciones\C [Error] variable-size type declared outside of any function
\Documents and Settings\MatiasC\Escritorio\Practico 1 Soluciones\Sin Nombre1.cpp 61 C:\Documents and Settings\MatiasC\Escritorio\Practico 1 Soluciones\C [Error] variable-size type declared outside of any function
In function `void dibujar_tablero(int (*)[2], int)':
\Documents and Settings\MatiasC\Escritorio\Practico 1 Soluciones\Sin Nombre1.cpp 61 C:\Documents and Settings\MatiasC\Escritorio\Practico 1 Soluciones\C [Error] `void dibujar_tablero(int (*)[2], int)' used prior to declaration
C:\Documents and Settings\MatiasC\Escritorio\Practico 1 Soluciones\C Documents and Settings\MatiasC\Escritorio\Practico 1 Soluciones\Sin Nombre1.cpp: At global scope:
\Documents and Settings\MatiasC\Escritorio\Practico 1 Soluciones\Sin Nombre1.cpp 83 C:\Documents and Settings\MatiasC\Escritorio\Practico 1 Soluciones\C [Error] variable-size type declared outside of any function
\Documents and Settings\MatiasC\Escritorio\Practico 1 Soluciones\Sin Nombre1.cpp 83 C:\Documents and Settings\MatiasC\Escritorio\Practico 1 Soluciones\C [Error] variable-size type declared outside of any function
unrecognized option `-static-libstdc++'


Ese error me sale cuando intento compilar el codigo que me colgaste abajo.

leosansan

#9
Sorry, cambia la linea:

Código (cpp) [Seleccionar]
void imprimir............;

y

void jugadores (int matriz [dim][dim], int dim, int jugador);




por la actual:

Código (cpp) [Seleccionar]
void dibujar_tablero(int matriz[dim_plus][dim_plus],int dim);

y

void jugadores (int matriz [dim_plus][dim_plus], int dim, int jugador)
{


Había puesto una versión anterior. Ya está corregido también en el post anterior. Y por cierto, guárdalo como .c no .cpp, ya que está en C y no en C++.

Yo uso Code::Blocks y no me "canta" ni warnings. ¿No usarás Dev-C++?


Saluditos! .... ..