Track agent energy

Base energy, move energy
This commit is contained in:
Petr Baudis 2011-11-27 02:32:59 +01:00
parent 4fe552a79e
commit 93882f79b9
5 changed files with 22 additions and 6 deletions

View file

@ -19,6 +19,8 @@ agent::put_at(class tile &t)
bool bool
agent::move_dir(int dir_x, int dir_y) agent::move_dir(int dir_x, int dir_y)
{ {
energy -= world::move_cost;
class tile *t2 = &tile->tile_in_dir(dir_x, dir_y); class tile *t2 = &tile->tile_in_dir(dir_x, dir_y);
if (!t2->on_agent_enter(*this)) if (!t2->on_agent_enter(*this))
return false; return false;
@ -54,7 +56,7 @@ agent::on_senses_update(void)
tile->tile_in_dir(0, 1).symbol(), tile->tile_in_dir(0, 1).symbol(),
tile->tile_in_dir(-1, 0).symbol(), tile->tile_in_dir(-1, 0).symbol(),
}; };
conn->senses(tick_id, around); conn->senses(tick_id, energy, around);
} }
agent::~agent() agent::~agent()

View file

@ -2,19 +2,24 @@
#define BRMLIFE__AGENT_H #define BRMLIFE__AGENT_H
#include "map.h" #include "map.h"
#include "world.h"
class connection; class connection;
class agent { class agent {
public: public:
int id; int id;
class tile *tile;
class connection *conn; class connection *conn;
class tile *tile;
int energy;
agent(int id_, class tile &tile_, class connection *conn_) agent(int id_, class tile &tile_, class connection *conn_)
: id (id_), tile (&tile_), conn (conn_) : id (id_), conn (conn_), tile (&tile_)
{ {
put_at(tile_); put_at(tile_);
energy = world::newborn_energy;
}; };
bool move_dir(int dir_x, int dir_y); bool move_dir(int dir_x, int dir_y);

View file

@ -11,10 +11,10 @@
#include "connection.h" #include "connection.h"
void void
connection::senses(int tick_id, char around[4]) connection::senses(int tick_id, int energy, char around[4])
{ {
char buf[1024]; 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); pthread_mutex_lock(&buf_lock);
out_buf.append(buf); out_buf.append(buf);

View file

@ -26,7 +26,7 @@ public:
close(fd); 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 actions(class agent *);
void cancel(void); void cancel(void);

9
world.h Normal file
View file

@ -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