Dibujar e inicializar tablero de posibles distintos tamaños en C [?]

Iniciado por dragonlady, 30 Mayo 2015, 14:48 PM

0 Miembros y 1 Visitante están viendo este tema.

Regexp

Cita de: dragonlady en  8 Junio 2015, 19:39 PM
Hola, yo de nuevo. Tengo 2 dudas,

Esta parte la quise cambiar para poder elegir quien empieza:

void mover_tirarflecha(int turno)
{
// [...]
  scanf(" %d", turno);
// [...]


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

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

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?

while( (tus_condicciones) && flag )
{
   // codigo
   if ( (otra_condicion) ) flag = false;
   // mas codigo
}


Saludos
No todo el que deambula está perdido

0xFer

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


void Bucle_Juego()
{
   int ganador = 0;
   int turno = 1; //empieza jugador 1

   while(ganador == 0){ //que se repita mientras no haya ningun ganador

       Actualizar_Juego(); //Actualiza el juego

       Mov_Attack(turno); //mueve o ataca  

       /*Falta un codigo para comprobar si alguien ya ha ganado*/

       /*Cambiando los turnos*/
       if(turno == 1)
           turno = 2;
       else
           turno = 1;
   }

   /*cuando se termine el bucle comprobamos quien ha ganado*/
   if(ganador == 1){
       printf("Ha Ganado el jugador 1");
   }
   else if(ganador == 2)
       printf("Ha Ganado el jugador 2");

}


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.

Código (java) [Seleccionar]
int getRandomNumber(){
    return 4; //chosen by fair dice roll
              //guaranteed to be random
}

dragonlady

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,


    if (tam_bosque==6)
           {
               int limite=0, arriba=0, abajo=0, izq=0, derecha=0;
               int i=d_i;
               int j=d_j;

               while((limite<5) && (arriba<6) && (bosque6x6[i][j]!='X'))//para arriba
               {
                   if (bosque6x6[i][j]=='2')
                      {
                            arriba++;
                            j++;
                            printf("GAME OVER: Jugador 2");
                      }
                            else printf("Fallaste!\n");

               }

               while((limite<5) && (abajo<6) && (bosque6x6[i][j]!='X'))//para abajo

               {
                   if (bosque6x6[i][j]=='2')
                      {
                            abajo++;
                            j--;
                            printf("GAME OVER: Jugador 2");
                      }
                            else printf("Fallaste!\n");
               }

               while((limite<5) && (izq<6) && (bosque6x6[i][j]!='X'))//para la izquierda
               {
                   if (bosque6x6[i][j]=='2')
                        {
                            izq++;
                            i--;
                            printf("GAME OVER: Jugador 2");
                      }
                            else printf("Fallaste!\n");

               }

               while((limite<5) && (derecha<6) && (bosque6x6[i][j]!='X'))//para la derecha
               {
                   if (bosque6x6[i][j]=='2')
                      {
                            derecha++;
                            i++;
                            printf("GAME OVER: Jugador 2");
                      }
                            else printf("Fallaste!\n");
               }


           }

0xFer

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í*/ }
Código (java) [Seleccionar]
int getRandomNumber(){
    return 4; //chosen by fair dice roll
              //guaranteed to be random
}

dragonlady

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

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

//Prototipos
void menu();
void reglas();
void fin_juego();
void Elegir_Bosque();
void Iniciar_Bosque();
void Actualizar_Juego();
void Bucle_Juego();
void mover_tirarflecha(int);

//Variables globales
char bosque6x6[6][6];
char bosque8x8[8][8];
char bosque10x10[10][10];
char bosque14x14[14][14];
char bosque18x18[18][18];

int opcion=0;
int tam_bosque=0;

int main()
{
    while(opcion!=3)
    {
        menu();
        scanf("%d",&opcion);
        switch(opcion)
        {
            case 1: Elegir_Bosque();
                    break;
            case 2: reglas();
                    break;
            case 3: fin_juego();
                    break;
        }
     }
   return 0;
}

