ReferenΦnφ p°φruΦka k unit∞ OrgInterface

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.

Obsah

Konstanty

MaxURCount

Deklarace

const MaxURCount = 256;

Popis

Maximßlnφ poΦet u₧ivatelsk²ch registr∙, kter² m∙₧ete naalokovat funkcφ AllocUR.

Viz takΘ

AllocedURCount, AllocUR, ForeignAllocedURCount, ForeignUR, SetForeignUR, SetUR, UR

Typy

TMoveDirection

Deklarace

type TMoveDirection = (N, W, S, E);

Popis

Datov² typ udßvajφcφ sm∞r pohybu (N = nahoru, W = vlevo, S = dol∙, E = vpravo).

Viz takΘ

Move

TOptions

Deklarace

type
  TOptions = record
    FuzzyAttack: Boolean;
    EnergyPerStep: Integer;
    DistributeEnergy: Boolean;
    ChemGoAway: Boolean;
  end;

Popis

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 je False, o vφt∞zi se rozhoduje pomocφ slo₧it∞jÜφho algoritmu, kter² je popsßn u funkce Attack.
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 je False, 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φ).

Viz takΘ

Attack, ChemAt, Die, Energy, Exclude, GetOptinos, Move

Metody rozhranφ IVLFOrganism

Age

Deklarace

function Age: Integer; stdcall;

Popis

V∞k organismu, neboli poΦet krok∙ simulace od vzniku organismu.

Viz takΘ

GenCount, MaxAge

AllocedURCount

Deklarace

function AllocedURCount: Integer; stdcall;

Popis

PoΦet prßv∞ alokovan²ch u₧ivatelsk²ch registr∙.

Viz takΘ

AllocUR, ForeignAllocedURCount, ForeignUR, MaxURCount, SetForeignUR, SetUR, UR

AllocUR

Deklarace

function AllocUR(Count: Integer): Integer; stdcall;

Popis

Alokuje Count u₧ivatelsk²ch registr∙. Jejich indexy jsou v pak rozsahu 0..Count - 1. Pokud je Count < 0 nebo Count > MaxURCount, pak funkce nic nealokuje a ukonΦφ se.

P°i alokovßnφ platφ tato pravidla:

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∙.

Viz takΘ

AllocedURCount, DivCell, ForeignAllocedURCount, ForeignUR, MaxURCount, SetForeignUR, SetUR, UR

Attack

Deklarace

function Attack: Boolean; stdcall;

Popis

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:

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 a SetForeignUR 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φ po Attack se tedy neprovedou). Pokud se pod organismem ₧ßdn² jin² organismus nenachßzel, funkce vrßtφ False.

Viz takΘ

Attack, ForeignAllocedURCount, ForeignUR, OrgAt, SetForeignUR, GetOptions

Build

Deklarace

function Build(Value: Byte): Byte; stdcall;

Popis

Strßvφ Value potravy ze svΘ trßvicφ vakuoly a p°em∞nφ ji na hmotu, Φφm₧ o Value 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.

Viz takΘ

FoodAt, Mass, Spread

Color

Deklarace

function Color: TColor; stdcall;

Popis

Barva organismu k≤dovanß v RGB schΘmatu.

Viz takΘ

SetColor

Die

Deklarace

procedure Die; stdcall;

Popis

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:

  1. V∞k organismu je v∞tÜφ nebo roven maximßlnφmu v∞ku organismu (Age >= MaxAge).
  2. Organismus nemß energii (Energy = 0).
  3. Organismus mß nulovou t∞lesnou hmotnost (Mass = 0).

Viz takΘ

Age, Energy, GetOptions, FoodIn, Mass, MaxAge

Digest

Deklarace

function Digest(Value: Byte): Byte; stdcall;

Popis

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.

Viz takΘ

Energy, FoodAt

DivCell

Deklarace

procedure DivCell; stdcall;

Popis

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:

Tyto 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.

Viz takΘ

AllocedURCount, AllocUR, Energy, FoodIn, GenCount, Mass, OrgAt, SetForeignUR, UR

Eat

Deklarace

function Eat(Value: Byte): Byte; stdcall;

Popis

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.

Viz takΘ

FoodAt, FoodIn, Secrete

Energy

Deklarace

function Energy: Byte; stdcall;

Popis

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.

Viz takΘ

Digest, Exclude, GetOptions, Move

Exclude

Deklarace

function Exclude(Radius: Integer; Value: Byte): Integer; stdcall;

Popis

VylouΦφ v kruhu s polom∞rem Radius chemikßlii Value. 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.

