summaryrefslogtreecommitdiff
path: root/src/list.cpp
diff options
context:
space:
mode:
authortom <tombarrett@siu.edu>2017-02-12 05:59:12 -0600
committertom <tombarrett@siu.edu>2017-02-12 05:59:12 -0600
commitaa5c31be6ec6a688e8d3a66c770ba99be8e060c9 (patch)
tree702a7154031cb9c96d0e7fd495868418433bb842 /src/list.cpp
parent60b53e09cca0bdb4cddff76457e990ee33c42b2f (diff)
-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
Diffstat (limited to 'src/list.cpp')
-rw-r--r--src/list.cpp33
1 files changed, 18 insertions, 15 deletions
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<CREATURES;i++){
- Creature X(main,Rect);
+ Creature X(main,Rect,defaultDNA);
C.push_back(X);
}
@@ -21,7 +22,7 @@ List::List(Window m)
void List::Remove()
{
- for(list<Creature>::iterator it = C.begin(); it!=C.end(); it++)
+ for(std::list<Creature>::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<Resource>::iterator it = R.begin(); it!=R.end(); it++)
+ for(std::list<Resource>::iterator it = R.begin(); it!=R.end(); it++)
if(it->getAmount()<=0)
R.erase(it--);
}
void List::Behavior()
{
- for(list<Creature>::iterator it = C.begin(); it!=C.end(); it++){
- list<Entity*> N = getNear(*it);
+ for(std::list<Creature>::iterator it = C.begin(); it!=C.end(); it++){
+ std::list<Entity*> 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<Resource>::iterator it = R.begin(); it!=R.end(); it++)
+ for(std::list<Resource>::iterator it = R.begin(); it!=R.end(); it++)
it->grow();
}
@@ -61,22 +64,22 @@ void List::Place()
R.push_back(Y);
}
- for(list<Creature>::iterator it = C.begin(); it!=C.end(); it++)
+ for(std::list<Creature>::iterator it = C.begin(); it!=C.end(); it++)
it->Place();
- for(list<Resource>::iterator it = R.begin(); it!=R.end(); it++)
+ for(std::list<Resource>::iterator it = R.begin(); it!=R.end(); it++)
it->Place();
}
-list<Entity*> List::getNear(Creature nC)
+std::list<Entity*> List::getNear(Creature nC)
{
- list<Entity*> N;
+ std::list<Entity*> N;
- for(list <Resource>::iterator it = R.begin(); it!=R.end(); it++)
+ for(std::list<Resource>::iterator it = R.begin(); it!=R.end(); it++)
if( nC.getBestSense() > Distance(nC.getRect(),it->getRect()) )
N.push_back(&(*it));
- for(list <Creature>::iterator it = C.begin(); it!=C.end(); it++)
+ for(std::list<Creature>::iterator it = C.begin(); it!=C.end(); it++)
if( &nC == &(*it))
continue;
else if( nC.getBestSense() > Distance(nC.getRect(),it->getRect()) )