diff options
Diffstat (limited to 'src/list.cpp')
| -rw-r--r-- | src/list.cpp | 79 | 
1 files changed, 19 insertions, 60 deletions
diff --git a/src/list.cpp b/src/list.cpp index cd69f8f..93d2312 100644 --- a/src/list.cpp +++ b/src/list.cpp @@ -4,18 +4,16 @@ List::List(Window m) //Constructor  {    int i; -  for(i=0;i<10;i++) +  for(i=0;i<25;i++)    {      Creature X(m,"img/Cbasic.png");      C.push_back(X);    } -  //Creates 5 resources, inserts them into vector R; inserts locations of resources into vector L -  for(i=0;i<5;i++) +  for(i=0;i<100;i++)    {      Resource Y(m,"img/Rbasic.png");      R.push_back(Y); -    L.push_back(Y.getLocation());    }    main = m; @@ -23,73 +21,34 @@ List::List(Window m) //Constructor  void List::Place()  { -  int i; - -  //if any locations are creatures, erases them from vector L -  for(i = 0;i < L.size(); i++) -    if(L[i].type==1) -      L.erase(L.begin()+i); - -  //places each creature on window, inserts their locations into vector L -  for(i = 0; i < C.size(); i++) -  { -    C[i].Place(); -    L.push_back(C[i].getLocation()); -  } +  //places each creature on window +  for(vector<Creature>::iterator it = C.begin(); it!=C.end(); it++) +    it->Place();    //places all resources -  for(i = 0; i < R.size(); i++) +  for(int j = 0; j<R.size(); j++)    { -    R[i].Place(); +    if(R[j].getAmount()<=0) +      R.erase(R.begin()+j); +    else +      R[j].Place();    }  }  void List::Behavior()  { -  int i, j, k, l; -  std::vector<Location> Z; - -  for(i = 0; i < C.size(); i++) +  for(int i = 0; i<C.size(); i++)    { -    int o = C[i].Behavior(); - -    if(o==1) -    { -      //If next to creature -    } - -    if(o==2) -    { -      //If next to resource -      Location tmp = C[i].getLocation(); -      for(k=0;k<R.size();k++) -      { -        if(Distance(tmp,R[k].getLocation())<2) -        { -          R[k].eat(); -          if(R[k].getAmount()<=0) -          { -            R.erase(R.begin()+k); -            for(l=0;l<L.size();l++) -            { -              if(L[l].x==R[k].getLocation().x&&L[l].y==R[k].getLocation().y) // NEED TO OPERATOR OVERLOAD FOR THIS -              { -                L.erase(L.begin()+l); -                std::cout << "removing"; -              } -            } -          } -        } -      } -    } +    C[i].Behavior(); -    //if the distance between the creature and L[j] is less than 200, insert L[j] into vector Z. -    for(j = 0; j < L.size(); j++) -      if(200>(Distance(C[i].getLocation(),L[j]))) -        Z.push_back(L[j]); +    vector<Resource*> N; -    C[i].giveKnown(Z); //sets creature's target location? -    Z.clear(); //clear vector Z for next creature +    for(int j = 0; j < R.size(); j++) +      if(250>Distance(C[i].getLocation(),R[j].getLocation())) +        N.push_back(&R[j]); +     +    C[i].give(N); +    N.clear();      // This kills the creature      if(C[i].getHealth()<=0)  | 
