Eclipse - Alguno me ayuda con el metodo buscarCosaMasCercana

 
Vista:
sin imagen de perfil

Alguno me ayuda con el metodo buscarCosaMasCercana

Publicado por Dante (3 intervenciones) el 18/10/2021 03:08:53
Hola que tal, debo crear un radar en una matriz hasta ahora hice esto, resulta que la posicion de la fila siempre me da bien la de la columna no. Alguna sugerencia?
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
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
public class Mapa {
 
 
	private Cosas[][] cosas;
 
 
	public Mapa(int filas, int columnas) {
		this.cosas = new Cosas[filas][columnas];
		for (int i = 0; i < this.cosas.length; i++)
			for (int j = 0; j < this.cosas[i].length; j++)
				cosas[i][j] = Cosas.NADA;
 
	}
 
 
	/**
	 * Coloca la cosa en una posición del mapa. Sirve para
	 * preparar los mapas
	 * @param cosa, la cosa a colocar
	 * @param x, la posición donde colocar la cosa en x
	 * @param y, la posición donde colocar la cosa en y
	 */
	public void colocar(Cosas cosa, int x, int y) {
	 if(x > cosas.length - 1 || y > cosas[x].length || x < 0 || y < 0){
			Error posicionErronea = new Error("Intenta colocar una cosa por fuera del mapa");
			throw posicionErronea;
		}
		this.cosas [x][y] = cosa;
 
	}
 
	/**
	 * Buscará la cosa más cercana desde la posición suministrada
	 * @param cosa, la cosa a buscar. No debe ser Cosas.NADA
	 * @param x, la posición de origen en x
	 * @param y, la posición de origen en y
	 * @return la posicion de la cosa más cercana a x, y
	 */
	public Posicion buscarCosaMasCercana(Cosas cosa, int x, int y) {
		// completar, evitando utilizar "fuerza bruta"
		Posicion unaPosicion = new Posicion();
		Cosas objetoABuscar = Cosas.NADA;
		int vueltasX = x ;
		int vueltasY = y ;
 
		int cont = 1;
 
 
		if (x > cosas.length - 1 || y > cosas[x].length|| x < 0 || y < 0){
			Error estasFuera = new Error("Estas fuera del mapa");
			throw estasFuera;
		}
		else if (cosa == Cosas.NADA){
			Error noSeBuscaNada = new Error("No puede buscar este objeto");
			throw noSeBuscaNada;
		}
 
		while(objetoABuscar != cosa){
			if (cosas[x][y] == cosa){
				objetoABuscar = cosa;
			}
 
			else {
 
				if(x + cont < cosas.length - 1){
 
					for(int a = x;a < vueltasX + cont;a++){
						if(cosas[a][y] == cosa){
					objetoABuscar = cosa;
						}
						x++;
						}
 
 
					vueltasX = x;
					}
				if(y - cont > 0){
 
						for(int i = y ;i > vueltasY - cont ; i--){
							if(cosas[x][i] == cosa ){
								objetoABuscar = cosa;
							}
							y--;
						}}
 
						vueltasY = y;
						cont++;
 
				if(x - cont > 0){
 
						for(int ar = x ; ar > vueltasX - cont ; ar--){
							if(cosas[ar][y] == cosa){
							objetoABuscar = cosa;
						}
						x--;
						}}
 
						vueltasX = x;
 
				if(y + cont < cosas [x].length){
 
						for(int d = y ; d < vueltasY + cont ; d++){
						if(cosas[x][d] == cosa){
							objetoABuscar = cosa;
						}
						y++;
						}}
 
						vueltasY = y;
						cont++;
 
						}
 
						}
 
		if(objetoABuscar != cosa){
			Error noEsta = new Error("El objeto no esta en el mapa");
			throw noEsta;
 
		}else {
			unaPosicion.x = x;
			unaPosicion.y = y;
 
			System.out.print(x+","+y);
		}
 
		return unaPosicion;
 
 
 
 
 
	}
 
	/**
	 * Buscará la cosa más lejana desde la posición suministrada
	 * @param cosa, la cosa a buscar. Puede ser Cosas.NADA
	 * @param x, la posición de origen en x
	 * @param y, la posición de origen en y
	 * @return la posicion de la cosa más lejana a x, y
	 */
	public Posicion buscarCosaMasLejana(Cosas cosa, int x, int y) {
 
	}
 
 
 
		}
 
 
 
class Posicion {
	int x, y;
	}
 
enum Cosas {
	ENEMIGO, FRUTA, NADA, PARED
}
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