Viz takΘ

GetOptions, ChemAt

FoodAt

Deklarace

function FoodAt(AX, AY: Integer): Byte; stdcall;

Popis

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ß funkci FoodAt s parametry AX = -1 a AY = 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.

Viz takΘ

Eat, OrgAt, Secrete

FoodIn

Deklarace

function FoodIn: Byte; stdcall;

Popis

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.

Viz takΘ

Build, Digest, Eat, Energy, Mass, Secrete

ForeignAllocedURCount

Deklarace

function ForeignAllocedURCount: Integer; stdcall;

Popis

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 a SetForeignUR 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.

Viz takΘ

AllocedURCount, AllocUR, ForeignUR, MaxURCount, SetForeignUR, SetUR, UR

ForeignUR

Deklarace

function ForeignUR(Index: Byte): Integer; stdcall;

Popis

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 k UR 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 a SetForeignUR 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φ hodnotu InvalidUR.

Viz takΘ

AllocedURCount, AllocUR, ForeignAllocedURCount, MaxURCount, SetForeignUR, SetUR, UR

GenCount

Deklarace

function GenCount: Integer; stdcall;

Popis

Generace organismu. Organismus p°idan² do prost°edφ bude mφt GenCount = 0, jeho potomci GenCount = 1, jejich potomci GenCount = 2 atd.

Viz takΘ

Age

GetOptions

Deklarace

procedura GetOptions(var Options: TOptions); stdcall;

Popis

Procedura naΦte do struktury Options nastavenφ simulace The Life!. P°esn² v²znam jednotliv²ch polo₧ek struktury najdete u jejφho popisu.

Viz takΘ

TOptions

ChemAt

Deklarace

function ChemAt(AX, AY: Integer): Byte; stdcall;

Popis

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ß funkci ChemAt s parametry AX = -1 a AY = 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.

Viz takΘ

Exclude, GetOptions

Mass

Deklarace

function Mass: Byte; stdcall;

Popis

Hmotnost organismu. Pokud organismus po ukonΦenφ b∞hu kontrolnφ procedury bude mφt Mass = 0, zahyne.

Viz takΘ

Build, Spread

MaxAge

Deklarace

function MaxAge: Integer; stdcall;

Popis

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.

Viz takΘ

Age

MaxMoveDist

Deklarace

function MaxMoveDist: Integer; stdcall;

Popis

Maximßlnφ dΘlka, o jakou se m∙₧e organismus pohnout b∞hem jednoho kroku simulace.

Viz takΘ

Move

MaxX

Deklarace

function MaxX: Integer; stdcall;

Popis

Maximßlnφ X-ovß sou°adnice, na kterou se organismus m∙₧e dostat, neboli Üφ°ka prost°edφ, ve kterΘm se pohybuje - 1.

Viz takΘ

MaxY, MinX, MinY, Move, X, Y

MaxY

Deklarace

function MaxY: Integer; stdcall;

Popis

Maximßlnφ Y-ovß sou°adnice, na kterou se organismus m∙₧e dostat, neboli v²Üka prost°edφ, ve kterΘm se pohybuje - 1.

Viz takΘ

MaxX, MinX, MinY, Move, X, Y

MinX

Deklarace

function MinX: Integer; stdcall;

Popis

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.

Viz takΘ

MaxX, MaxY, MinY, Move, X, Y

MinY

Deklarace

function MinY: Integer; stdcall;

Popis

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.

Viz takΘ

MaxX, MaxY, MinX, Move, X, Y

Move

Deklarace

function Move(Direction: TMoveDirection; Distance: Integer): Integer; stdcall;

Popis

Pohne se ve sm∞ru Direction o Distance polφΦek. P°i pohybu se spot°ebuje Distance * (Mass div 16 + 1) energie. Vzdßlenost se zkrßtφ v p°φpad∞, ₧e

  1. je nedostatek energie,
  2. pohyb b∞hem jednoho kroku simulace by byl delÜφ ne₧ stanoven² limit (jeho hodnotu lze zjistit pomocφ MaxMoveDist),
  3. 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.

Viz takΘ

GetOptions, MaxMoveDist, MaxX, MaxY, MinX, MinY, Move, TMoveDirection, X, Y

OrgAt

Deklarace

function OrgAt(AX, AY: Integer): PChar; stdcall;

Popis

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ß funkci OrgAt s parametry AX = -1 a AY = 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Üφm Age). 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 a SetForeignUR 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.

Viz takΘ

Attack, FoodAt, ForeignAllocedURCount, ForeignUR, SetForeignUR, Species

Secrete

Deklarace

function Secrete(Value: Byte): Byte; stdcall;

Popis

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.

Viz takΘ

Eat, FoodAt, FoodIn

SetColor

Deklarace

procedure SetColor(R, G, B: Byte); stdcall;

Popis

Nastavφ barvu organismu. V²slednß barva vznikne smφsenφm ΦervenΘ (R), zelenΘ (G) a modrΘ (B).

Viz takΘ

Color

SetForeignUR

Deklarace

function SetForeignUR(index: Byte; Value: Integer): Boolean; stdcall;

Popis

Nastavφ u₧ivatelsk² registr s indexem Index jinΘho organismu, kter² se nachßzφ pod organismem (tzn. mß stejnΘ sou°adnice), na hodnotu Value. 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Üφm Age).

Pokus se mezi volßnφmi organismus nepohne nebo nerozmno₧φ, je zaruΦeno, ₧e funkce OrgAt, SetForeignUR a Attack 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 nebo Index neoznaΦoval alokovan² u₧ivatelsk² registr, funkce vrßtφ False.

Viz takΘ

AllocedURCount, AllocUR, Attack, ForeignAllocedURCount, ForeignUR, MaxURCount, OrgAt, SetUR, UR

SetUR

Deklarace

procedure SetUR(Index: Byte; Value: Integer); stdcall;

Popis

Nastavφ u₧ivatelsk² registr s indexem Index na hodnotu Value.

Pokud byl u₧ivatelsk² registr v po°ßdku nastaven, funkce vrßtφ True. Pokud Index neoznaΦoval alokovan² u₧ivatelsk² registr, funkce vrßtφ False.

Viz takΘ

AllocedURCount, AllocUR, ForeignAllocedURCount, ForeignUR, MaxURCount, SetForeignUR, UR

Species

Deklarace

function Species: PChar; stdcall;

Popis

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.

Viz takΘ

OrgAt

Spread

Deklarace

function Spread(Value: Byte): Byte; stdcall;

Popis

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.

Viz takΘ

Build, FoodIn, Mass

UR

Deklarace

function UR(Index: Byte): Integer; stdcall;

Popis

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φ hodnotu InvalidURIndex, jinak vrßtφ hodnotu ulo₧enou v p°φsluÜnΘm registru.

Viz takΘ

AllocedURCount, AllocUR, DivCell, ForeignAllocedURCount, ForeignUR, MaxURCount, SetForeignUR, SetUR

X

Deklarace

function X: Integer; stdcall;

Popis

X-ovß sou°adnice organismu. Nab²vß hodnot 0..MaxX.

Viz takΘ

MaxX, MaxY, MinX, MinY, Move, Y

Y

Deklarace

function Y: Integer; stdcall;

Popis

Y-ovß sou°adnice organismu. Nab²vß hodnot 0..MaxY.

Viz takΘ

MaxX, MaxY, MinX, MinY, Move, X

Dodatky

Algoritmus distribuce potravy

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:

  1. Vybere se nßhodnΘ polφΦko v prost°edφ.
  2. Pokud je na vybranΘm polφΦku 255 jednotek potravy, vybere se jinΘ. Pokud ne na 1000 pokus∙ nepoda°φ vybrat polφΦko s mΘn∞ ne₧ 255 jednotkami potravy, p°ejde se ke kroku 4.
  3. Hodnota potravy na vybranΘm polφΦku se o jedniΦku zv²Üφ.
  4. Energie organismu se o jedniΦku snφ₧φ.
  5. Pokud mß organismus jeÜt∞ n∞jakou energii, p°ejde se na krok 1.

Pokud se distribuuje obsah trßvicφ vakuoly nebo hmotnost organismu, d∞je se tak pomocφ tohoto algoritmu:

  1. Vezme se mno₧stvφ potravy na polφΦku pod organismem a odeΦte se od 255. Pokud je v²sledek v∞tÜφ, ne₧ hmotnost (resp. obsah trßvicφ vakuoly) organismu, zmenÜφ se tak, aby se jφ rovnal.
  2. Hodnota potravy na polφΦku pod organismem se zv²Üφ o hodnotu vypoΦtenou v kroku 1.
  3. Hmotnost (resp. obsah trßvicφ vakuoly) organismu se snφ₧φ o hodnotu vypoΦtenou v kroku 1.
  4. Pokud organismu mß nynφ nenulovou hmotnost (resp. obsah trßvicφ vakuoly), je tento zbytek distribuovßn stejn²m algoritmem, jako energie.