Hola, muy buenas compañeros, veréis, estoy dándole vueltas a un programa en
C, que consiste en hacer un laberinto de asteriscos que se genere de manera aleatoria y por el cual se ha de ir avanzando, hasta ahí bien, mi problema llega cuando tengo que detectar los asteriscos para que mi "0" no avance porque un "*" le corta el paso, el programa tiene más matices, pero de momento ese es mi problema,
por favor, en principio solo quiero ayuda para replantearme mi planteamiento inicial del programa, seguramente esté haciendo algo mal o debería de enfocarlo de otro modo, no quiero que me lo den hecho, sino no sirve de nada.
El código sobre el que estoy trabajando es este:
Muchas gracias, me está costando empezar en esto de la programación, espero que con el apoyo de los foreros, con esfuerzo y dedicación consiga superarme día a día, gracias!
Código:
#include <stdio.h>
#include <windows.h>
COORD cxy;
#define posicion(x,y) {(cxy.X)= (x);(cxy.Y)= (y); SetConsoleCursorPosition((GetStdHandle(STD_OUTPUT_HANDLE)), (cxy) );}
char m[20][80];
char f=21, c=40;
char letra;
void desplazamiento(){
do{
letra=getch();
switch(letra){
case 119: //w
posicion(c,f); printf(" ");
f--;
posicion(c,f); printf("0");
break;
case 100://d
posicion(c,f); printf(" ");
c++;
posicion(c,f); printf("0");
break;
case 97://a
posicion(c,f); printf(" ");
c--;
posicion(c,f); printf("0");
break;
case 115://s
posicion(c,f); printf(" ");
f++;
posicion(c,f); printf("0");
break;
}
}while(f!=1);
}
void laberinto(){
//Genero valores aleatorios del 1 al 100 para todas las posiciones
//de mi array bidimensional m
int i, j;
for(i=0;i<20;i++){
for(j=0;j<80;j++){
m[i][j]=rand()%100;
}
}
}
void mostrarlaberinto(){
//pinto el laberinto diciendo que para cualquier posición
//del array m donde el valor que se le ha asignado aleatoriamente
//sea menor que 50, me pinte un espacio en blanco, y el resto de
//valores que pinte "*"
int i, j;
for (i=0;i<20;i++){
for(j=0;j<80;j++){
if(m[i][j]<50){
printf(" ");
}else{
printf("*");
}
}
}
}
void colisiones(){
}
int main(){
srand(time(NULL));
laberinto();
mostrarlaberinto();
posicion(c,f);printf("0");
colisiones();
desplazamiento();
getch();
return 0;
}
Estoy que no sé si crear una clase para las colisiones, o meter una batería de condiciones en el switch, también contemplo el do dentro de dos for, pero no he sacado nada en claro de momento, estoy algo atascado >__<