public void irARoca() { if (roca.active) { if (position.X <= roca.position.X + cercania && position.X >= roca.position.X - cercania && position.Y <= roca.position.Y + cercania && position.Y >= roca.position.Y - cercania) { if (roca.recoger()) { cargarRoca(); it = 0; if (lleno) { estado = Estado.IR_A_NAVE; } else { estado = Estado.HACIENDO_NADA; } } else { estado = Estado.HACIENDO_NADA; } roca = null; } else { if (position.X < roca.position.X) { position.X += velocidad; } if (position.X > roca.position.X) { position.X -= velocidad; } if (position.Y < roca.position.Y) { position.Y += velocidad; } if (position.Y > roca.position.Y) { position.Y -= velocidad; } } } else { //Otro la recogio estado = Estado.HACIENDO_NADA; roca = null; } }
public void buscarRocas() { double min = -1; foreach (Roca roca in espacio.rocas) { if (roca.active) { if (min == -1) { min = Math.Sqrt(Math.Pow(roca.position.X - position.X, 2) + Math.Pow(roca.position.Y - position.Y, 2)); } else { min = Math.Min(min, Math.Sqrt(Math.Pow(roca.position.X - position.X, 2) + Math.Pow(roca.position.Y - position.Y, 2))); } if (Math.Sqrt(Math.Pow(roca.position.X - position.X, 2) + Math.Pow(roca.position.Y - position.Y, 2)) <= distanciaBusqueda && min == Math.Sqrt(Math.Pow(roca.position.X - position.X, 2) + Math.Pow(roca.position.Y - position.Y, 2))) { estado = Estado.ENCONTRO_ROCA; this.roca = roca; } } } }