示例#1
0
 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);
 }
示例#2
0
 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
             }
         }
     }
 }
示例#3
0
 public void newPredator(Predator p)
 {
     predator = p;
 }