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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Dibujar e inicializar tablero de posibles distintos tamaños en C [?]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 2 3 4 [5] Ir Abajo Respuesta Imprimir
Autor Tema: Dibujar e inicializar tablero de posibles distintos tamaños en C [?]  (Leído 12,080 veces)
Regexp

Desconectado Desconectado

Mensajes: 22



Ver Perfil
Re: Dibujar e inicializar tablero de posibles distintos tamaños en C [?]
« Respuesta #40 en: 8 Junio 2015, 19:55 pm »

Hola, yo de nuevo. Tengo 2 dudas,

Esta parte la quise cambiar para poder elegir quien empieza:

Código
  1. void mover_tirarflecha(int turno)
  2. {
  3. // [...]
  4.   scanf(" %d", turno);
  5. // [...]
  6.  

Bueno y así con abajo, derecha e izquierda. Acá el error es: warning: comparison between pointer and integer [enabled by default]|


De repente entre tanto código no te has dado cuenta, pero lo que te dice es simplemente que se espera una dirección de memoria, no un valor entero, simplemente cambia esa linea por

Código
  1. scanf(" %d", &turno);


Edit


El segundo error es similar, estas comparando una dirección de memoria con un entero en la condición del while

Código
  1. while((limite<5) && (arriba<6) && (bosque6x6!='X'))//para arriba

Dice que compara con entero porque 'X' es convertido automáticamente en su valor en la tabla ASCII. No entiendo muy bien la mecánica del juego, pero creo que lo que quieres es comparar los valores de la matriz bosque6x6. El nombre bosque6x6 apunta al inicio de la matriz. ¿Quizá quieras hacer esta comparación dentro del while y dejar un flag en la condición del mismo?

Código
  1. while( (tus_condicciones) && flag )
  2. {
  3.    // codigo
  4.    if ( (otra_condicion) ) flag = false;
  5.    // mas codigo
  6. }

Saludos


« Última modificación: 8 Junio 2015, 20:04 pm por Regexp » En línea

No todo el que deambula está perdido
0xFer


Desconectado Desconectado

Mensajes: 400



Ver Perfil
Re: Dibujar e inicializar tablero de posibles distintos tamaños en C [?]
« Respuesta #41 en: 8 Junio 2015, 20:03 pm »

Es correcto lo que dice @Regexp, pero ese código no debería de ír ahí, debería estar aquí:

Código
  1. void Bucle_Juego()
  2. {
  3.    int ganador = 0;
  4.    int turno = 1; //empieza jugador 1
  5.  
  6.    while(ganador == 0){ //que se repita mientras no haya ningun ganador
  7.  
  8.        Actualizar_Juego(); //Actualiza el juego
  9.  
  10.        Mov_Attack(turno); //mueve o ataca  
  11.  
  12.        /*Falta un codigo para comprobar si alguien ya ha ganado*/
  13.  
  14.        /*Cambiando los turnos*/
  15.        if(turno == 1)
  16.            turno = 2;
  17.        else
  18.            turno = 1;
  19.    }
  20.  
  21.    /*cuando se termine el bucle comprobamos quien ha ganado*/
  22.    if(ganador == 1){
  23.        printf("Ha Ganado el jugador 1");
  24.    }
  25.    else if(ganador == 2)
  26.        printf("Ha Ganado el jugador 2");
  27.  
  28. }

justo antes de entrar al bucle del juego(el while(ganador == 0)), fíjate que he declarado una variable llamada turno y la he iniciado a 1.

Ahora el segundo error creo que está en bosque6x6!='X', ya que bosque6x6 es un arreglo pero no puedes comparar un arreglo directamente con un 'X' tienes que acceder a los indices del arreglo, así como ya has hecho muchas veces, ejemplo:
bosque6x6[0][3], solo entonces podrás hacer ese tipo de comparaciones.

Nota: Un arreglo también es un puntero, como dice @Regexp; es una dirección de memória.



« Última modificación: 8 Junio 2015, 20:07 pm por 0xFer » En línea

Código
  1. int getRandomNumber(){
  2.    return 4; //chosen by fair dice roll
  3.              //guaranteed to be random
  4. }
dragonlady

Desconectado Desconectado

Mensajes: 37



Ver Perfil
Re: Dibujar e inicializar tablero de posibles distintos tamaños en C [?]
« Respuesta #42 en: 9 Junio 2015, 00:06 am »

Hola! Gracias por contestar a ambos. Se me pasan detalles por despistada y apurada.

Continuando con la parte de los ataques, respecto a lo que me comentaste, lo entiendo pero un compañero me mostraba como a el si le funcionaba usando matrices [j] asi como las puse yo :O Y lo que sería imposible es que no es fijo, no puedo poner por ejemplo
  • [3] como me indicabas, ya que uso i y j porque pueden estar en cualquier lado los arboles, son random.
Le hice algunas modificaciones pero lo gracioso es que directamente cuando el jugador indica la opcion de disparar, se va al else directamente, siempre en un "Fallaste!" que no termina,


Código
  1. if (tam_bosque==6)
  2.       {
  3.           int limite=0, arriba=0, abajo=0, izq=0, derecha=0;
  4.           int i=d_i;
  5.           int j=d_j;
  6.  
  7.           while((limite<5) && (arriba<6) && (bosque6x6[i][j]!='X'))//para arriba
  8.           {
  9.               if (bosque6x6[i][j]=='2')
  10.                  {
  11.                        arriba++;
  12.                        j++;
  13.                        printf("GAME OVER: Jugador 2");
  14.                  }
  15.                        else printf("Fallaste!\n");
  16.  
  17.           }
  18.  
  19.           while((limite<5) && (abajo<6) && (bosque6x6[i][j]!='X'))//para abajo
  20.  
  21.           {
  22.               if (bosque6x6[i][j]=='2')
  23.                  {
  24.                        abajo++;
  25.                        j--;
  26.                        printf("GAME OVER: Jugador 2");
  27.                  }
  28.                        else printf("Fallaste!\n");
  29.           }
  30.  
  31.           while((limite<5) && (izq<6) && (bosque6x6[i][j]!='X'))//para la izquierda
  32.           {
  33.               if (bosque6x6[i][j]=='2')
  34.                    {
  35.                        izq++;
  36.                        i--;
  37.                        printf("GAME OVER: Jugador 2");
  38.                  }
  39.                        else printf("Fallaste!\n");
  40.  
  41.           }
  42.  
  43.           while((limite<5) && (derecha<6) && (bosque6x6[i][j]!='X'))//para la derecha
  44.           {
  45.               if (bosque6x6[i][j]=='2')
  46.                  {
  47.                        derecha++;
  48.                        i++;
  49.                        printf("GAME OVER: Jugador 2");
  50.                  }
  51.                        else printf("Fallaste!\n");
  52.           }
  53.  
  54.  
  55.       }
En línea

0xFer


Desconectado Desconectado

Mensajes: 400



Ver Perfil
Re: Dibujar e inicializar tablero de posibles distintos tamaños en C [?]
« Respuesta #43 en: 9 Junio 2015, 00:14 am »

Publica todo el código de lo contrario tengo que hacer muchas deducciones  :-\, lo de los arreglos solo te lo mostré como un ejemplo no necesariamente tiene que ser [ 0 ] [ 3 ]

publica al menos la parte de if(accion == 'm'){ /*El código de aquí*/ }
« Última modificación: 9 Junio 2015, 00:17 am por 0xFer » En línea

Código
  1. int getRandomNumber(){
  2.    return 4; //chosen by fair dice roll
  3.              //guaranteed to be random
  4. }
dragonlady

Desconectado Desconectado

Mensajes: 37



Ver Perfil
Re: Dibujar e inicializar tablero de posibles distintos tamaños en C [?]
« Respuesta #44 en: 9 Junio 2015, 00:17 am »

Entendí si, que fue un ejemplo, yo digo ya que son numeros, no veo como podria usarlo para algo que cambia siempre en el tablero

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. //Prototipos
  6. void menu();
  7. void reglas();
  8. void fin_juego();
  9. void Elegir_Bosque();
  10. void Iniciar_Bosque();
  11. void Actualizar_Juego();
  12. void Bucle_Juego();
  13. void mover_tirarflecha(int);
  14.  
  15. //Variables globales
  16. char bosque6x6[6][6];
  17. char bosque8x8[8][8];
  18. char bosque10x10[10][10];
  19. char bosque14x14[14][14];
  20. char bosque18x18[18][18];
  21.  
  22. int opcion=0;
  23. int tam_bosque=0;
  24.  
  25. int main()
  26. {
  27.    while(opcion!=3)
  28.    {
  29.        menu();
  30.        scanf("%d",&opcion);
  31.        switch(opcion)
  32.        {
  33.            case 1: Elegir_Bosque();
  34.                    break;
  35.            case 2: reglas();
  36.                    break;
  37.            case 3: fin_juego();
  38.                    break;
  39.        }
  40.     }
  41.   return 0;
  42. }
  43.  
  44. void menu()
  45. {
  46.   printf("     ______ARQUEROS EN EL BOSQUE_______\n");
  47.   printf("     ____________OOOOOO________________\n");
  48.   printf("     _________OOOOOOOOOOOOO____________\n");
  49.   printf("     _____OOOOOOOOOOOOOOOOOOOO_________\n");
  50.   printf("     ___OOOOOOOOOOOOOOOOOOOOOOOO_______\n");
  51.   printf("     ___OOOOOOOOOOOOOOOOOOOOOOOO_______\n");
  52.   printf("     _____OOOOOOOOOOOOOOOOOOOO_________\n");
  53.   printf("     ______OOOOOOOOOOOOOOOOOO__________\n");
  54.   printf("     _________OOOOOOOOOOOO_____________\n");
  55.   printf("     __<----____OOOOOOOO_______________\n");
  56.   printf("     _____________OOOO_________________\n");
  57.   printf("     _____________OOOO_______---->_____\n");
  58.   printf("     _____________OOOO_________________\n");
  59.   printf("     _____________OOOO_________________\n");
  60.   printf("\n");
  61.   printf("     MENU PRINCIPAL\n");
  62.   printf("     ><><><><><><><\n");
  63.   printf("     Ingrese una de las opciones: \n");
  64.   printf("     1. Jugar\n");
  65.   printf("     2.Ver reglas\n");
  66.   printf("     3.Salir del juego\n");
  67.   printf("\n");
  68. }
  69.  
  70. void reglas() //aca muestro las reglas. tiene que poder volver al menu anterior
  71. {
  72.   system("cls");
  73.   printf("El juego consiste en eliminar al arquero del extremo opuesto. \n");
  74.   printf("Cada turno puede elegir moverse una casilla o lanzar un flechazo. \n");
  75.   printf("Los flechazos se mueven en linea recta, maximo cinco lugares.\n");
  76.   printf("Ni los jugadores ni los flechazos pueden atravezar los arboles(X)");
  77.   printf(" Al recibir un flechazo el jugador pierde el round, las partidas se componen de 3 round y las gana el que gane 2 de ellos.\n");
  78.   printf("Jugador primero sera identificado como 1 y jugador segundo como 2.\n");
  79.   printf("\n\n");
  80.   char p;
  81.   printf (">>Presiona cualquier tecla y enter para volver al menu ");
  82.   scanf (" %c",&p);
  83. }
  84.  
  85. void fin_juego()
  86. {
  87.    system("cls");
  88.    printf("\n\n\n\t\t\t* GRACIAS POR JUGAR! *\n\n\n");
  89.    printf("\t\t\t  Sabrina Cabrera.\n \t\t\t  Programacion.\n \t\t\t  Tecnologo 2015\n\n");
  90. }
  91.  
  92. void Elegir_Bosque()
  93. {
  94.   system("cls");
  95.   int elige_bosque;
  96.   printf("     >        Ingresa una opcion:        <\n\n");
  97.   printf("     >        1- Bosque de 6 x 6         <\n");
  98.   printf("     >        2- Bosque de 8 x 8         <\n");
  99.   printf("     >        3- Bosque de 10 x 10       <\n");
  100.   printf("     >        4- Bosque de 14 x 14       <\n");
  101.   printf("     >        5- Bosque de 18 x 18       <\n");
  102.   scanf(" %d", &elige_bosque);
  103.  
  104.   system("cls");
  105.  
  106.   switch(elige_bosque)
  107.   {
  108.       case 1: tam_bosque = 6;
  109.               Iniciar_Bosque();
  110.               Bucle_Juego();
  111.               break;
  112.       case 2: tam_bosque = 8;
  113.               Iniciar_Bosque();
  114.               Bucle_Juego();
  115.               break;
  116.       case 3: tam_bosque = 10;
  117.               Iniciar_Bosque();
  118.               Bucle_Juego();
  119.               break;
  120.       case 4: tam_bosque = 14;
  121.               Iniciar_Bosque();
  122.               Bucle_Juego();
  123.               break;
  124.       case 5: tam_bosque = 18;
  125.               Iniciar_Bosque();
  126.               Bucle_Juego();
  127.               break;
  128.   }
  129.  
  130. }
  131. //valores iniciales para el bosque
  132. void Iniciar_Bosque()
  133. {
  134.    srand (time(NULL));
  135.  
  136.    int Xnum=0;
  137.    int i, j;
  138.  
  139.    if(tam_bosque == 6)
  140.    {
  141.        for(i = 0; i < tam_bosque;i++)
  142.            for(j = 0; j < tam_bosque;j++)
  143.                bosque6x6[i][j] = ' ';
  144.  
  145.        bosque6x6[0][0] = '1';
  146.        bosque6x6[5][5] = '2';
  147.  
  148.  
  149.        while(Xnum < tam_bosque/2 )
  150.  
  151.        {
  152.            i = (rand() % tam_bosque);
  153.            j = (rand() % tam_bosque);
  154.  
  155.            if(bosque6x6[i][j] == ' ')
  156.            {
  157.                bosque6x6[i][j] = 'X';
  158.                Xnum++;
  159.            }
  160.  
  161.        }
  162.    }
  163.  
  164.    else if(tam_bosque == 8)
  165.    {
  166.        for(i = 0; i < tam_bosque;i++)
  167.            for(j = 0; j < tam_bosque;j++)
  168.                bosque8x8[i][j] = ' ';
  169.  
  170.        bosque8x8[0][0] = '1';
  171.        bosque8x8[7][7] = '2';
  172.  
  173.        while(Xnum < tam_bosque/2 )
  174.        {
  175.            i = rand() % tam_bosque;
  176.            j = rand() % tam_bosque;
  177.  
  178.            if(bosque8x8[i][j] == ' ')
  179.            {
  180.                bosque8x8[i][j] = 'X';
  181.                Xnum++;
  182.            }
  183.  
  184.        }
  185.    }
  186.    else if(tam_bosque == 10)
  187.    {
  188.        for(i = 0; i < tam_bosque;i++)
  189.            for(j = 0; j < tam_bosque;j++)
  190.                bosque10x10[i][j] = ' ';
  191.  
  192.        bosque10x10[0][0] = '1';
  193.        bosque10x10[9][9] = '2';
  194.  
  195.        while(Xnum < tam_bosque/2 )
  196.        {
  197.            i = rand() % tam_bosque;
  198.            j = rand() % tam_bosque;
  199.  
  200.            if(bosque10x10[i][j] == ' ')
  201.            {
  202.                bosque10x10[i][j] = 'X';
  203.                Xnum++;
  204.            }
  205.  
  206.        }
  207.    }
  208.    else if(tam_bosque == 14)
  209.    {
  210.        for(i = 0; i < tam_bosque;i++)
  211.            for(j = 0; j < tam_bosque;j++)
  212.                bosque14x14[i][j] = ' ';
  213.  
  214.        bosque14x14[0][0] = '1';
  215.        bosque14x14[13][13] = '2';
  216.  
  217.        while(Xnum < tam_bosque/2 )
  218.        {
  219.            i = rand() % tam_bosque;
  220.            j = rand() % tam_bosque;
  221.  
  222.            if(bosque14x14[i][j] == ' ')
  223.            {
  224.                bosque14x14[i][j] = 'X';
  225.                Xnum++;
  226.            }
  227.  
  228.        }
  229.    }
  230.    else if(tam_bosque == 18)
  231.    {
  232.        for(i = 0; i < tam_bosque;i++)
  233.            for(j = 0; j < tam_bosque;j++)
  234.                bosque18x18[i][j] = ' ';
  235.  
  236.        bosque18x18[0][0] = '1';
  237.        bosque18x18[17][17] = '2';
  238.  
  239.        while(Xnum < tam_bosque/2 )
  240.        {
  241.            i = rand() % tam_bosque;
  242.            j = rand() % tam_bosque;
  243.  
  244.            if(bosque18x18[i][j] == ' ')
  245.            {
  246.                bosque18x18[i][j] = 'X';
  247.                Xnum++;
  248.            }
  249.  
  250.        }
  251.    }
  252.  
  253. }
  254. //dibuja cuando sea necesario
  255. void Actualizar_Juego()
  256. {
  257.    system("cls");
  258.  
  259.    if(tam_bosque == 6)
  260.    {
  261.        int i,j;
  262.        printf("\n  ");
  263.  
  264.        for (j = 0; j < tam_bosque;j++) //filas alfabeticas
  265.            printf("  %c", 'a'+j);
  266.        printf("\n");
  267.  
  268.        for (i = 0;i < tam_bosque;i++) //columnas numeradas
  269.        {
  270.            printf(" %2d", i);
  271.  
  272.            for (j = 0;j < tam_bosque;j++)
  273.            {
  274.                printf("| %c", bosque6x6[i][j]);
  275.            }
  276.            printf("| \n");
  277.        }
  278.    }
  279.    else if( tam_bosque == 8)
  280.    {
  281.        int i,j;
  282.        printf("\n  ");
  283.  
  284.        for (j = 0;j < tam_bosque;j++) //filas alfabeticas
  285.            printf("  %c", 'a'+j);
  286.        printf("\n");
  287.  
  288.        for (i = 0;i < tam_bosque;i++) //columnas numeradas
  289.        {
  290.            printf(" %2d", i);
  291.  
  292.            for (j = 0;j < tam_bosque;j++)
  293.            {
  294.                printf("| %c", bosque8x8[i][j]);
  295.            }
  296.            printf("| \n");
  297.        }
  298.    }
  299.    else if( tam_bosque == 10)
  300.    {
  301.        int i,j;
  302.        printf("\n  ");
  303.  
  304.        for (j = 0;j < tam_bosque;j++) //filas alfabeticas
  305.            printf("  %c", 'a'+j);
  306.        printf("\n");
  307.  
  308.        for (i = 0;i < tam_bosque;i++) //columnas numeradas
  309.        {
  310.            printf(" %2d", i);
  311.  
  312.            for (j = 0;j < tam_bosque;j++)
  313.            {
  314.                printf("| %c", bosque10x10[i][j]);
  315.            }
  316.            printf("| \n");
  317.        }
  318.    }
  319.    else if( tam_bosque == 14)
  320.    {
  321.        int i,j;
  322.        printf("\n  ");
  323.  
  324.        for (j = 0;j < tam_bosque;j++) //filas alfabeticas
  325.            printf("  %c", 'a'+j);
  326.        printf("\n");
  327.  
  328.        for (i = 0;i < tam_bosque;i++) //columnas numeradas
  329.        {
  330.            printf(" %2d", i);
  331.  
  332.            for (j = 0;j < tam_bosque;j++)fin_juego()
  333.            {
  334.                printf("| %c", bosque14x14[i][j]);
  335.            }
  336.            printf("| \n");
  337.        }
  338.    }
  339.    else if( tam_bosque == 18)
  340.    {
  341.        int i,j;
  342.        printf("\n  ");
  343.  
  344.        for (j = 0;j < tam_bosque;j++) //filas alfabeticas
  345.            printf("  %c", 'a'+j);
  346.        printf("\n");
  347.  
  348.        for (i = 0;i < tam_bosque;i++) //columnas numeradas
  349.        {
  350.            printf(" %2d", i);
  351.  
  352.            for (j = 0;j < tam_bosque;j++)
  353.            {
  354.                printf("| %c", bosque18x18[i][j]);
  355.            }
  356.            printf("| \n");
  357.        }
  358.    }
  359.  
  360. }
  361.  
  362. //a jugar!!
  363. void Bucle_Juego()
  364. {
  365.    int ganador=0;
  366.    int turno=0;
  367.  
  368.    printf("Que jugador empieza?: ");
  369.    scanf(" %d", &turno);
  370.  
  371.    do
  372.    {
  373.        while(ganador == 0)//que se repita mientras no haya ningun ganador
  374.        {
  375.            Actualizar_Juego(); //Actualiza el juego
  376.            mover_tirarflecha(turno); //mueve o ataca
  377.  
  378.            //Falta comprobar si alguno ya ganó
  379.  
  380.            //Cambiando los turnos
  381.            if(turno == 1)
  382.            {
  383.                turno = 2;
  384.            }
  385.                else
  386.                    turno = 1;
  387.        }
  388.  
  389.        //cuando se termine el bucle comprueba quien ha ganado
  390.        if(ganador == 1)
  391.            {
  392.                printf("Ha Ganado el jugador 1");
  393.            }
  394.                else if(ganador == 2)
  395.                    printf("Ha Ganado el jugador 2");
  396.  
  397.        ganador++;
  398.    }
  399.     while (ganador < 3);
  400.  
  401.     //para que pregunte si quiere salir o seguir jugando
  402.     /*char respuesta;
  403.      int s=0,n=1;
  404.      printf("Quiere jugar de nuevo? (s/n): ");
  405.      scanf(" %c", &respuesta);
  406.  
  407.     if (respuesta==s)
  408.     {
  409.  
  410.     }
  411.         else if (respuesta==n)
  412.             fin_juego();*/
  413.  
  414. }
  415.  
  416. void mover_tirarflecha(int turno)
  417. {
  418.    char imagen_jugador; //dibuja 1' o '2' dependiendo del turno
  419.  
  420.    if(turno == 1)
  421.    {
  422.        imagen_jugador = '1';
  423.        printf("Es el turno del jugador 1\n");
  424.    }
  425.    else
  426.    {
  427.        imagen_jugador = '2';
  428.        printf("Es el turno del jugador 2\n");
  429.    }
  430.  
  431.   char accion;
  432.  
  433.    //moverse
  434.   int o_i,d_i; //coordenadas origen
  435.   char o_j,d_j;  //coordenadas destino
  436.  
  437.   printf("Moverte o tirar flecha? (m o t)");
  438.   scanf(" %c", &accion);
  439.  
  440.   //para saber lo que ha ingresado
  441.   if(accion == 'm')
  442.   {
  443.       printf("\nIngrese Coordenadas origen (ej. 0-a) "); //origen
  444.       scanf("%d-%c", &o_i,&o_j);
  445.  
  446.       printf("\nIngrese Coordenadas destino (1 lugar) "); //destino
  447.       scanf("%d-%c", &d_i,&d_j);
  448.  
  449.  
  450.       /*Dependiendo del tamaño del bosque*/
  451.       if( tam_bosque == 6)
  452.       {
  453.           //para que se mueva 1 solo lugar
  454.           /*if ((bosque6x6[d_i+1][d_j])&&(bosque6x6[d_i][d_j+1])&&(bosque6x6[d_i-1][d_j])&&(bosque6x6[d_i][d_j-1]))*/
  455.           {
  456.                bosque6x6[o_i][o_j - 97]= ' '; //queda vacio donde estaba
  457.                bosque6x6[d_i][d_j - 97]= imagen_jugador; //a donde lo mueve mientras esté el espacio vacio
  458.           }
  459.       }
  460.       else if( tam_bosque == 8)
  461.       {
  462.           bosque8x8[o_i][o_j - 97]= ' ';
  463.           bosque8x8[d_i][d_j - 97]= imagen_jugador;
  464.       }
  465.       else if( tam_bosque == 10)
  466.       {
  467.           bosque10x10[o_i][o_j - 97]= ' ';
  468.           bosque10x10[d_i][d_j - 97]= imagen_jugador;
  469.       }
  470.       else if( tam_bosque == 14)
  471.       {
  472.           bosque14x14[o_i][o_j - 97]= ' ';
  473.           bosque14x14[d_i][d_j - 97]= imagen_jugador;
  474.       }
  475.       else if( tam_bosque == 18)
  476.       {
  477.           bosque18x18[o_i][o_j - 97]= ' ';
  478.           bosque18x18[d_i][d_j - 97]= imagen_jugador;
  479.       }
  480.  
  481.   }
  482.  else if(accion == 't') //para disparar flecha. Se mueven arriba,abajo,izq,derecha
  483.   {
  484.       //para el bosque x6
  485.       if (tam_bosque==6)
  486.       {
  487.           int limite=0, arriba=0, abajo=0, izq=0, derecha=0;
  488.           int i=d_i;
  489.           int j=d_j;
  490.  
  491.           while((limite<5) && (arriba<6) && (bosque6x6[i][j]!='X'))//para arriba
  492.           {
  493.               if (bosque6x6[i][j]=='2')
  494.                  {
  495.                        arriba++;
  496.                        j++;
  497.                        printf("GAME OVER: Jugador 2");
  498.                  }
  499.                        else printf("Fallaste!\n");
  500.  
  501.           }
  502.  
  503.           while((limite<5) && (abajo<6) && (bosque6x6[i][j]!='X'))//para abajo
  504.  
  505.           {
  506.               if (bosque6x6[i][j]=='2')
  507.                  {
  508.                        abajo++;
  509.                        j--;
  510.                        printf("GAME OVER: Jugador 2");
  511.                  }
  512.                        else printf("Fallaste!\n");
  513.           }
  514.  
  515.           while((limite<5) && (izq<6) && (bosque6x6[i][j]!='X'))//para la izquierda
  516.           {
  517.               if (bosque6x6[i][j]=='2')
  518.                    {
  519.                        izq++;
  520.                        i--;
  521.                        printf("GAME OVER: Jugador 2");
  522.                  }
  523.                        else printf("Fallaste!\n");
  524.  
  525.           }
  526.  
  527.           while((limite<5) && (derecha<6) && (bosque6x6[i][j]!='X'))//para la derecha
  528.           {
  529.               if (bosque6x6[i][j]=='2')
  530.                  {
  531.                        derecha++;
  532.                        i++;
  533.                        printf("GAME OVER: Jugador 2");
  534.                  }
  535.                        else printf("Fallaste!\n");
  536.           }
  537.  
  538.  
  539.       }/*
  540.  
  541.         //para el bosque x8
  542.        if (tam_bosque==8)
  543.        {
  544.            int limite=0, arriba=0, abajo=0, izq=0, derecha=0;
  545.            int i=d_i;
  546.            int j=d_j;
  547.  
  548.            while((limite<7) && (arriba<8) && (bosque6x6[i][j]!='X'))//para arriba
  549.            {
  550.                if (bosque8x8[i][j]=='2')
  551.                   {
  552.                         arriba++;
  553.                         j++;
  554.                         printf("GAME OVER: Jugador 2");
  555.                   }
  556.                         else printf("Fallaste!\n");
  557.  
  558.            }
  559.  
  560.            while((limite<7) && (abajo<8) && (bosque8x8[i][j]!='X'))//para abajo
  561.  
  562.            {
  563.                if (bosque8x8[i][j]=='2')
  564.                   {
  565.                         abajo++;
  566.                         j--;
  567.                         printf("GAME OVER: Jugador 2");
  568.                   }
  569.                         else printf("Fallaste!\n");
  570.            }
  571.  
  572.            while((limite<7) && (izq<8) && (bosque8x8[i][j]!='X'))//para la izquierda
  573.            {
  574.                if (bosque8x8[i][j]=='2')
  575.                     {
  576.                         izq++;
  577.                         i--;
  578.                         printf("GAME OVER: Jugador 2");
  579.                   }
  580.                         else printf("Fallaste!\n");
  581.  
  582.            }
  583.  
  584.            while((limite<7) && (derecha<8) && (bosque8x8[i][j]!='X'))//para la derecha
  585.            {
  586.                if (bosque8x8[i][j]=='2')
  587.                   {
  588.                         derecha++;
  589.                         i++;
  590.                         printf("GAME OVER: Jugador 2");
  591.                   }
  592.                         else printf("Fallaste!\n");
  593.            }
  594.  
  595.  
  596.        }
  597.  
  598.         //para el bosque x10
  599.        if (tam_bosque==10)
  600.        {
  601.            int limite=0, arriba=0, abajo=0, izq=0, derecha=0;
  602.            int i=d_i;
  603.            int j=d_j;
  604.  
  605.            while((limite<9) && (arriba<10) && (bosque10x10[i][j]!='X'))//para arriba
  606.            {
  607.                if (bosque10x10[i][j]=='2')
  608.                   {
  609.                         arriba++;
  610.                         j++;
  611.                         printf("GAME OVER: Jugador 2");
  612.                   }
  613.                         else printf("Fallaste!\n");
  614.  
  615.            }
  616.  
  617.            while((limite<9) && (abajo<10) && (bosque10x10[i][j]!='X'))//para abajo
  618.  
  619.            {
  620.                if (bosque10x10[i][j]=='2')
  621.                   {
  622.                         abajo++;
  623.                         j--;
  624.                         printf("GAME OVER: Jugador 2");
  625.                   }
  626.                         else printf("Fallaste!\n");
  627.            }
  628.  
  629.            while((limite<9) && (izq<10) && (bosque10x10[i][j]!='X'))//para la izquierda
  630.            {
  631.                if (bosque10x10[i][j]=='2')
  632.                     {
  633.                         izq++;
  634.                         i--;
  635.                         printf("GAME OVER: Jugador 2");
  636.                   }
  637.                         else printf("Fallaste!\n");
  638.  
  639.            }
  640.  
  641.            while((limite<9) && (derecha<10) && (bosque10x10[i][j]!='X'))//para la derecha
  642.            {
  643.                if (bosque10x10[i][j]=='2')
  644.                   {
  645.                         derecha++;
  646.                         i++;
  647.                         printf("GAME OVER: Jugador 2");
  648.                   }
  649.                         else printf("Fallaste!\n");
  650.            }
  651.  
  652.  
  653.        }
  654.  
  655.         //para el bosque x14
  656.        if (tam_bosque==14)
  657.        {
  658.            int limite=0, arriba=0, abajo=0, izq=0, derecha=0;
  659.            int i=d_i;
  660.            int j=d_j;
  661.  
  662.            while((limite<13) && (arriba<14) && (bosque14x14[i][j]!='X'))//para arriba
  663.            {
  664.                if (bosque14x14[i][j]=='2')
  665.                   {
  666.                         arriba++;
  667.                         j++;
  668.                         printf("GAME OVER: Jugador 2");
  669.                   }
  670.                         else printf("Fallaste!\n");
  671.  
  672.            }
  673.  
  674.            while((limite<13) && (abajo<14) && (bosque14x14[i][j]!='X'))//para abajo
  675.            {
  676.                if (bosque14x14[i][j]=='2')
  677.                   {
  678.                         abajo++;
  679.                         j--;
  680.                         printf("GAME OVER: Jugador 2");
  681.                   }
  682.                         else printf("Fallaste!\n");
  683.            }
  684.  
  685.            while((limite<13) && (izq<14) && (bosque6x6[i][j]!='X'))//para la izquierda
  686.            {
  687.                if (bosque6x6[i][j]=='2')
  688.                     {
  689.                         izq++;
  690.                         i--;
  691.                         printf("GAME OVER: Jugador 2");
  692.                   }
  693.                         else printf("Fallaste!\n");
  694.  
  695.            }
  696.  
  697.            while((limite<13) && (derecha<14) && (bosque14x14[i][j]!='X'))//para la derecha
  698.            {
  699.                if (bosque6x6[i][j]=='2')
  700.                   {
  701.                         derecha++;
  702.                         i++;
  703.                         printf("GAME OVER: Jugador 2");
  704.                   }
  705.                         else printf("Fallaste!\n");
  706.            }
  707.  
  708.  
  709.        }
  710.  
  711.         //para el bosque x18
  712.        if (tam_bosque==6)
  713.        {
  714.            int limite=0, arriba=0, abajo=0, izq=0, derecha=0;
  715.            int i=d_i;
  716.            int j=d_j;
  717.  
  718.            while((limite<17) && (arriba<18) && (bosque18x18[i][j]!='X'))//para arriba
  719.            {
  720.                if (bosque18x18[i][j]=='2')
  721.                   {
  722.                         arriba++;
  723.                         j++;
  724.                         printf("GAME OVER: Jugador 2");
  725.                   }
  726.                         else printf("Fallaste!\n");
  727.  
  728.            }
  729.  
  730.            while((limite<17) && (abajo<18) && (bosque18x18[i][j]!='X'))//para abajo
  731.  
  732.            {
  733.                if (bosque18x18[i][j]=='2')
  734.                   {
  735.                         abajo++;
  736.                         j--;
  737.                         printf("GAME OVER: Jugador 2");
  738.                   }
  739.                         else printf("Fallaste!\n");
  740.            }
  741.  
  742.            while((limite<17) && (izq<18) && (bosque18x18[i][j]!='X'))//para la izquierda
  743.            {
  744.                if (bosque18x18[i][j]=='2')
  745.                     {
  746.                         izq++;
  747.                         i--;
  748.                         printf("GAME OVER: Jugador 2");
  749.                   }
  750.                         else printf("Fallaste!\n");
  751.  
  752.            }
  753.  
  754.            while((limite<17) && (derecha<18) && (bosque18x18[i][j]!='X'))//para la derecha
  755.            {
  756.                if (bosque6x6[i][j]=='2')
  757.                   {
  758.                         derecha++;
  759.                         i++;
  760.                         printf("GAME OVER: Jugador 2");
  761.                   }
  762.                         else printf("Fallaste!\n");
  763.            }
  764.  
  765.  
  766.        }*/
  767.   }
  768. }
  769.  
En línea

0xFer


Desconectado Desconectado

Mensajes: 400



Ver Perfil
Re: Dibujar e inicializar tablero de posibles distintos tamaños en C [?]
« Respuesta #45 en: 9 Junio 2015, 00:28 am »

no has iniciado el valor de d_i y d_j contienen basura, tienes que pedirlos con scanf, acuerdate que lo pides pero cuando el jugador quiere mover no cuando quiere atacar.

Edito:

Mira las siguientes lineas, solo tendrías que comprobar mediante otro metodo si se ha ingresado una Acción válida, o sea si se estan cumpliendo las reglas del juego:

Código
  1. else if(accion == 't'){
  2.    bool AccionValida = false;
  3.  
  4.    while(AccionValida == false)
  5.    {
  6.        printf("Ingresa coordenada destino d_i");
  7.        scanf(" %i",d_i);
  8.        printf("Ingresa coordenada destino d_j");
  9.        scanf(" %c",d_j);
  10.  
  11.        /*Creas un metodo para comprobar si ha realizado un movimiento legal, esto es, si no se ha salido del
  12.         tablero, si no ha disparado a más de 5 posiciones o si ha disparado a travez de un arbol*/
  13.        AccionValida = ComprobarAccion(o_i,o_j,d_i,d_j);
  14.  
  15.        if(AccionValida == false)
  16.            printf("Accion Invalida(Rompiste alguna regla del juego); Intenta de nuevo\n");
  17.    }
  18.  
  19.    /*Las siguientes lineas de código se ejecutaran siempre y cuando se haya ingresado una accion válida: */
  20.  
  21.    if(turno == 1)
  22.    /*En caso de que sea turno del jugador 1*/
  23.        if( tableroXxX[d_i][d_j - 97 ] == '2' )
  24.        {
  25.            ganador = 1;
  26.        }
  27.        else
  28.        {
  29.            printf("Has fallado");
  30.        }
  31.     else if(turno == 2)
  32.     /*En caso de que sea turno del jugador 2*/
  33.        if( tableroXxX[d_i][d_j - 97 ] == '1' )
  34.        {
  35.            ganador = 2;
  36.        }
  37.        else
  38.        {
  39.            printf("Has fallado");
  40.        }
  41.  
  42.     }
  43. }