void menu()
{
   printf("     ______ARQUEROS EN EL BOSQUE_______\n");
   printf("     ____________OOOOOO________________\n");
   printf("     _________OOOOOOOOOOOOO____________\n");
   printf("     _____OOOOOOOOOOOOOOOOOOOO_________\n");
   printf("     ___OOOOOOOOOOOOOOOOOOOOOOOO_______\n");
   printf("     ___OOOOOOOOOOOOOOOOOOOOOOOO_______\n");
   printf("     _____OOOOOOOOOOOOOOOOOOOO_________\n");
   printf("     ______OOOOOOOOOOOOOOOOOO__________\n");
   printf("     _________OOOOOOOOOOOO_____________\n");
   printf("     __<----____OOOOOOOO_______________\n");
   printf("     _____________OOOO_________________\n");
   printf("     _____________OOOO_______---->_____\n");
   printf("     _____________OOOO_________________\n");
   printf("     _____________OOOO_________________\n");
   printf("\n");
   printf("     MENU PRINCIPAL\n");
   printf("     ><><><><><><><\n");
   printf("     Ingrese una de las opciones: \n");
   printf("     1. Jugar\n");
   printf("     2.Ver reglas\n");
   printf("     3.Salir del juego\n");
   printf("\n");
}

void reglas() //aca muestro las reglas. tiene que poder volver al menu anterior
{
   system("cls");
   printf("El juego consiste en eliminar al arquero del extremo opuesto. \n");
   printf("Cada turno puede elegir moverse una casilla o lanzar un flechazo. \n");
   printf("Los flechazos se mueven en linea recta, maximo cinco lugares.\n");
   printf("Ni los jugadores ni los flechazos pueden atravezar los arboles(X)");
   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");
   printf("Jugador primero sera identificado como 1 y jugador segundo como 2.\n");
   printf("\n\n");
   char p;
   printf (">>Presiona cualquier tecla y enter para volver al menu ");
   scanf (" %c",&p);
}

void fin_juego()
{
    system("cls");
    printf("\n\n\n\t\t\t* GRACIAS POR JUGAR! *\n\n\n");
    printf("\t\t\t  Sabrina Cabrera.\n \t\t\t  Programacion.\n \t\t\t  Tecnologo 2015\n\n");
}

