From aa5c31be6ec6a688e8d3a66c770ba99be8e060c9 Mon Sep 17 00:00:00 2001 From: tom Date: Sun, 12 Feb 2017 05:59:12 -0600 Subject: -minor constant changes -implemented dna structure, which carries the creatures attributes suchas speed and reach -currently a child inherits 100% the same dna as the mother -removed sing namespace std --- src/list.cpp | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) (limited to 'src/list.cpp') diff --git a/src/list.cpp b/src/list.cpp index d49f97a..edf3063 100644 --- a/src/list.cpp +++ b/src/list.cpp @@ -5,9 +5,10 @@ List::List(Window m) main = m; int i; - SDL_Rect Rect = {0,0,CREATURE_SIZE_START,CREATURE_SIZE_START}; + Dna defaultDNA; + SDL_Rect Rect = {0,0,defaultDNA.sizeMax/5,defaultDNA.sizeMax/5}; for(i=0;i::iterator it = C.begin(); it!=C.end(); it++) + for(std::list::iterator it = C.begin(); it!=C.end(); it++) if(it->getHealth()<=0){ SDL_Rect Rect = it->getRect(); Resource r = Resource(main,Rect); @@ -29,27 +30,29 @@ void List::Remove() C.erase(it--); } - for(list::iterator it = R.begin(); it!=R.end(); it++) + for(std::list::iterator it = R.begin(); it!=R.end(); it++) if(it->getAmount()<=0) R.erase(it--); } void List::Behavior() { - for(list::iterator it = C.begin(); it!=C.end(); it++){ - list N = getNear(*it); + for(std::list::iterator it = C.begin(); it!=C.end(); it++){ + std::list N = getNear(*it); it->giveN(N); it->Behavior(); + if(it->getPregnancyReady()){ + Dna D = it->getDNA(); SDL_Rect Rect = it->getRect(); - Rect.h = Rect.w = CREATURE_SIZE_START; - Creature X(main,Rect); + Rect.h = Rect.w = D.sizeMax / 5; + Creature X(main,Rect,D); C.push_back(X); it->hadPregnancy(); } } - for(list::iterator it = R.begin(); it!=R.end(); it++) + for(std::list::iterator it = R.begin(); it!=R.end(); it++) it->grow(); } @@ -61,22 +64,22 @@ void List::Place() R.push_back(Y); } - for(list::iterator it = C.begin(); it!=C.end(); it++) + for(std::list::iterator it = C.begin(); it!=C.end(); it++) it->Place(); - for(list::iterator it = R.begin(); it!=R.end(); it++) + for(std::list::iterator it = R.begin(); it!=R.end(); it++) it->Place(); } -list List::getNear(Creature nC) +std::list List::getNear(Creature nC) { - list N; + std::list N; - for(list ::iterator it = R.begin(); it!=R.end(); it++) + for(std::list::iterator it = R.begin(); it!=R.end(); it++) if( nC.getBestSense() > Distance(nC.getRect(),it->getRect()) ) N.push_back(&(*it)); - for(list ::iterator it = C.begin(); it!=C.end(); it++) + for(std::list::iterator it = C.begin(); it!=C.end(); it++) if( &nC == &(*it)) continue; else if( nC.getBestSense() > Distance(nC.getRect(),it->getRect()) ) -- cgit v1.2.3