summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/creature.cpp8
-rw-r--r--src/list.cpp36
-rw-r--r--src/resource.cpp4
3 files changed, 44 insertions, 4 deletions
diff --git a/src/creature.cpp b/src/creature.cpp
index 7f31003..c7b36ca 100644
--- a/src/creature.cpp
+++ b/src/creature.cpp
@@ -12,7 +12,7 @@ Creature::Creature(Window m, std::string s) //Constructor
xPosition=xTarget=rand()%1200;
}
-void Creature::Behavior()
+int Creature::Behavior()
{
health-=1; //Decrements health each time a behavior is executed
this->Priority(); //Checks which action has priority (doesn't really do this right now)
@@ -20,7 +20,9 @@ void Creature::Behavior()
if(this->Action())
{
health+=10;
+ return 2;
}
+ return 0;
}
void Creature::Priority()
@@ -40,6 +42,10 @@ void Creature::Priority()
bool Creature::Action()
{
//If the distance is close, will return an bool
+
+ //if(xPosition == xTarget && yPosition == yTarget)
+ // return false;
+
if(sqrt(pow(xPosition - xTarget, 2) + pow(yPosition - yTarget, 2)) < 2)
return true;
diff --git a/src/list.cpp b/src/list.cpp
index 6317d45..cd69f8f 100644
--- a/src/list.cpp
+++ b/src/list.cpp
@@ -46,12 +46,42 @@ void List::Place()
void List::Behavior()
{
- int i, j;
+ int i, j, k, l;
std::vector<Location> Z;
for(i = 0; i < C.size(); i++)
{
- C[i].Behavior(); //executes the behavior of the creature at 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";
+ }
+ }
+ }
+ }
+ }
+ }
//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++)
@@ -62,7 +92,7 @@ void List::Behavior()
Z.clear(); //clear vector Z for next creature
// This kills the creature
- if(C[i].getHealth()==0)
+ if(C[i].getHealth()<=0)
{
Location z = C[i].getLocation();
Resource r = Resource(main,"img/Cdead.png",z);
diff --git a/src/resource.cpp b/src/resource.cpp
index 6a228fe..4f12e2d 100644
--- a/src/resource.cpp
+++ b/src/resource.cpp
@@ -8,6 +8,8 @@ Resource::Resource(Window m, std::string s) //Constructor
//Initialized random position coordinates
yPosition = rand()%800;
xPosition = rand()%1200;
+
+ amount = 100;
}
Resource::Resource(Window m, std::string s, Location z)
@@ -17,6 +19,8 @@ Resource::Resource(Window m, std::string s, Location z)
yPosition = z.y;
xPosition = z.x;
+
+ amount = 100;
}
Location Resource::getLocation() //Returns resource object