mirror of
https://github.com/brmlab/brmlife.git
synced 2025-08-03 02:13:35 +02:00
Spawn some herbs at startup
This commit is contained in:
parent
b80ccfdffd
commit
4d697adc83
4 changed files with 27 additions and 0 deletions
12
agent.h
12
agent.h
|
@ -48,4 +48,16 @@ public:
|
||||||
~agent();
|
~agent();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class herb : public agent {
|
||||||
|
public:
|
||||||
|
herb(int id_, class map &map_)
|
||||||
|
: agent(id_, NULL, map_)
|
||||||
|
{
|
||||||
|
energy = world::herb_energy;
|
||||||
|
attr.move = 0;
|
||||||
|
attr.attack = 0;
|
||||||
|
attr.defense = 0;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
9
main.cc
9
main.cc
|
@ -23,6 +23,7 @@ int
|
||||||
main(int argc, char *argv[])
|
main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
class map map(argc < 2 ? 40 : atoi(argv[1]), argc < 3 ? 20 : atoi(argv[2]));
|
class map map(argc < 2 ? 40 : atoi(argv[1]), argc < 3 ? 20 : atoi(argv[2]));
|
||||||
|
int herbs = argc < 4 ? map.w * map.h / world::herb_rate : atoi(argv[3]);
|
||||||
|
|
||||||
srandom(time(NULL));
|
srandom(time(NULL));
|
||||||
|
|
||||||
|
@ -44,6 +45,14 @@ main(int argc, char *argv[])
|
||||||
std::list<class agent *> agents;
|
std::list<class agent *> agents;
|
||||||
int aid = 0;
|
int aid = 0;
|
||||||
|
|
||||||
|
/* Spawn herbs. */
|
||||||
|
|
||||||
|
for (int i = 0; i < herbs; i++) {
|
||||||
|
class agent *a = new class herb(aid++, map);
|
||||||
|
agents.push_back(a);
|
||||||
|
a->spawn();
|
||||||
|
}
|
||||||
|
|
||||||
/* Main tick loop. */
|
/* Main tick loop. */
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
|
|
2
map.cc
2
map.cc
|
@ -32,6 +32,8 @@ tile::symbol(void)
|
||||||
if (agent) {
|
if (agent) {
|
||||||
if (agent->dead)
|
if (agent->dead)
|
||||||
return 'a';
|
return 'a';
|
||||||
|
if (agent->attr.move < 0.01)
|
||||||
|
return 'x';
|
||||||
return '0' + (agent->id % 10);
|
return '0' + (agent->id % 10);
|
||||||
}
|
}
|
||||||
return type_symbol();
|
return type_symbol();
|
||||||
|
|
4
world.h
4
world.h
|
@ -3,6 +3,8 @@
|
||||||
|
|
||||||
struct world {
|
struct world {
|
||||||
const static int newborn_energy = 5000;
|
const static int newborn_energy = 5000;
|
||||||
|
const static int herb_energy = 1500;
|
||||||
|
|
||||||
const static int move_cost = -50;
|
const static int move_cost = -50;
|
||||||
const static int attack_cost = -400;
|
const static int attack_cost = -400;
|
||||||
const static int defense_cost = -200;
|
const static int defense_cost = -200;
|
||||||
|
@ -15,6 +17,8 @@ struct world {
|
||||||
const static int dead_body_energy = 2000;
|
const static int dead_body_energy = 2000;
|
||||||
const static double dead_body_energy_carryover = 0.5;
|
const static double dead_body_energy_carryover = 0.5;
|
||||||
const static int dead_decay = -10;
|
const static int dead_decay = -10;
|
||||||
|
|
||||||
|
const static int herb_rate = 20; /* one herb per herb_rate tiles */
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue