Beispiel #1
0
void Zombie::step() {
    Patch* p = patchHere<Patch>();
    AgentSet<Patch> nghs = patchHere<Patch>()->neighbors<Patch>();
    Patch* winningPatch = nghs.maxOneOf(CountHumansOnPatch());
    face(winningPatch);
    move(.5);

    AgentSet<Human> humans;
    turtlesHere(humans);

    if (humans.size() > 0) {
      Human* human = humans.oneOf();
      infect(human);
    }
  }
    void ZombieObserver::gatherPopulation(std::vector<Patch*>& patchSet, T *io_data)
{
    GridDimensions dim = grid()->dimensions();    
    int horizontal_run = dim.extents(0);

    std::vector<Patch*>::iterator iter = patchSet.begin();
    int lxmin = minPxcor();
    int lymin = minPycor();

    while ( iter != patchSet.end() ) {
        int i = (*iter)->pxCor() - lxmin;
        int j = (*iter)->pyCor() - lymin;

        AgentSet<AgentType> set;
	
        (*iter)->turtlesOn(set);
        io_data[i + j * horizontal_run] = int(set.size());
        iter++;
    }
}
Beispiel #3
0
	double operator()(const Patch* patch) const {
		AgentSet<Human> set;
		patch->turtlesOn(set);
		return set.size();
	}