public void buscarMoronas() { lock (espacio.moronas) { double min = -1; foreach (Morona morona in espacio.moronas) { if (morona.active) { if (min == -1) { min = Math.Sqrt(Math.Pow(morona.position.X - position.X, 2) + Math.Pow(morona.position.Y - position.Y, 2)); } else { min = Math.Min(min, Math.Sqrt(Math.Pow(morona.position.X - position.X, 2) + Math.Pow(morona.position.Y - position.Y, 2))); } if (Math.Sqrt(Math.Pow(morona.position.X - position.X, 2) + Math.Pow(morona.position.Y - position.Y, 2)) <= distanciaBusqueda && min == Math.Sqrt(Math.Pow(morona.position.X - position.X, 2) + Math.Pow(morona.position.Y - position.Y, 2))) { estado = Estado.RECOLECTAR_MORONA; this.morona = morona; } } } } }
public void irAMorona() { if (morona.active) { if (position.X <= morona.position.X + cercania && position.X >= morona.position.X - cercania && position.Y <= morona.position.Y + cercania && position.Y >= morona.position.Y - cercania) { morona.recoger(); estado = Estado.HACIENDO_NADA; morona = null; } else { if (position.X < morona.position.X) { position.X += velocidad; } if (position.X > morona.position.X) { position.X -= velocidad; } if (position.Y < morona.position.Y) { position.Y += velocidad; } if (position.Y > morona.position.Y) { position.Y -= velocidad; } } } else { //Otro la recogio estado = Estado.HACIENDO_NADA; morona = null; } }