From 93882f79b956dda3c2aa85930c50f3578156498f Mon Sep 17 00:00:00 2001 From: Petr Baudis Date: Sun, 27 Nov 2011 02:32:59 +0100 Subject: [PATCH] Track agent energy Base energy, move energy --- agent.cc | 4 +++- agent.h | 9 +++++++-- connection.cc | 4 ++-- connection.h | 2 +- world.h | 9 +++++++++ 5 files changed, 22 insertions(+), 6 deletions(-) create mode 100644 world.h diff --git a/agent.cc b/agent.cc index f9169ae..0688e00 100644 --- a/agent.cc +++ b/agent.cc @@ -19,6 +19,8 @@ agent::put_at(class tile &t) bool agent::move_dir(int dir_x, int dir_y) { + energy -= world::move_cost; + class tile *t2 = &tile->tile_in_dir(dir_x, dir_y); if (!t2->on_agent_enter(*this)) return false; @@ -54,7 +56,7 @@ agent::on_senses_update(void) tile->tile_in_dir(0, 1).symbol(), tile->tile_in_dir(-1, 0).symbol(), }; - conn->senses(tick_id, around); + conn->senses(tick_id, energy, around); } agent::~agent() diff --git a/agent.h b/agent.h index 714f1e1..f9bf0f6 100644 --- a/agent.h +++ b/agent.h @@ -2,19 +2,24 @@ #define BRMLIFE__AGENT_H #include "map.h" +#include "world.h" class connection; class agent { public: int id; - class tile *tile; class connection *conn; + class tile *tile; + + int energy; + agent(int id_, class tile &tile_, class connection *conn_) - : id (id_), tile (&tile_), conn (conn_) + : id (id_), conn (conn_), tile (&tile_) { put_at(tile_); + energy = world::newborn_energy; }; bool move_dir(int dir_x, int dir_y); diff --git a/connection.cc b/connection.cc index 9832ec3..454538d 100644 --- a/connection.cc +++ b/connection.cc @@ -11,10 +11,10 @@ #include "connection.h" void -connection::senses(int tick_id, char around[4]) +connection::senses(int tick_id, int energy, char around[4]) { char buf[1024]; - snprintf(buf, sizeof(buf), "tick %d\naround %c%c%c%c\n\n", tick_id, around[0], around[1], around[2], around[3]); + 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]); pthread_mutex_lock(&buf_lock); out_buf.append(buf); diff --git a/connection.h b/connection.h index b956ac9..36f98df 100644 --- a/connection.h +++ b/connection.h @@ -26,7 +26,7 @@ public: close(fd); } - void senses(int tick_id, char around[4]); + void senses(int tick_id, int energy, char around[4]); void actions(class agent *); void cancel(void); diff --git a/world.h b/world.h new file mode 100644 index 0000000..41d91f4 --- /dev/null +++ b/world.h @@ -0,0 +1,9 @@ +#ifndef BRMLIFE__WORLD_H +#define BRMLIFE__WORLD_H + +struct world { + const static int newborn_energy = 500; + const static int move_cost = 10; +}; + +#endif