void Elegir_Bosque()
{
   system("cls");
   int elige_bosque;
   printf("     >        Ingresa una opcion:        <\n\n");
   printf("     >        1- Bosque de 6 x 6         <\n");
   printf("     >        2- Bosque de 8 x 8         <\n");
   printf("     >        3- Bosque de 10 x 10       <\n");
   printf("     >        4- Bosque de 14 x 14       <\n");
   printf("     >        5- Bosque de 18 x 18       <\n");
   scanf(" %d", &elige_bosque);

   system("cls");

   switch(elige_bosque)
   {
       case 1: tam_bosque = 6;
               Iniciar_Bosque();
               Bucle_Juego();
               break;
       case 2: tam_bosque = 8;
               Iniciar_Bosque();
               Bucle_Juego();
               break;
       case 3: tam_bosque = 10;
               Iniciar_Bosque();
               Bucle_Juego();
               break;
       case 4: tam_bosque = 14;
               Iniciar_Bosque();
               Bucle_Juego();
               break;
       case 5: tam_bosque = 18;
               Iniciar_Bosque();
               Bucle_Juego();
               break;
   }

}
//valores iniciales para el bosque
void Iniciar_Bosque()
{
    srand (time(NULL));

    int Xnum=0;
    int i, j;

    if(tam_bosque == 6)
    {
        for(i = 0; i < tam_bosque;i++)
            for(j = 0; j < tam_bosque;j++)
                bosque6x6[i][j] = ' ';

        bosque6x6[0][0] = '1';
        bosque6x6[5][5] = '2';


        while(Xnum < tam_bosque/2 )

        {
            i = (rand() % tam_bosque);
            j = (rand() % tam_bosque);

            if(bosque6x6[i][j] == ' ')
            {
                bosque6x6[i][j] = 'X';
                Xnum++;
            }

        }
    }

    else if(tam_bosque == 8)
    {
        for(i = 0; i < tam_bosque;i++)
            for(j = 0; j < tam_bosque;j++)
                bosque8x8[i][j] = ' ';

        bosque8x8[0][0] = '1';
        bosque8x8[7][7] = '2';

        while(Xnum < tam_bosque/2 )
        {
            i = rand() % tam_bosque;
            j = rand() % tam_bosque;

            if(bosque8x8[i][j] == ' ')
            {
                bosque8x8[i][j] = 'X';
                Xnum++;
            }

        }
    }
    else if(tam_bosque == 10)
    {
        for(i = 0; i < tam_bosque;i++)
            for(j = 0; j < tam_bosque;j++)
                bosque10x10[i][j] = ' ';

        bosque10x10[0][0] = '1';
        bosque10x10[9][9] = '2';

        while(Xnum < tam_bosque/2 )
        {
            i = rand() % tam_bosque;
            j = rand() % tam_bosque;

            if(bosque10x10[i][j] == ' ')
            {
                bosque10x10[i][j] = 'X';
                Xnum++;
            }

        }
    }
    else if(tam_bosque == 14)
    {
        for(i = 0; i < tam_bosque;i++)
            for(j = 0; j < tam_bosque;j++)
                bosque14x14[i][j] = ' ';

        bosque14x14[0][0] = '1';
        bosque14x14[13][13] = '2';

        while(Xnum < tam_bosque/2 )
        {
            i = rand() % tam_bosque;
            j = rand() % tam_bosque;

            if(bosque14x14[i][j] == ' ')
            {
                bosque14x14[i][j] = 'X';
                Xnum++;
            }

        }
    }
    else if(tam_bosque == 18)
    {
        for(i = 0; i < tam_bosque;i++)
            for(j = 0; j < tam_bosque;j++)
                bosque18x18[i][j] = ' ';

        bosque18x18[0][0] = '1';
        bosque18x18[17][17] = '2';

        while(Xnum < tam_bosque/2 )
        {
            i = rand() % tam_bosque;
            j = rand() % tam_bosque;

            if(bosque18x18[i][j] == ' ')
            {
                bosque18x18[i][j] = 'X';
                Xnum++;
            }

        }
    }

}
//dibuja cuando sea necesario
void Actualizar_Juego()
{
    system("cls");

    if(tam_bosque == 6)
    {
        int i,j;
        printf("\n  ");

        for (j = 0; j < tam_bosque;j++) //filas alfabeticas
            printf("  %c", 'a'+j);
        printf("\n");

        for (i = 0;i < tam_bosque;i++) //columnas numeradas
        {
            printf(" %2d", i);

            for (j = 0;j < tam_bosque;j++)
            {
                printf("| %c", bosque6x6[i][j]);
            }
            printf("| \n");
        }
    }
    else if( tam_bosque == 8)
    {
        int i,j;
        printf("\n  ");

        for (j = 0;j < tam_bosque;j++) //filas alfabeticas
            printf("  %c", 'a'+j);
        printf("\n");

        for (i = 0;i < tam_bosque;i++) //columnas numeradas
        {
            printf(" %2d", i);

            for (j = 0;j < tam_bosque;j++)
            {
                printf("| %c", bosque8x8[i][j]);
            }
            printf("| \n");
        }
    }
    else if( tam_bosque == 10)
    {
        int i,j;
        printf("\n  ");

        for (j = 0;j < tam_bosque;j++) //filas alfabeticas
            printf("  %c", 'a'+j);
        printf("\n");

        for (i = 0;i < tam_bosque;i++) //columnas numeradas
        {
            printf(" %2d", i);

            for (j = 0;j < tam_bosque;j++)
            {
                printf("| %c", bosque10x10[i][j]);
            }
            printf("| \n");
        }
    }
    else if( tam_bosque == 14)
    {
        int i,j;
        printf("\n  ");

        for (j = 0;j < tam_bosque;j++) //filas alfabeticas
            printf("  %c", 'a'+j);
        printf("\n");

        for (i = 0;i < tam_bosque;i++) //columnas numeradas
        {
            printf(" %2d", i);

            for (j = 0;j < tam_bosque;j++)fin_juego()
            {
                printf("| %c", bosque14x14[i][j]);
            }
            printf("| \n");
        }
    }
    else if( tam_bosque == 18)
    {
        int i,j;
        printf("\n  ");

        for (j = 0;j < tam_bosque;j++) //filas alfabeticas
            printf("  %c", 'a'+j);
        printf("\n");

        for (i = 0;i < tam_bosque;i++) //columnas numeradas
        {
            printf(" %2d", i);

            for (j = 0;j < tam_bosque;j++)
            {
                printf("| %c", bosque18x18[i][j]);
            }
            printf("| \n");
        }
    }

}

