C/Visual C - Problema para simular la caída de una pelota

   
Vista:

Problema para simular la caída de una pelota

Publicado por Carlos (1 intervención) el 25/02/2016 12:24:55
Buenas, tengo un problema, y es que al ejecutar el siguiente codigo en teoría me tendría que salir los pasos que sigue la pelota, pero lo que pasa es que salen los pasos y además los puntos. Es decir, lo que busco es que no salgan los puntos de más.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#include <stdio.h>
 
#define N 10
 
//Funciones que vamos a usar
 
void tablainici(int tabla [N][N]);
void caiguda (int tabla [N][N]);
void ncaiguda (int tabla [N][N]);
 
main ()
{
	int i,j;
 
//Aquí determinamos la tabla inicial
 
	int tabla [N][N]={
		{0,0,0,0,0,0,0,0,0,0},
		{0,1,0,0,0,0,1,0,0,0},
		{0,0,1,0,0,0,1,0,0,0},
		{0,0,0,1,0,0,1,0,0,0},
		{0,1,0,0,0,0,0,0,0,1},
		{0,1,0,1,1,1,0,0,1,0},
		{0,1,0,0,0,0,0,1,0,0},
		{0,0,0,0,0,0,0,0,0,0},
		{0,0,1,1,0,1,1,0,0,0},
		{0,0,0,0,0,0,0,0,0,0}
	};
 
//Pintamos la tabla inicial (Menú - 1)
 
	tablainici(tabla);
	caiguda (tabla);
	//ncaiguda (tabla);
}
 
//Funciones 
 
	void tablainici(int tabla [N][N]){
	int i,j;
	for(i=0;i<N;i++){
		for(j=0;j<N;j++){
			if(tabla[i][j]==0)
				printf(".");
			else
				printf("X");
		}
	printf("\n");
	}
}
 
void caiguda (int tabla [N][N]){
	int pos,i,j;
	char dir;
	int cont=2;
	printf("Indica la posicion desde la que cae la bola y la direccion, izquierda (l) o derecha (r)\n");
	scanf ("%d %c",&pos, &dir);
	printf(" \n");
	tabla[0][pos] = cont;
	for(i=0;i<N;i++){
		for(j=0;j<N;j++){
			if(j==pos){
				if(tabla[i+1][pos]==0){ //nada debajo
				cont++;
				tabla[i+1][pos]=cont;
				}
				else/*(tabla[i+1][pos]==1)*/{ //algo debajo
					if(tabla[i+2][pos]==1){ //vertical
						if(dir=='r'){
							cont++;
							pos++;
							tabla[i][pos]=cont;
							j=0;
						}
						if(dir=='l'){
							cont++;
							pos--;
							tabla[i][pos]=cont;
							j=0;
						}
					}
					if(tabla[i+1][pos+1]==1 || tabla[i+1][pos-1]==1){ //recta
						if(dir=='r'){
							cont++;
							pos++;
							tabla[i][pos]=cont;
							j=0;
						}
						if(dir=='l'){
							cont++;
							pos--;
							tabla[i][pos]=cont;
							j=0;
						}
 
					}
					if(tabla[i][pos-1]==1 || tabla[i+2][pos+1]==1){ //diagonal  
						cont++;
						pos++;
						dir = 'r';
						tabla[i][pos]=cont;
						j=0;
					}
					if(tabla[i][pos+1]==1 || tabla[i+2][pos-1]==1){ //diagonal 
						cont++;
						pos--;
						dir = 'l';
						tabla[i][pos]=cont;
						j=0;
					}
 
 
				}
			}
		}
 
	}
	for(i=0;i<N;i++)
	{
		for(j=0;j<N;j++)
		{
			if(tabla[i][j]==1)
			{
				printf("X");
			}
			if(tabla[i][j]==0);
			{
				printf(".");
			}
			if (tabla[i][j]!=0 && tabla[i][j]!=1)
			{
			printf("%d",tabla[i][j]);
			}
		}
		printf("\n");
	}
 
}


capture-20160225-122122
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder