april
1.0.0
...
All
Classes
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Pages
actor.h
Go to the documentation of this file.
1
/* ========================================================================= */
2
/* ------------------------------------------------------------------------- */
/*
12
13
14
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
15
Please read COPYING and README files in root folder
16
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
17
*/
18
/* ------------------------------------------------------------------------- */
19
/* ========================================================================= */
20
#ifndef __ACTOR_INC__
21
#define __ACTOR_INC__
22
//
23
//
24
//
25
//
26
/* INCLUDES ------------------------------------------------------------ */
27
28
#include <
april/april.h
>
29
#include <
april/logic/component.h
>
30
#include <
april/logic/dna.h
>
31
32
/* INCLUDES ============================================================ */
33
//
34
//
35
//
36
//
37
/* DEFINITIONS --------------------------------------------------------- */
38
39
namespace
april {
40
41
class
World;
42
class
Sensor;
43
class
Actuator;
44
class
Brain;
45
class
Actor;
46
class
Reflex;
47
class
Director;
48
49
/* DEFINITIONS ========================================================= */
50
//
51
//
52
//
53
//
54
/* CLASS --------------------------------------------------------------- */
55
78
class
79
APRILSHARED_EXPORT
80
Actor
:
public
Component
{
81
BBM_TRACK(
Actor
);
82
83
//
84
//
85
//
86
//
87
/* DEFINITIONS ----------------------------------------------------- */
88
89
friend
class
Director
;
90
friend
class
Sensor
;
91
friend
class
Actuator
;
92
friend
class
World
;
93
friend
class
Reflex
;
94
friend
class
Brain
;
95
friend
class
ActorFactory
;
96
97
/* DEFINITIONS ===================================================== */
98
//
99
//
100
//
101
//
102
/* DATA ------------------------------------------------------------ */
103
104
private
:
105
107
World
* world_;
108
110
List2Dh sensors_;
111
113
List2Dh actuators_;
114
116
List2Dh reflexes_;
117
119
List2Dh brains_;
120
122
DNA
dna_
;
123
125
ID kind_;
126
128
quint64 birth_;
129
131
quint64 death_;
132
134
quint64 age_;
135
137
quint64 energy_;
138
140
143
quint64 cost_;
144
146
bool
alive_;
147
148
149
150
151
/* DATA ============================================================ */
152
//
153
//
154
//
155
//
156
/* FUNCTIONS ------------------------------------------------------- */
157
158
public
:
159
160
165
Actor
(
World
* w );
166
168
Q_REQUIRED_RESULT
169
static
Actor
* fromStg (
World
* w, QSettings & s );
170
171
protected
:
172
176
virtual
~
Actor
(
void
);
177
178
public
:
179
181
virtual
bool
save ( QSettings & s )
const
;
182
184
virtual
bool
load ( QSettings & s );
185
187
virtual
ID identificator (
void
)
const
188
{
return
kind(); }
189
191
virtual
Factory
* factory (
void
)
const
;
192
193
protected
:
194
196
200
void
killMe (
void
);
201
202
203
/* OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO */
206
207
208
public
:
209
211
Sensor
* firstSensor (
void
)
const
;
212
214
Actuator
* firstActuator (
void
)
const
;
215
217
Reflex
* firstReflex (
void
)
const
;
218
220
Brain
* firstBrain (
void
)
const
;
221
223
/* ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo */
224
225
226
/* OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO */
229
230
231
public
:
232
234
Sensor
* findSensor ( ID
id
)
const
;
235
237
Actuator
* findActuator ( ID
id
)
const
;
238
240
Reflex
* findReflex ( ID
id
)
const
;
241
243
Brain
* findBrain ( ID
id
)
const
;
244
246
/* ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo */
247
248
249
/* OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO */
252
253
254
public
:
255
257
inline
World
* world (
void
)
const
258
{
return
world_; }
259
261
inline
ID kind (
void
)
const
262
{
return
kind_; }
263
265
QString kindName (
void
)
const
;
266
268
const
DNA
& dna (
void
)
const
269
{
return
dna_
; }
270
272
inline
quint64 birth (
void
)
const
273
{
return
birth_; }
274
276
inline
quint64 death (
void
)
const
277
{
return
death_; }
278
280
inline
quint64 age (
void
)
const
281
{
return
age_; }
282
284
inline
quint64 toLive (
void
)
const
285
{
return
death_-birth_; }
286
288
quint64 energy (
void
)
const
289
{
return
energy_; }
290
292
quint64 totalEnergy (
void
)
const
;
293
295
quint64 cost (
void
)
const
296
{
return
cost_; }
297
299
bool
isAlive (
void
)
const
300
{
return
alive_; }
301
303
inline
bool
dies (
void
)
const
304
{
return
(birth_+age_ >= death_); }
305
307
/* ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo */
308
309
310
/* OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO */
313
314
315
protected
:
316
318
inline
void
setDNA (
const
DNA
& src )
319
{ dna_ = src; }
320
322
bool
decodeDNA (
void
);
323
325
bool
addActuator (
Actuator
* act );
326
328
bool
addSensor (
Sensor
* act );
329
331
bool
addReflex (
Reflex
* act );
332
334
bool
addBrain (
Brain
* act );
335
337
bool
remActuator (
Actuator
* act );
338
340
bool
remSensor (
Sensor
* act );
341
343
bool
remReflex (
Reflex
* act );
344
346
bool
remBrain (
Brain
* act );
347
349
void
doSteps (
int
steps = 1 );
350
352
void
makeAlive (
void
);
353
355
void
setEnergy ( quint64 new_val )
356
{ energy_ = new_val; }
357
359
/* ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo */
360
361
362
/* FUNCTIONS ======================================================= */
363
//
364
//
365
//
366
//
367
368
};
/* class Actor */
369
370
/* CLASS =============================================================== */
371
//
372
//
373
//
374
//
375
376
}
// namespace april
377
378
#endif // __ACTOR_INC__
379
/* ------------------------------------------------------------------------- */
380
/* ========================================================================= */
april
logic
actor.h
Generated on Sat Apr 20 2013 16:35:29 for april by
1.8.1.2