//a jugar!!
void Bucle_Juego()
{
    int ganador=0;
    int turno=0;

    printf("Que jugador empieza?: ");
    scanf(" %d", &turno);

    do
    {
        while(ganador == 0)//que se repita mientras no haya ningun ganador
        {
            Actualizar_Juego(); //Actualiza el juego
            mover_tirarflecha(turno); //mueve o ataca

            //Falta comprobar si alguno ya ganó

            //Cambiando los turnos
            if(turno == 1)
            {
                turno = 2;
            }
                else
                    turno = 1;
        }

        //cuando se termine el bucle comprueba quien ha ganado
        if(ganador == 1)
            {
                printf("Ha Ganado el jugador 1");
            }
                else if(ganador == 2)
                    printf("Ha Ganado el jugador 2");

        ganador++;
    }
     while (ganador < 3);

     //para que pregunte si quiere salir o seguir jugando
     /*char respuesta;
     int s=0,n=1;
     printf("Quiere jugar de nuevo? (s/n): ");
     scanf(" %c", &respuesta);

    if (respuesta==s)
    {

    }
        else if (respuesta==n)
            fin_juego();*/

}

void mover_tirarflecha(int turno)
{
    char imagen_jugador; //dibuja 1' o '2' dependiendo del turno

    if(turno == 1)
    {
        imagen_jugador = '1';
        printf("Es el turno del jugador 1\n");
    }
    else
    {
        imagen_jugador = '2';
        printf("Es el turno del jugador 2\n");
    }

   char accion;

    //moverse
   int o_i,d_i; //coordenadas origen
   char o_j,d_j;  //coordenadas destino

   printf("Moverte o tirar flecha? (m o t)");
   scanf(" %c", &accion);

   //para saber lo que ha ingresado
   if(accion == 'm')
   {
       printf("\nIngrese Coordenadas origen (ej. 0-a) "); //origen
       scanf("%d-%c", &o_i,&o_j);

       printf("\nIngrese Coordenadas destino (1 lugar) "); //destino
       scanf("%d-%c", &d_i,&d_j);


       /*Dependiendo del tamaño del bosque*/
       if( tam_bosque == 6)
       {
           //para que se mueva 1 solo lugar
           /*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]))*/
           {
                bosque6x6[o_i][o_j - 97]= ' '; //queda vacio donde estaba
                bosque6x6[d_i][d_j - 97]= imagen_jugador; //a donde lo mueve mientras esté el espacio vacio
           }
       }
       else if( tam_bosque == 8)
       {
           bosque8x8[o_i][o_j - 97]= ' ';
           bosque8x8[d_i][d_j - 97]= imagen_jugador;
       }
       else if( tam_bosque == 10)
       {
           bosque10x10[o_i][o_j - 97]= ' ';
           bosque10x10[d_i][d_j - 97]= imagen_jugador;
       }
       else if( tam_bosque == 14)
       {
           bosque14x14[o_i][o_j - 97]= ' ';
           bosque14x14[d_i][d_j - 97]= imagen_jugador;
       }
       else if( tam_bosque == 18)
       {
           bosque18x18[o_i][o_j - 97]= ' ';
           bosque18x18[d_i][d_j - 97]= imagen_jugador;
       }

   }
  else if(accion == 't') //para disparar flecha. Se mueven arriba,abajo,izq,derecha
   {
       //para el bosque x6
       if (tam_bosque==6)
       {
           int limite=0, arriba=0, abajo=0, izq=0, derecha=0;
           int i=d_i;
           int j=d_j;

           while((limite<5) && (arriba<6) && (bosque6x6[i][j]!='X'))//para arriba
           {
               if (bosque6x6[i][j]=='2')
                  {
                        arriba++;
                        j++;
                        printf("GAME OVER: Jugador 2");
                  }
                        else printf("Fallaste!\n");

           }

           while((limite<5) && (abajo<6) && (bosque6x6[i][j]!='X'))//para abajo

           {
               if (bosque6x6[i][j]=='2')
                  {
                        abajo++;
                        j--;
                        printf("GAME OVER: Jugador 2");
                  }
                        else printf("Fallaste!\n");
           }

           while((limite<5) && (izq<6) && (bosque6x6[i][j]!='X'))//para la izquierda
           {
               if (bosque6x6[i][j]=='2')
                    {
                        izq++;
                        i--;
                        printf("GAME OVER: Jugador 2");
                  }
                        else printf("Fallaste!\n");

           }

           while((limite<5) && (derecha<6) && (bosque6x6[i][j]!='X'))//para la derecha
           {
               if (bosque6x6[i][j]=='2')
                  {
                        derecha++;
                        i++;
                        printf("GAME OVER: Jugador 2");
                  }
                        else printf("Fallaste!\n");
           }


       }/*

        //para el bosque x8
       if (tam_bosque==8)
       {
           int limite=0, arriba=0, abajo=0, izq=0, derecha=0;
           int i=d_i;
           int j=d_j;

           while((limite<7) && (arriba<8) && (bosque6x6[i][j]!='X'))//para arriba
           {
               if (bosque8x8[i][j]=='2')
                  {
                        arriba++;
                        j++;
                        printf("GAME OVER: Jugador 2");
                  }
                        else printf("Fallaste!\n");

           }

           while((limite<7) && (abajo<8) && (bosque8x8[i][j]!='X'))//para abajo

           {
               if (bosque8x8[i][j]=='2')
                  {
                        abajo++;
                        j--;
                        printf("GAME OVER: Jugador 2");
                  }
                        else printf("Fallaste!\n");
           }

           while((limite<7) && (izq<8) && (bosque8x8[i][j]!='X'))//para la izquierda
           {
               if (bosque8x8[i][j]=='2')
                    {
                        izq++;
                        i--;
                        printf("GAME OVER: Jugador 2");
                  }
                        else printf("Fallaste!\n");

           }

           while((limite<7) && (derecha<8) && (bosque8x8[i][j]!='X'))//para la derecha
           {
               if (bosque8x8[i][j]=='2')
                  {
                        derecha++;
                        i++;
                        printf("GAME OVER: Jugador 2");
                  }
                        else printf("Fallaste!\n");
           }


       }

        //para el bosque x10
       if (tam_bosque==10)
       {
           int limite=0, arriba=0, abajo=0, izq=0, derecha=0;
           int i=d_i;
           int j=d_j;

           while((limite<9) && (arriba<10) && (bosque10x10[i][j]!='X'))//para arriba
           {
               if (bosque10x10[i][j]=='2')
                  {
                        arriba++;
                        j++;
                        printf("GAME OVER: Jugador 2");
                  }
                        else printf("Fallaste!\n");

           }

           while((limite<9) && (abajo<10) && (bosque10x10[i][j]!='X'))//para abajo

           {
               if (bosque10x10[i][j]=='2')
                  {
                        abajo++;
                        j--;
                        printf("GAME OVER: Jugador 2");
                  }
                        else printf("Fallaste!\n");
           }

           while((limite<9) && (izq<10) && (bosque10x10[i][j]!='X'))//para la izquierda
           {
               if (bosque10x10[i][j]=='2')
                    {
                        izq++;
                        i--;
                        printf("GAME OVER: Jugador 2");
                  }
                        else printf("Fallaste!\n");

           }

           while((limite<9) && (derecha<10) && (bosque10x10[i][j]!='X'))//para la derecha
           {
               if (bosque10x10[i][j]=='2')
                  {
                        derecha++;
                        i++;
                        printf("GAME OVER: Jugador 2");
                  }
                        else printf("Fallaste!\n");
           }


       }

        //para el bosque x14
       if (tam_bosque==14)
       {
           int limite=0, arriba=0, abajo=0, izq=0, derecha=0;
           int i=d_i;
           int j=d_j;

           while((limite<13) && (arriba<14) && (bosque14x14[i][j]!='X'))//para arriba
           {
               if (bosque14x14[i][j]=='2')
                  {
                        arriba++;
                        j++;
                        printf("GAME OVER: Jugador 2");
                  }
                        else printf("Fallaste!\n");

           }

           while((limite<13) && (abajo<14) && (bosque14x14[i][j]!='X'))//para abajo
           {
               if (bosque14x14[i][j]=='2')
                  {
                        abajo++;
                        j--;
                        printf("GAME OVER: Jugador 2");
                  }
                        else printf("Fallaste!\n");
           }

           while((limite<13) && (izq<14) && (bosque6x6[i][j]!='X'))//para la izquierda
           {
               if (bosque6x6[i][j]=='2')
                    {
                        izq++;
                        i--;
                        printf("GAME OVER: Jugador 2");
                  }
                        else printf("Fallaste!\n");

           }

           while((limite<13) && (derecha<14) && (bosque14x14[i][j]!='X'))//para la derecha
           {
               if (bosque6x6[i][j]=='2')
                  {
                        derecha++;
                        i++;
                        printf("GAME OVER: Jugador 2");
                  }
                        else printf("Fallaste!\n");
           }


       }

        //para el bosque x18
       if (tam_bosque==6)
       {
           int limite=0, arriba=0, abajo=0, izq=0, derecha=0;
           int i=d_i;
           int j=d_j;

           while((limite<17) && (arriba<18) && (bosque18x18[i][j]!='X'))//para arriba
           {
               if (bosque18x18[i][j]=='2')
                  {
                        arriba++;
                        j++;
                        printf("GAME OVER: Jugador 2");
                  }
                        else printf("Fallaste!\n");

           }

           while((limite<17) && (abajo<18) && (bosque18x18[i][j]!='X'))//para abajo

           {
               if (bosque18x18[i][j]=='2')
                  {
                        abajo++;
                        j--;
                        printf("GAME OVER: Jugador 2");
                  }
                        else printf("Fallaste!\n");
           }

           while((limite<17) && (izq<18) && (bosque18x18[i][j]!='X'))//para la izquierda
           {
               if (bosque18x18[i][j]=='2')
                    {
                        izq++;
                        i--;
                        printf("GAME OVER: Jugador 2");
                  }
                        else printf("Fallaste!\n");

           }

           while((limite<17) && (derecha<18) && (bosque18x18[i][j]!='X'))//para la derecha
           {
               if (bosque6x6[i][j]=='2')
                  {
                        derecha++;
                        i++;
                        printf("GAME OVER: Jugador 2");
                  }
                        else printf("Fallaste!\n");
           }


       }*/
   }
}