fijate en ComprobarAccion(o_i,o_j,d_i,d_j);, es una funcion con 4 parámetros, necesitas a parte de pedir las coordenadas de destino, también necesitas pedir las coordenadas de origen para que puedas saber si se ha realizado un movimiento legal, acuerdate que solo pides las coordenadas cuando el jugador se quiere mover, pero no lo haces cuando el jugador quiere atacar.
« Última modificación: 9 Junio 2015, 00:59 am por 0xFer » En línea

Código
  1. int getRandomNumber(){
  2.    return 4; //chosen by fair dice roll
  3.              //guaranteed to be random
  4. }
Páginas: 1 2 3 4 [5] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Duda]Problema de tamaños
ASM
YST 3 3,256 Último mensaje 25 Junio 2009, 22:24 pm
por YST
Tablero java
Java
lulu2704 1 4,687 Último mensaje 23 Abril 2011, 05:11 am
por Castiblanco
tamaños swap
GNU/Linux
linuxos 4 2,308 Último mensaje 24 Octubre 2011, 17:54 pm
por orvtech
Detectar movimientos de piezas en tablero de ajedrez. « 1 2 »
Programación Visual Basic
E2E4 12 10,545 Último mensaje 4 Junio 2012, 09:29 am
por BlackZeroX
Más de 400.000 barcos de todos los tamaños vulnerables a ataques de ....
Noticias
wolfbcn 0 1,191 Último mensaje 27 Marzo 2014, 21:42 pm
por wolfbcn
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines