Buenas, tengo una matriz de 0 y 1, donde los 0 se convierten en "." y los 1 en "X", pues tengo que dejar caer una bola desde arriba y como si fuera un pinball ir rebotando simulando las X como obstaculos, algo así:
Pero no consigo aplicar el contador que vaya bajando, todo el rato me da error, alguien me puede ayudar?
Esto es lo que llevo:
#include <stdio.h>
void intercambia(int *a, int *b);
void dir(char c);
int main()
{
int inicio,i,j,contador;
char direccion;
int matriu[10][10]={
{0,0,0,0,0,0,0,0,0,0},
{0,1,0,0,1,0,0,0,1,0},
{0,1,0,1,0,0,0,1,0,0},
{0,1,0,0,0,0,1,0,0,0},
{0,0,0,0,0,0,0,0,0,1},
{0,1,1,1,1,0,0,0,1,0},
{0,0,0,0,0,0,0,1,0,0},
{0,0,0,0,0,0,1,0,0,0},
{0,0,0,0,0,1,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0},
};
do{
printf("\nIntroducir el numero de columna por el cual desea lanzar la primera bola: ");
scanf("%d",&inicio);
}while(inicio>=9);
do{
printf("\nEn caso de encontrarse con un obstaculo, en que direccion quiere que se dirija la bola, derecha (D) o izquierda (I): ");
fflush(stdin);
scanf("%c", &direccion);
}while(direccion!='D' && direccion!='d' && direccion!='I' && direccion!='i');
inicio=matriu[0][inicio];
contador=0;
while(i++){
contador +=1;
}
intercambia( &inicio, &contador);
for(i=0;i<10;i++)
{
printf("\t");
for(j=0;j<10;j++)
{
//if(matriu[j]==matriu[0][inicio])
// printf("%d ",contador);
if(matriu[j]==1)
printf("X ");
if(matriu[j]==0)
printf(". ");
}
printf("\n");
}
contador=0;
while(i++){
contador +=1;
}
}
void intercambia(int *a,int *b){ //a será el valor de la matriz y b el valor del contador
*a=*b;
}
void dir(char c){
int j;
char direccion;
if(direccion!='D' && direccion!='d'){
j+=1;
}
else
j-=1;
}
Pero no consigo aplicar el contador que vaya bajando, todo el rato me da error, alguien me puede ayudar?
Esto es lo que llevo:
#include <stdio.h>
void intercambia(int *a, int *b);
void dir(char c);
int main()
{
int inicio,i,j,contador;
char direccion;
int matriu[10][10]={
{0,0,0,0,0,0,0,0,0,0},
{0,1,0,0,1,0,0,0,1,0},
{0,1,0,1,0,0,0,1,0,0},
{0,1,0,0,0,0,1,0,0,0},
{0,0,0,0,0,0,0,0,0,1},
{0,1,1,1,1,0,0,0,1,0},
{0,0,0,0,0,0,0,1,0,0},
{0,0,0,0,0,0,1,0,0,0},
{0,0,0,0,0,1,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0},
};
do{
printf("\nIntroducir el numero de columna por el cual desea lanzar la primera bola: ");
scanf("%d",&inicio);
}while(inicio>=9);
do{
printf("\nEn caso de encontrarse con un obstaculo, en que direccion quiere que se dirija la bola, derecha (D) o izquierda (I): ");
fflush(stdin);
scanf("%c", &direccion);
}while(direccion!='D' && direccion!='d' && direccion!='I' && direccion!='i');
inicio=matriu[0][inicio];
contador=0;
while(i++){
contador +=1;
}
intercambia( &inicio, &contador);
for(i=0;i<10;i++)
{
printf("\t");
for(j=0;j<10;j++)
{
//if(matriu[j]==matriu[0][inicio])
// printf("%d ",contador);
if(matriu[j]==1)
printf("X ");
if(matriu[j]==0)
printf(". ");
}
printf("\n");
}
contador=0;
while(i++){
contador +=1;
}
}
void intercambia(int *a,int *b){ //a será el valor de la matriz y b el valor del contador
*a=*b;
}
void dir(char c){
int j;
char direccion;
if(direccion!='D' && direccion!='d'){
j+=1;
}
else
j-=1;
}