Conseguir lo que pides es tan sencillo como esperar a que num,num2 marquen las coordenadas donde se encuentra el 3.
En cualquier caso revisa también lo siguiente:
fflush es una instrucción para usar únicamente con buffers de salida y stdin es una instrucción de entrada. No se quien te ha enseñado a usar eso pero vete aprendiendo que no es para nada una buena práctica.
Código C:
Ver originaldo {
printf("Ingrese el numero de filas que tendra el juego\n"); }
while(filas > maxfilas || filas < minfilas);
¿Qué se supone que hace esa instrucción a=isdigit... si aun no se ha asignado el valor a "filas"?
Por otro lado, si introduces un valor no numérico tu programa va a funcionar mal sí o sí, pruébalo.
Código C:
Ver originalfor(i = 0; i < filas; i++) {
for(j = 0; j < columnas; j++) {
matriz[i][j]=0;
matriz[num][num2]=8;
matriz[filas][columnas]=3;
}
}
No tiene sentido que inicialices las celdas [num][num2] y [filas][columnas] una y otra vez, con que lo hagas una única vez sobra.
Código C:
Ver original#define maxfilas 10
#define minfilas 3
#define maxcolum 10
#define mincolum 3
int matriz[400][400];
Si el laberinto más grande es de 10x10... ¿por qué forzar una reserva de 400x400?
Código C:
Ver originalmatriz[num][num2]=8;
matriz[filas][columnas]=0;
matriz[filas][columnas]=3;
¿Por qué haces dos asignaciones seguidas a [filas][columnas]? Con dejar solo la segunda te basta.
Código C:
Ver originalcase 'w': {
if (matriz[num-1][num2]==0) {
num--;
if(matriz[num][num2]==3){
break;
}
}
break;
}
¿Has probado a pulsar la 'w' cuando estás en la parte superior del mapa? el mismo problema lo tienes con el resto de movimientos.
Un saludo.