do
{
menu();
opcion=ingrese_opcion();
switch (opcion)
{
case 1:
jugar();
break;
case 2:
reglas();
break;
default:
error();
}
}
while (opcion!=2);
Aqui deberías de agregar una tercera opción que sea para salir del programa, entonces cambias ese 2 de while(opcion != 2) por 3. Ese
2 está mal porque si el usuario quiere ver las reglas entonces el programa termina.
char jugar()
{
bosques();
pausa();
return bosques;
}
No puedes retornas bosques, porque el metodo bosques es un tipo void y tu metodo jugar es de tipo char, también está de más ese return, si lo
quitas sería mejor.
if( bosque[0][j]=' ')
{
bosque[0][j]='1';
}
if( bosque[tam][i]!=' ')
{
bosque[tam][i]='1';
}
Los condicionales if no son necesarios puesto que ya sabemos que en esa posición hay un ' ', cambia eso por:
bosque[0][0]='1'; // Esquina superior izquierda
bosque[tam-1][tam-1]='2'; //Esquina inferior derecha
Luego para que no se genere una X en esas posiciones:
if( bosque[i][j]!='X' && bosque[i][j]!='1' && && bosque[i][j]!='2'){ //verifica que no haya X en esa posicion
}
Ahora para pedir una acción:
char accion; //fijate que esto es un char
printf("Moverte o tirar flecha? (m o t)"); scanf("%c",accion
); //presta atencion, estamos pidiendo un carácter no un número
//Luego para saber lo que ha ingresado
if(accion == 'm'){
/*Mover al jugador*/
}
else if(accion == 't'){
/*Tirar flechazo*/
}else{
printf("Accion incorrecta \n"); }
Ahora para elegir una coordenada primero tienes que entender cómo se dibuja el bosque, pongamos que dibujas un posque de 4x4:
j
0 1 2 3
0 1 2 3 4
1 5 6 7 8
i
2 9 10 11 12
3 13 14 15 16
Así es como se dibuja, esto es por la manera en la que lo estas dibujando con el ciclo for, pero eso se puede cambiar(de momento dejemoslo así).
Ahora fijate si quisieras saber en qué indices del bosque se encuentra el número 10, entonces para i es 2 y para j es 1, entonces accedemos así:
bosque[2][1]; //Esto tiene un valor de 10 por lo que te mostré arriba(la tabla).
Bien esto solo muestra cómo puedes acceder a los valores del bosque mediante sus indices, ahora pongamos que el personaje está en la posicion:
i = 0, j = 0, y se quiere mover a la posicion i = 0 j = 1 (o sea que avance una posicion a la derecha), entonces simplemente movemos
el carácter que esté en la posicion inicial a la final de esta manera:
int o_i,o_j; //coordenadas origen
int d_i,d_j; //coordenadas destino
printf("Ingresa coordenada i origen - >"); printf("Ingresa coordenada j origen - >"); /*Supongamos que el jugador ingresó: o_i = 0, o_j = 0*/
printf("Ingresa coordenada i destino - >"); printf("Ingresa coordenada j destino - >"); /*Supongamos que el jugador ingresó: o_i = 0, o_j = 1*/
//Entonces lo movemos así:
bosque[o_i][o_j] = ' '; //hacemos que en la posicion origen no haya nada
bosque[d_i][d_j] = '1'; //Movemos el jugador a la posicion destino
Con un poco de magia podemos traducir las coordenadas i y j a las coordenadas que tu estas utilizando en tu programa(1,2,3,4,5;a,b,c,d,e), pero
lo importante ahora es que entiendas lo que he puesto arriba.
Una duda, para cuándo tienes que entregar el juego?,Así si tienes mucho tiempo todavia entonces lo llevamos de poco a poco.