0xFer

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:


else if(accion == 't'){
   bool AccionValida = false;
   
   while(AccionValida == false)
   {
       printf("Ingresa coordenada destino d_i");
       scanf(" %i",d_i);
       printf("Ingresa coordenada destino d_j");
       scanf(" %c",d_j);
       
       /*Creas un metodo para comprobar si ha realizado un movimiento legal, esto es, si no se ha salido del
       tablero, si no ha disparado a más de 5 posiciones o si ha disparado a travez de un arbol*/
       AccionValida = ComprobarAccion(o_i,o_j,d_i,d_j);
       
       if(AccionValida == false)
           printf("Accion Invalida(Rompiste alguna regla del juego); Intenta de nuevo\n");
   }
   
   /*Las siguientes lineas de código se ejecutaran siempre y cuando se haya ingresado una accion válida: */
   
   if(turno == 1)
   /*En caso de que sea turno del jugador 1*/
       if( tableroXxX[d_i][d_j - 97 ] == '2' )
       {
           ganador = 1;
       }
       else
       {
           printf("Has fallado");
       }
    else if(turno == 2)
    /*En caso de que sea turno del jugador 2*/
       if( tableroXxX[d_i][d_j - 97 ] == '1' )
       {
           ganador = 2;
       }
       else
       {
           printf("Has fallado");
       }
   
    }
}


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.
Código (java) [Seleccionar]
int getRandomNumber(){
    return 4; //chosen by fair dice roll
              //guaranteed to be random
}