Estuve revisando tu codigo antes de que lo quitaras, creo que estas escribiendo codigo de mas, tienes que hacer las cosas un poco mas genericas y asi poder reutilizar tu codigo.
mira por ejemplo tenias muchos struct donde la info de adentro era del mismo tipo y yo digo porque no haces algo como esto:
typedef struct{
char palabra_[20];
int largoPalabra;
}nombre,apellido,ci,alias;
asi te evitas estar creando 3 o 4
en la funcion Elegir_Bosque puedes hacer esto:
void Elegir_Bosque(void)
{
// 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;break;
case 2: tam_bosque = 8;break;
case 3: tam_bosque = 10;break;
case 4: tam_bosque = 14;break;
case 5: tam_bosque = 18;break;
default:tam_bosque = 6;break;
}
Iniciar_Bosque();
Bucle_Juego();
}
y hay una donde si estaba en extremo larga que era la de Iniciar_Bosque
podias haber hecho algo como esto
void Iniciar_Bosque()
{
int Xnum=0;
int i, j;
//aqui nos creamos un arreglo dinamico que dependiendo la opcion
//del usuario puede ser de 6,8,10,14
//este tambien se llama arreglo bidimensional o puntero doble
char **bosque
=(char**)malloc(tam_bosque
*sizeof(*char));//esto creas las filas for(i=0;i<tam_bosque;i++)//recorremos todas las filas
bosque
[i
]=(char*)malloc(tam_bosque
*sizeof(char));//esto crea las columnas
for(i = 0; i < tam_bosque;i++)
for(j = 0; j < tam_bosque;j++)
bosque[i][j] = ' ';
bosque[0][0] = '1';
bosque[tam_bosque-1][tam_bosque-1] = '2';
while(Xnum < tam_bosque/2 ){
i
= (rand() % tam_bosque
); j
= (rand() % tam_bosque
);
if(bosque[i][j] == ' ')
{
bosque[i][j] = 'X';
Xnum++;
}
}
}