mirror of
https://github.com/brmlab/brmlife.git
synced 2025-08-02 18:03:37 +02:00
Support for agent death
This commit is contained in:
parent
f6221436a4
commit
64ea015a06
4 changed files with 20 additions and 5 deletions
15
agent.cc
15
agent.cc
|
@ -30,6 +30,12 @@ agent::move_dir(int dir_x, int dir_y)
|
|||
return true;
|
||||
}
|
||||
|
||||
void
|
||||
agent::die(void)
|
||||
{
|
||||
dead = true;
|
||||
}
|
||||
|
||||
void
|
||||
agent::on_action_takes(void)
|
||||
{
|
||||
|
@ -42,7 +48,12 @@ agent::on_action_takes(void)
|
|||
void
|
||||
agent::on_tick(void)
|
||||
{
|
||||
energy += world::sun_energy;
|
||||
if (!dead) {
|
||||
energy += world::sun_energy;
|
||||
|
||||
if (energy <= 0)
|
||||
die();
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -57,7 +68,7 @@ agent::on_senses_update(void)
|
|||
tile->tile_in_dir(0, 1).symbol(),
|
||||
tile->tile_in_dir(-1, 0).symbol(),
|
||||
};
|
||||
conn->senses(tick_id, energy, around);
|
||||
conn->senses(tick_id, dead, energy, around);
|
||||
}
|
||||
|
||||
agent::~agent()
|
||||
|
|
4
agent.h
4
agent.h
|
@ -14,16 +14,20 @@ public:
|
|||
class tile *tile;
|
||||
|
||||
int energy;
|
||||
bool dead;
|
||||
|
||||
agent(int id_, class tile &tile_, class connection *conn_)
|
||||
: id (id_), conn (conn_), tile (&tile_)
|
||||
{
|
||||
put_at(tile_);
|
||||
energy = world::newborn_energy;
|
||||
dead = false;
|
||||
};
|
||||
|
||||
bool move_dir(int dir_x, int dir_y);
|
||||
|
||||
void die(void);
|
||||
|
||||
void on_action_takes(void);
|
||||
void on_tick(void);
|
||||
void on_senses_update(void);
|
||||
|
|
|
@ -11,10 +11,10 @@
|
|||
#include "connection.h"
|
||||
|
||||
void
|
||||
connection::senses(int tick_id, int energy, char around[4])
|
||||
connection::senses(int tick_id, bool dead, int energy, char around[4])
|
||||
{
|
||||
char buf[1024];
|
||||
snprintf(buf, sizeof(buf), "tick %d\nenergy %d\naround %c%c%c%c\n\n", tick_id, energy, around[0], around[1], around[2], around[3]);
|
||||
snprintf(buf, sizeof(buf), "tick %d\n%senergy %d\naround %c%c%c%c\n\n", tick_id, dead ? "DEAD\n" : "", energy, around[0], around[1], around[2], around[3]);
|
||||
|
||||
pthread_mutex_lock(&buf_lock);
|
||||
out_buf.append(buf);
|
||||
|
|
|
@ -26,7 +26,7 @@ public:
|
|||
close(fd);
|
||||
}
|
||||
|
||||
void senses(int tick_id, int energy, char around[4]);
|
||||
void senses(int tick_id, bool dead, int energy, char around[4]);
|
||||
void actions(class agent *);
|
||||
|
||||
void cancel(void);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue