#include "list.hpp" List::List() { int i; DNA d = DNA("herbavore"); Rectangle tmp; for(i=0;i::iterator it = creatures.begin(); it!= creatures.end(); it++) if(it->getHealth()<=0){ DNA d = DNA("plant"); Organism X(it->getRectangle(), d); resources.push_back(X); creatures.erase(it--); } for(std::list::iterator it = resources.begin(); it!= resources.end(); it++) if(it->getHealth()<=0) resources.erase(it--); } void List::Behavior() { for(std::list::iterator it = creatures.begin(); it!= creatures.end(); it++){ std::vector near = getNear(*it); it->giveNearMe(near); it->Behavior(); if(it->getPregnancyReady()){ Organism X(it->getRectangle(),it->getChildsDNA()); creatures.push_back(X); it->hadPregnancy(); } } for(std::list::iterator it = resources.begin(); it!= resources.end(); it++) it->grow(); } void List::Place() { tree.clear(); Rectangle tmp; DNA d = DNA("plant"); while(resources.size() < MINIMUM_PLANTS){ Organism X(tmp, d); resources.push_back(X); } for(std::list::iterator it = creatures.begin(); it!= creatures.end(); it++) tree.insert(&(*it));; for(std::list::iterator it = resources.begin(); it!=resources.end(); it++) tree.insert(&(*it));; } std::vector List::getNear(Organism c) { std::vector near; near = tree.retrieve(near, c.getRectangle()); for(std::vector::iterator it = near.begin(); it!= near.end(); it++) if(c.getBestSense() < Distance(c.getRectangle(),(*it)->getRectangle())) near.erase(it--); return near; } std::vector List::drawQuadTree() { return tree.Draw(); }