Tato referenΦnφ p°φruΦka popisuje obsah unity OrgInterface
,
zejmΘna metod rozhranφ IVLFOrganism
. Nenφ urΦena ke Φtenφ od
zaΦßtku ke konci, ani k v²uce, jak psßt organismy, ale k rychlΘmu zjiÜt∞nφ
p°esnΘho v²znamu jednotliv²ch objekt∙ deklarovan²ch v unit∞
OrgInterface
. Z toho takΘ plyne jejφ strohost a technick²
jazyk.
const MaxURCount = 256;
Maximßlnφ poΦet u₧ivatelsk²ch registr∙, kter² m∙₧ete naalokovat funkcφ
AllocUR
.
AllocedURCount
,AllocUR
,ForeignAllocedURCount
,ForeignUR
,SetForeignUR
,SetUR
,UR
type TMoveDirection = (N, W, S, E);
Datov² typ udßvajφcφ sm∞r pohybu (
N
= nahoru,W
= vlevo,S
= dol∙,E
= vpravo).
type TOptions = record FuzzyAttack: Boolean; EnergyPerStep: Integer; DistributeEnergy: Boolean; ChemGoAway: Boolean; end;
Datov² typ pou₧φvan² funkcφ
GetOptions
k zφskßnφ informacφ o nastavenφ simulace. V²znam jednotliv²ch polo₧ek je nßsledujφcφ:
FuzzyAttack
- Pokud je
True
, pak vφt∞zem souboje dvou organism∙ (vyvolanΘm pomocφAttack
) je ten z nich, jeho₧ souΦet hmotnosti a energie je vyÜÜφ. Pokud jeFalse
, o vφt∞zi se rozhoduje pomocφ slo₧it∞jÜφho algoritmu, kter² je popsßn u funkceAttack
.EnergyPerStep
- Mno₧stvφ energie, kterΘ organismus ztratφ p°i ka₧dΘm kroku simulace ("da≥ za ₧ivot").
DistributeEnergy
- Energie vymrhanß na pohyb, ·toky apod. se vracφ ve form∞ potravy zp∞t do prost°edφ, tj. platφ zßkon zachovßnφ energie.
ChemGoAway
- Pokud je
True
, chemikßlie vylouΦenΘ organismy (pomocφExclude
) postupn∞ "vyprchßvajφ", tj. hodnoty na polφΦcφch jsou postupn∞ nastavovßny na 0. P°esn² popis algoritmu vyprchßvßnφ nenφ definovßn. Pokud jeFalse
, pak jakßkoliv chemikßlie vylouΦenß organismem z∙stane na p°φsluÜnΘm polφΦku neomezen∞ dlouho (pokud nebude p°epsßna jinou chemikßliφ).
function Age: Integer; stdcall;
V∞k organismu, neboli poΦet krok∙ simulace od vzniku organismu.
function AllocedURCount: Integer; stdcall;
PoΦet prßv∞ alokovan²ch u₧ivatelsk²ch registr∙.
AllocUR
,ForeignAllocedURCount
,ForeignUR
,MaxURCount
,SetForeignUR
,SetUR
,UR
function AllocUR(Count: Integer): Integer; stdcall;
Alokuje
Count
u₧ivatelsk²ch registr∙. Jejich indexy jsou v pak rozsahu0
..Count - 1
. Pokud jeCount
< 0 neboCount
>MaxURCount
, pak funkce nic nealokuje a ukonΦφ se.P°i alokovßnφ platφ tato pravidla:
- Pokud bylo p°ed volßnφm funkce alokovßno mΘn∞ registr∙ ne₧
Count
, jejich obsah bude zachovßn a nov∞ p°idanΘ registry budou mφt hodnotu 0.- Pokud bylo p°ed volßnφm funkce alokovßno vφce registr∙ ne₧
Count
, bude zachovßn obsah prvnφchCount
registr∙.- Pokud bylo p°ed volßnφm funkce alokovßno stejn∞ registr∙ jako
Count
, nic se volßnφm funkce nezm∞nφ.Pokud byl organismus vytvo°en manußlnφm p°idßnφm do prost°edφ, nemß zpoΦßtku alokovanΘ ₧ßdnΘ u₧ivatelskΘ registry. Pokud byl vytvo°en bun∞Φn²m d∞lenφm (funkcφ
DivCell
), mß zpoΦßtku alokovßn stejn² poΦet registr∙ jako rodiΦ a jejich hodnoty jsou nastaveny na 0.Funkce vrßtφ poΦet alokovan²ch registr∙.
AllocedURCount
,DivCell
,ForeignAllocedURCount
,ForeignUR
,MaxURCount
,SetForeignUR
,SetUR
,UR
function Attack: Boolean; stdcall;
Pokud se na polφΦku, kde se nachßzφ organismus, nachßzφ i jin² organismus, pak na n∞j organismus za·toΦφ. O vφt∞zi ·toku se rozhoduje v zßvislosti na nastavenφ takto:
- Pokud je zvolena volba P°i ·toku siln∞jÜφ organismu v₧dy zvφt∞zφ, pak je vφt∞zem ten organismu, jeho₧ souΦet hmotnosti a energie je vyÜÜφ. Pokud je tento souΦet stejn², zvφt∞zφ libovoln² organismus z nich ("libovolnostφ" se myslφ, ₧e postup urΦenφ vφt∞ze nenφ zve°ejn∞n v API a organismus na n∞j nesmφ spolΘhat).
- Pokud je zvolena volba P°i ·toku siln∞jÜφ organismus mß v∞tÜφ pravd∞podobnost vφt∞zstvφ, pak je postup nßsledujφcφ:
- SeΦte se hmotnost a energie prvnφho organismu (= S1).
- SeΦte se hmotnost a energie druhΘho organismu (= S2).
- SeΦtou se Φφsla S1 a S2 (= S).
- VypoΦte se pravd∞podobnost vφt∞zstvφ prvnφho organismu P1 = S1 / S.
- VypoΦte se pravd∞podobnost vφt∞zstvφ druhΘho organismu P2 = S2 / S.
- Vφt∞zem se stane nßhodn∞ jeden z organism∙ s ohledem na p°φsluÜnΘ pravd∞podobnosti vφt∞zstvφ.
Od hmotnosti vφt∞znΘho organismu se po souboji odeΦte hmotnost pora₧enΘho organismu a od energie vφt∞znΘho organismu se odeΦte energie pora₧enΘho organismu. Pokud je v nastavenφ zvolena volba Spot°ebovanou energii op∞t distribuovat do prost°edφ, pak se odeΦtenΘ mno₧stvφ hmotnosti a energie vrßtφ do prost°edφ ve form∞ potravy (viz Algoritmus vracenφ potravy do prost°edφ). Ohlφdß se, aby hodnoty neÜly do zßporn²ch Φφsel. Pora₧en² organismus umφrß (stane se totΘ₧ jako po zavolßnφ jeho metody
Die
).Pokud se mezi volßnφmi organismus nepohne nebo nerozmno₧φ, je zaruΦeno, ₧e funkce
Attack
,ForeignAllocedURCount
,ForeignUR
,OrgAt
aSetForeignUR
se budou t²kat tΘho₧ organismu..
Pokud se ·tok povedl (organismus vyhrßl), funkce vrßtφ
True
. Pokud se ·tok nepovedl (organismus zahynul), funkce nevrßtφ kontrolu zp∞t do kontrolnφ procedury (p°φkazy nßsledujφcφ poAttack
se tedy neprovedou). Pokud se pod organismem ₧ßdn² jin² organismus nenachßzel, funkce vrßtφFalse
.
Attack
,ForeignAllocedURCount
,ForeignUR
,OrgAt
,SetForeignUR
,GetOptions
function Build(Value: Byte): Byte; stdcall;
Strßvφ
Value
potravy ze svΘ trßvicφ vakuoly a p°em∞nφ ji na hmotu, Φφm₧ oValue
zv²Üφ svoji hmotnost. Mno₧stvφ strßvenΘ potravy se snφ₧φ v p°φpad∞, ₧e jφ nenφ ve vakuole dostatek nebo kdy₧ by hmotnost organismu p°esßhla maximßlnφ mez (255 jednotek).Funkce vrßtφ skuteΦnΘ mno₧stvφ strßvenΘ potravy.
function Color: TColor; stdcall;
Barva organismu k≤dovanß v RGB schΘmatu.
procedure Die; stdcall;
Organismus zem°e. Pokud je v nastavenφ zvolena volba Spot°ebovanou energii op∞t distribuovat do prost°edφ, pak se do prost°edφ vrßtφ mno₧stvφ potravy odpovφdajφcφ souΦtu hmotnosti, energie a obsahu trßvicφ vakuoly umφrajφcφho organismu (viz Algoritmus vracenφ potravy do prost°edφ).
Po spuÜt∞nφ p°φkazu
Die
se u₧ procedu°e nevrßtφ kontrola nad b∞hem programu. P°φkazy, co nßsledujφ za nφm, se tedy neprovedou.Organismus tΘ₧ zem°e, pokud po skonΦenφ b∞hu kontrolnφ procedury je spln∞na alespo≥ jedna z nßsledujφcφch podmφnek:
- V∞k organismu je v∞tÜφ nebo roven maximßlnφmu v∞ku organismu (
Age
>=MaxAge
).- Organismus nemß energii (
Energy
= 0).- Organismus mß nulovou t∞lesnou hmotnost (
Mass
= 0).
function Digest(Value: Byte): Byte; stdcall;
Strßvφ
Value
potravy ze svΘ trßvicφ vakuoly a p°em∞nφ ji na energii. Mno₧stvφ strßvenΘ potravy se snφ₧φ v p°φpad∞, ₧e jφ nenφ ve vakuole dostatek nebo kdy₧ by energie organismu p°esßhla maximßlnφ mez (255 jednotek).Funkce vrßtφ skuteΦnΘ mno₧stvφ strßvenΘ potravy.
procedure DivCell; stdcall;
Rozd∞lφ bu≥ku na dv∞. Bun∞ΦnΘ d∞lenφ je jedinß mo₧nß forma rozmno₧ovßnφ organism∙ v The life!. Potomek se objevφ na stejnΘm polφΦku jako rodiΦ a bude mφt stejnou barvu. Oba organismy majφ poloviΦnφ hmotnost p∙vodnφho organismu (
Mass
), poloviΦnφ mno₧stvφ potravy v trßvicφ vakuole (FoodIn
) a poloviΦnφ energii (Energy
). Generace potomka (GenCount
) bude o jednotku vyÜÜφ ne₧ generace rodiΦe. Potomek bude mφt alokovßn stejn² poΦet u₧ivatelsk²ch registr∙ jako rodiΦ a vÜechny tyto u₧ivatelskΘ registry budou mφt hodnotu 0.Program po rozmno₧enφ zaruΦuje toto:
OrgAt(0, 0)
=Species
SetForeignUR
volanß z kontrolnφ procedury rodiΦe bude nastavovat u₧ivatelskΘ registry prßv∞ zplozenΘmu potomkoviTyto zßruky konΦφ ve chvφli zplozenφ novΘho potomka (v tom p°φpad∞ se p°esouvajφ na n∞j) nebo ukonΦenφm aktußlnφho kroku simulace. Zßruky takΘ nejsou symetrickΘ, tj. neplatφ pro volßnφ funkcφ z potomka. Nenφ tΘ₧ zaruΦeno, zda bude kontrolnφ procedura potomka volßna jeÜt∞ v tΘm₧e kroku simulace nebo a₧ v kroku nßsledujφcφm.
AllocedURCount
,AllocUR
,Energy
,FoodIn
,GenCount
,Mass
,OrgAt
,SetForeignUR
,UR
function Eat(Value: Byte): Byte; stdcall;
Snφ
Value
potravy z polφΦka, na kterΘm se organismus prßv∞ nachßzφ. Mno₧stvφ sn∞denΘ potravy snφ₧φ, je-li jφ v polφΦku pod organismem nedostatek nebo pro ni naopak organismus nemß prostor ve svΘ trßvicφ vakuole (kterß pobere maximßln∞ 255 jednotek potravy).Funkce vrßtφ skuteΦnΘ mno₧stvφ sn∞denΘ potravy.
function Energy: Byte; stdcall;
Mno₧stvφ energie organismu. Energii je mo₧no vyu₧φt k pohybu nebo k vyluΦovßnφ chemikßliφ. Pokud organismus po ukonΦenφ b∞hu kontrolnφ procedury bude mφt
Energy
= 0, zahyne.
function Exclude(Radius: Integer; Value: Byte): Integer; stdcall;
VylouΦφ v kruhu s polom∞rem
Radius
chemikßliiValue
. Na vylouΦenφ se spot°ebuje tolik energie, kolik polφΦek je obsah kruhu. Pokud mß organismus mßlo energie, polom∞r se snφ₧φ na tak malou hodnotu, aby ji₧ energie organismu na vylouΦenφ chemikßlie staΦila.Pokud je v nastavenφ zvolena volba Spot°ebovanou energii op∞t distribuovat do prost°edφ, pak se energie spot°ebovanß na vylouΦenφ chemikßliφ vrßtφ do prost°edφ ve form∞ potravy (viz Algoritmus vracenφ potravy do prost°edφ).
Funkce vrßtφ skuteΦn² polom∞r kruhu, kde byla chemikßlie vylouΦena.
function FoodAt(AX, AY: Integer): Byte; stdcall;
Vracφ mno₧stvφ potravy na polφΦku se sou°adnicemi
AX
,AY
. Tyto sou°adnice jsou chßpßny relativn∞ v∙Φi organismu. Pokud je nap°. organismus na sou°adnicφch [150, 80] a organismus zavolß funkciFoodAt
s parametryAX
= -1 aAY
= 1, je vrßcena hodnota potravy na polφΦku se sou°adnicemi [149,81]. Ob∞ sou°adnice musφ mφt hodnotu -1, 0 nebo 1. Pokud majφ jinou hodnotu, funkce vracφ 0. Pokud le₧φ zjiÜ¥ovanΘ polφΦko mimo okraje prost°edφ, funkce vracφ 0. Organismus m∙₧e dφky tΘto funkci zφskat p°ehled o potrav∞ na polφΦku pod sebou a osmi polφΦcφch kolem sebe.V dalÜφch verzφch se m∙₧e dosah funkce
FoodAt
zv∞tÜit nebo m∙₧e b²t voliteln² u₧ivatelem.
function FoodIn: Byte; stdcall;
Mno₧stvφ potravy v trßvicφ vakuole organismu. Tato potrava se dß dßle vy₧φt k prom∞n∞ na energii nebo t∞lesnou hmotnost.
function ForeignAllocedURCount: Integer; stdcall;
Vrßtφ poΦet prßv∞ alokovan²ch u₧ivatelsk²ch registr∙ jinΘho organismu, kter² se nachßzφ pod organismem (tzn. mß stejnΘ sou°adnice). Pokud pod organismem ₧ßdn² jin² organismus nele₧φ, ned∞lß nic. Pokud se jich tam naopak nachßzφ vφc, vrßtφ poΦet registr∙ toho nejstarÜφho z nich (tzn. s nejv∞tÜφm
Age
).Pokud se mezi volßnφmi organismus nepohne nebo nerozmno₧φ, je zaruΦeno, ₧e funkce
Attack
,ForeignAllocedURCount
,ForeignUR
,OrgAt
aSetForeignUR
se budou t²kat tΘho₧ organismu.Po rozmno₧enφ organismu je zaruΦeno, ₧e se bude naΦφtat poΦet registr∙ potomka.
Pokud byl poΦet u₧ivatelsk²ch registr∙ v po°ßdku p°eΦten, funkce ho vrßtφ. Pokud se pod organismem ₧ßdn² jin² organismus nenachßzel, funkce vrßtφ hodnotu -1.
AllocedURCount
,AllocUR
,ForeignUR
,MaxURCount
,SetForeignUR
,SetUR
,UR
function ForeignUR(Index: Byte): Integer; stdcall;
Umo₧≥uje p°φstup k poli
UR
("u₧ivatelskΘ registry") jinΘho organismu, kter² se nachßzφ pod organismem (tzn. mß stejnΘ sou°adnice). SimulaΦnφ program samotn² toto pole nechßvß nedotΦenΘ. Pokud pod organismem ₧ßdn² jin² organismus nele₧φ, ned∞lß nic. Pokud se jich tam naopak nachßzφ vφc, p°istupuje kUR
toho nejstarÜφho z nich (tzn. s nejv∞tÜφmAge
).Pokud se mezi volßnφmi organismus nepohne nebo nerozmno₧φ, je zaruΦeno, ₧e funkce
Attack
,ForeignAllocedURCount
,ForeignUR
,OrgAt
aSetForeignUR
se budou t²kat tΘho₧ organismu.Po rozmno₧enφ organismu je zaruΦeno, ₧e se budou naΦφtat registry potomka.
Pokud byl u₧ivatelsk² registr v po°ßdku p°eΦten, funkce vrßtφ jeho hodnotu. Pokud se pod organismem ₧ßdn² jin² organismus nenachßzel nebo
Index
neoznaΦoval alokovan² u₧ivatelsk² registr, funkce vrßtφ hodnotuInvalidUR
.
AllocedURCount
,AllocUR
,ForeignAllocedURCount
,MaxURCount
,SetForeignUR
,SetUR
,UR
function GenCount: Integer; stdcall;
Generace organismu. Organismus p°idan² do prost°edφ bude mφt
GenCount
= 0, jeho potomciGenCount
= 1, jejich potomciGenCount
= 2 atd.
procedura GetOptions(var Options: TOptions); stdcall;
Procedura naΦte do struktury
Options
nastavenφ simulace The Life!. P°esn² v²znam jednotliv²ch polo₧ek struktury najdete u jejφho popisu.
function ChemAt(AX, AY: Integer): Byte; stdcall;
Vracφ druh chemikßlie na polφΦku se sou°adnicemi
AX
,AY
. Tyto sou°adnice jsou chßpßny relativn∞ v∙Φi organismu. Pokud je nap°. organismus na sou°adnicφch [150, 80] a organismus zavolß funkciChemAt
s parametryAX
= -1 aAY
= 1, je vrßcen druh chemikßlie na polφΦku se sou°adnicemi [149,81]. Ob∞ sou°adnice musφ mφt hodnotu -1, 0 nebo 1. Pokud majφ jinou hodnotu, funkce vracφ 0. Pokud le₧φ zjiÜ¥ovanΘ polφΦko mimo okraje prost°edφ, funkce vracφ 0. Organismus m∙₧e dφky tΘto funkci zφskat p°ehled o chemikßliφch na polφΦku pod sebou a osmi polφΦcφch kolem sebe.
function Mass: Byte; stdcall;
Hmotnost organismu. Pokud organismus po ukonΦenφ b∞hu kontrolnφ procedury bude mφt
Mass
= 0, zahyne.
function MaxAge: Integer; stdcall;
Maximßlnφ v∞k organismu, kterΘho m∙₧e nab²t. Po jeho nabytφ zahyne. V aktußlnφ verzi je definovßn
MaxAge
=MaxInt
, tak₧e smrt organismu kv∙li v∞ku je velmi nepravd∞podobnß. V p°φÜtφch verzφch m∙₧e ale b²t hodnota zm∞n∞na nebo nastavovßna voliteln∞ u₧ivatelem.
function MaxMoveDist: Integer; stdcall;
Maximßlnφ dΘlka, o jakou se m∙₧e organismus pohnout b∞hem jednoho kroku simulace.
function MaxX: Integer; stdcall;
Maximßlnφ X-ovß sou°adnice, na kterou se organismus m∙₧e dostat, neboli Üφ°ka prost°edφ, ve kterΘm se pohybuje - 1.
function MaxY: Integer; stdcall;
Maximßlnφ Y-ovß sou°adnice, na kterou se organismus m∙₧e dostat, neboli v²Üka prost°edφ, ve kterΘm se pohybuje - 1.
function MinX: Integer; stdcall;
Minimßlnφ X-ovß sou°adnice, na kterou se organismus m∙₧e dostat. V souΦasnΘ verzi The Life! bude vrßcenß hodnota v₧dy 0.
function MinY: Integer; stdcall;
Minimßlnφ Y-ovß sou°adnice, na kterou se organismus m∙₧e dostat. V souΦasnΘ verzi The Life! bude vrßcenß hodnota v₧dy 0.
function Move(Direction: TMoveDirection; Distance: Integer): Integer; stdcall;
Pohne se ve sm∞ru
Direction
oDistance
polφΦek. P°i pohybu se spot°ebujeDistance * (Mass div 16 + 1)
energie. Vzdßlenost se zkrßtφ v p°φpad∞, ₧e
- je nedostatek energie,
- pohyb b∞hem jednoho kroku simulace by byl delÜφ ne₧ stanoven² limit (jeho hodnotu lze zjistit pomocφ
MaxMoveDist
),- organismus by se dostal za okraj prost°edφ.
Pokud je v nastavenφ zvolena volba Spot°ebovanou energii op∞t distribuovat do prost°edφ, pak se energie spot°ebovanß na pohyb vrßtφ do prost°edφ ve form∞ potravy (viz Alogritmus vracenφ potravy do prost°edφ).
Funkce vrßtφ skuteΦnou vzdßlenost, o kterou se organismus pohnul.
GetOptions
,MaxMoveDist
,MaxX
,MaxY
,MinX
,MinY
,Move
,TMoveDirection
,X
,Y
function OrgAt(AX, AY: Integer): PChar; stdcall;
Vracφ druh organismu na polφΦku se sou°adnicemi
AX
,AY
. Tyto sou°adnice jsou chßpßny relativn∞ v∙Φi organismu. Pokud je nap°. organismus na sou°adnicφch [150, 80] a organismus zavolß funkciOrgAt
s parametryAX
= -1 aAY
= 1, je vrßcen druh organismu na polφΦku se sou°adnicemi [149,81]. Ob∞ sou°adnice musφ mφt hodnotu -1, 0 nebo 1. Pokud majφ jinou hodnotu, funkce vracφ prßzdn² °et∞zec. Pokud le₧φ zjiÜ¥ovanΘ polφΦko mimo okraje prost°edφ, funkce vracφ prßzdn² °et∞zec. Pokud se na dan²ch sou°adnicφch nenachßzφ ₧ßdn² organismus, funkce vracφ prßzdn² °et∞zec. Pokud se naopak na dan²ch sou°adnicφch nachßzφ vφce organism∙, je vrßcen druh toho nejstarÜφho z nich (tzn. s nejv∞tÜφmAge
). Organismus m∙₧e dφky tΘto funkci zφskat p°ehled o organismech na polφΦku pod sebou osmi polφΦcφch kolem sebe.Vrßcen² °et∞zec nenφ t°eba odalokovßvat a je garantovßno, ₧e bude platn² a₧ do konce b∞hu kontrolnφ procedury.
Pokud se mezi volßnφmi organismus nepohne nebo nerozmno₧φ, je zaruΦeno, ₧e funkce
Attack
,ForeignAllocedURCount
,ForeignUR
,OrgAt
aSetForeignUR
se budou t²kat tΘho₧ organismu.Po rozmno₧enφ organismu je zaruΦeno, ₧e
OrgAt(0, 0)
=Species
.V dalÜφch verzφch se m∙₧e dosah funkce
OrgAt
zv∞tÜit nebo m∙₧e b²t voliteln² u₧ivatelem.
Attack
,FoodAt
,ForeignAllocedURCount
,ForeignUR
,SetForeignUR
,Species
function Secrete(Value: Byte): Byte; stdcall;
VylouΦφ
Value
potravy ze svΘ trßvicφ vakuoly ven z organismu. Mno₧stvφ p°em∞n∞nΘ potravy se snφ₧φ v p°φpad∞, ₧e jφ mß organismus ve vakuole mßlo nebo by celkovΘ mno₧stvφ potravy na polφΦku, kde se organismus nachßzφ, p°esßhlo maximßlnφ mez (255 jednotek).Funkce vrßtφ skuteΦnΘ mno₧stvφ vylouΦenΘ potravy.
procedure SetColor(R, G, B: Byte); stdcall;
Nastavφ barvu organismu. V²slednß barva vznikne smφsenφm ΦervenΘ (
R
), zelenΘ (G
) a modrΘ (B
).
function SetForeignUR(index: Byte; Value: Integer): Boolean; stdcall;
Nastavφ u₧ivatelsk² registr s indexem
Index
jinΘho organismu, kter² se nachßzφ pod organismem (tzn. mß stejnΘ sou°adnice), na hodnotuValue
. Pokud pod organismem ₧ßdn² jin² organismus nele₧φ, nenastavuje nic. Pokud se jich tam naopak nachßzφ vφc, nastavφUR
tomu nejstarÜφmu z nich (tzn. s nejv∞tÜφmAge
).Pokus se mezi volßnφmi organismus nepohne nebo nerozmno₧φ, je zaruΦeno, ₧e funkce
OrgAt
,SetForeignUR
aAttack
se budou t²kat tΘho₧ organismu.Po rozmno₧enφ organismu je zaruΦeno, ₧e se budou nastavovat registry potomka.
Pokud byl u₧ivatelsk² registr v po°ßdku nastaven, funkce vrßtφ
True
. Pokud se pod organismem ₧ßdn² jin² organismus nenachßzel neboIndex
neoznaΦoval alokovan² u₧ivatelsk² registr, funkce vrßtφFalse
.
AllocedURCount
,AllocUR
,Attack
,ForeignAllocedURCount
,ForeignUR
,MaxURCount
,OrgAt
,SetUR
,UR
procedure SetUR(Index: Byte; Value: Integer); stdcall;
Nastavφ u₧ivatelsk² registr s indexem
Index
na hodnotuValue
.Pokud byl u₧ivatelsk² registr v po°ßdku nastaven, funkce vrßtφ
True
. PokudIndex
neoznaΦoval alokovan² u₧ivatelsk² registr, funkce vrßtφFalse
.
AllocedURCount
,AllocUR
,ForeignAllocedURCount
,ForeignUR
,MaxURCount
,SetForeignUR
,UR
function Species: PChar; stdcall;
Druh organismu, tedy i nßzev jeho knihovny DLL (bez p°φpony). NerozliÜujφ se malß a velkß pφsmena.
Vrßcen² °et∞zec nenφ t°eba odalokovßvat a je garantovßno, ₧e bude platn² a₧ do konce b∞hu kontrolnφ procedury.
function Spread(Value: Byte): Byte; stdcall;
P°em∞nφ
Value
svΘ t∞lesnΘ hmoty na potravu v trßvicφ vakuole. Mno₧stvφ p°em∞n∞nΘ hmotnosti se snφ₧φ v p°φpad∞, ₧e organismus mß p°φliÜ malou hmotnost nebo by potrava ve vakuole p°esßhla maximßlnφ mez (255 jednotek).Funkce vrßtφ skuteΦnΘ mno₧stvφ p°em∞n∞nΘ t∞lesnΘ hmoty.
function UR(Index: Byte): Integer; stdcall;
Umo₧≥uje p°φstup k poli
UR
("u₧ivatelskΘ registry"), kterΘ m∙₧e ka₧d² organismus vyu₧φt podle svΘ pot°eby k uchovßvßnφ ·daj∙ mezi jednotliv²mi kroky simulace. SimulaΦnφ program samotn² toto pole nechßvß nedotΦenΘ.
P°ed pou₧itφm je nutno pot°ebnΘ registry alokovat funci
AllocUR
.Pokud byl organismus vytvo°en manußlnφm p°idßnφm do prost°edφ, nemß zpoΦßtku alokovanΘ ₧ßdnΘ u₧ivatelskΘ registry. Pokud byl vytvo°en bun∞Φn²m d∞lenφm (funkcφ
DivCell
), mß zpoΦßtku alokovßn stejn² poΦet registr∙ jako rodiΦ a jejich hodnoty jsou nastaveny na 0.Pokud
Index
neoznaΦoval alokovan² u₧ivatelsk² registr, funkce vrßtφ hodnotuInvalidURIndex
, jinak vrßtφ hodnotu ulo₧enou v p°φsluÜnΘm registru.
AllocedURCount
,AllocUR
,DivCell
,ForeignAllocedURCount
,ForeignUR
,MaxURCount
,SetForeignUR
,SetUR
function X: Integer; stdcall;
X-ovß sou°adnice organismu. Nab²vß hodnot
0
..MaxX
.
function Y: Integer; stdcall;
Y-ovß sou°adnice organismu. Nab²vß hodnot
0
..MaxY
.
Tento algoritmus je uplat≥ovßn, pokud je v nastavenφ zvolena volba Spot°ebovanou energii op∞t distribuovat do prost°edφ, a organismus provede Φinnost vedoucφ ke ztrßt∞ energie, hmotnosti Φi obsahu trßvicφ vakuoly (pohyb, ·tok, vylouΦenφ chemikßliφ Φi smrt).
Pokud se distribuuje energie organismu, d∞je se tak pomocφ tohoto algoritmu:
Pokud se distribuuje obsah trßvicφ vakuoly nebo hmotnost organismu, d∞je se tak pomocφ tohoto algoritmu: