public Prey(int origen, int size, Point p) { this.id = ++index; this.size = size; this.img = random.Next(4, 10) * 2; predator = null; path = new List <Point>(); survivor_speed = 0; this.posInit = this.destino = this.origen = origen; dead = outScreen = invisible = isInDenger = start = goal = false; path.Add(p); }
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 } } } }
public void newPredator(Predator p) { predator = p; }