private void upDatePrey(Predator predator) { foreach (Prey p_ in preys) { if (!p_.invisible && !p_.dead) { //si no es invisible y no a muerto la presa if (predator.collision(p_, 180) && !predator.containPrey() && !p_.containPredator()) { p_.newPredator(predator); predator.newPrey(p_); break; } else if (p_.containPredator() && predator.Prey == p_ && !predator.collision(p_, 180)) { /*si no colisiona con la presa actual se la quitamos*/ p_.newPredator(null); predator.newPrey(null); } else if (predator.containPrey() && predator.distance(p_) < predator.distance(predator.Prey) && !p_.containPredator()) { /*depredador contiene una presa, pero quiere cambiarla por otra mas cercana*/ predator.Prey.newPredator(null); //libera presa actual predator.newPrey(p_); //actualizo presa p_.newPredator(predator); //actualizo predador de presa } else if (!predator.containPrey() && p_.containPredator() && predator.distance(p_) < p_.predator.distance(p_)) { p_.predator.newPrey(null); predator.newPrey(p_); p_.newPredator(predator); } else if (predator.containPrey() && predator.Prey != p_ && p_.containPredator() && predator.distance(p_) < predator.distance(predator.Prey) && predator.distance(p_) < p_.predator.distance(p_)) { /*depredador contiene presa, pero encuentra una presa mas cercana que ya contiene su depredador*/ p_.predator.newPrey(null); //depredador ajeno deja de seguir a su presa predator.Prey.newPredator(null); //depredador deja de seguir a su presa predator.newPrey(p_); //predador cambia a nueva presa p_.newPredator(predator); //nueva presa es perseguida } } } }