wieker / agtevo

No description has been added.

Clone this repository (size: 106.2 KB): HTTPS / SSH
$ hg clone http://bitbucket.org/wieker/agtevo/
commit 66: c03900863615
parent 65: b00445db4d8a
branch: market-1
changed initial of agents from default to self new function
Kirill Abramovich / wieker
6 months ago

Changed (Δ699 bytes):

raw changeset »

agents/evil.c (28 lines added, 16 lines removed)

agents/simpleton.c (28 lines added, 16 lines removed)

agtevo1.c (4 lines added, 9 lines removed)

descr (1 lines added, 1 lines removed)

Up to file-list agents/evil.c:

@@ -51,32 +51,44 @@ action_context_t* context(agent_t* agent
51
51
	return agent;
52
52
}
53
53
54
void unref(agent_t* agent)
55
{
56
	if (agent->neuro)
57
		neuro_unref(agent->neuro);
58
	if (agent->genome)
59
		genome_unref(agent->genome);
60
	counter --;
61
}
62
54
63
agent_t* new(agent_t* agent)
55
64
{
56
65
	agent_t* newagent = (agent_t*) ksmalloc(sizeof(*agent), "agent_t");
57
66
	newagent->neuro = NULL;
58
67
	newagent->genome = NULL;
59
	newagent->energy = agent->energy;
68
	if (agent) {
69
		newagent->cell = agent->cell;
70
		newagent->direction = agent->direction;
71
		newagent->infected = agent->infected;
72
		newagent->action = agent->action;
73
		newagent->new_agent = agent->new_agent;
74
		newagent->unref = agent->unref;
75
		newagent->energy = agent->energy;
76
	}
77
	else {
78
		newagent->energy = default_energy;
79
		newagent->cell = NULL;
80
		newagent->direction = TOP;
81
		newagent->infected = 0;
82
		newagent->action = action;
83
		newagent->new_agent = new;
84
		newagent->unref = unref;
85
	}
60
86
	newagent->energy_max = default_energy_max;
61
	newagent->cell = agent->cell;
62
	newagent->direction = agent->direction;
63
	newagent->infected = agent->infected;
64
	newagent->action = agent->action;
65
	newagent->new_agent = agent->new_agent;
66
	newagent->unref = agent->unref;
67
87
	newagent->action_context = context(newagent);
88
68
89
	return newagent;
69
90
}
70
91
71
void unref(agent_t* agent)
72
{
73
	if (agent->neuro)
74
		neuro_unref(agent->neuro);
75
	if (agent->genome)
76
		ksfree(agent->genome);
77
	counter --;
78
}
79
80
92
void stat()
81
93
{
82
94
	printf("evil\t  %d\n", counter);

Up to file-list agents/simpleton.c:

@@ -51,32 +51,44 @@ action_context_t* context(agent_t* agent
51
51
	return agent;
52
52
}
53
53
54
void unref(agent_t* agent)
55
{
56
	if (agent->neuro)
57
		neuro_unref(agent->neuro);
58
	if (agent->genome)
59
		genome_unref(agent->genome);
60
	counter --;
61
}
62
54
63
agent_t* new(agent_t* agent)
55
64
{
56
65
	agent_t* newagent = (agent_t*) ksmalloc(sizeof(*agent), "agent_t");
57
66
	newagent->neuro = NULL;
58
67
	newagent->genome = NULL;
59
	newagent->energy = agent->energy;
68
	if (agent) {
69
		newagent->cell = agent->cell;
70
		newagent->direction = agent->direction;
71
		newagent->infected = agent->infected;
72
		newagent->action = agent->action;
73
		newagent->new_agent = agent->new_agent;
74
		newagent->unref = agent->unref;
75
		newagent->energy = agent->energy;
76
	}
77
	else {
78
		newagent->energy = default_energy;
79
		newagent->cell = NULL;
80
		newagent->direction = TOP;
81
		newagent->infected = 0;
82
		newagent->action = action;
83
		newagent->new_agent = new;
84
		newagent->unref = unref;
85
	}
60
86
	newagent->energy_max = default_energy_max;
61
	newagent->cell = agent->cell;
62
	newagent->direction = agent->direction;
63
	newagent->infected = agent->infected;
64
	newagent->action = agent->action;
65
	newagent->new_agent = agent->new_agent;
66
	newagent->unref = agent->unref;
67
87
	newagent->action_context = context(newagent);
88
68
89
	return newagent;
69
90
}
70
91
71
void unref(agent_t* agent)
72
{
73
	if (agent->neuro)
74
		neuro_unref(agent->neuro);
75
	if (agent->genome)
76
		ksfree(agent->genome);
77
	counter --;
78
}
79
80
92
void stat()
81
93
{
82
94
	printf("simpleton %d\n", counter);

Up to file-list agtevo1.c:

7
7
#include "world.h"
8
8
#include "agent.h"
9
9
10
typedef action_context_t* (*context_getter)(agent_t* agent);
11
12
10
world_t* world;
13
11
int age;
14
12
extern int helps;
@@ -48,14 +46,11 @@ void save_dump(int sig)
48
46
agent_t* agent_new_from_object(void* handle)
49
47
{
50
48
	agent_t* agent;
51
	context_getter getter;
52
49
	void* kfree;
53
	agent = agent_new_default();
54
	agent->action = dlsym(handle, "action");
55
	agent->new_agent = dlsym(handle, "new");
56
	agent->unref = dlsym(handle, "unref");
57
	getter = dlsym(handle, "context");
58
	agent->action_context = getter(agent);
50
	agent_t* (*new)(agent_t* agent);
51
	new = dlsym(handle, "new");
52
	agent = new(NULL);
53
	agent->new_agent = new;
59
54
	return agent;
60
55
}
61
56

Up to file-list descr:

1
default 400
1
evil 400