Dokumentace třídy AI_9

Náhodné chození III s defenzivním prohledáváním. ...

#include <AI.h>

Diagram dědičnosti pro třídu AI_9

Inheritance graph
[vysvětlivky]
Diagram tříd pro AI_9:

Collaboration graph
[vysvětlivky]

Seznam všech členů.

Veřejné metody

 AI_9 (Creature *creature)
 Zavolá konstruktor AI_6.
virtual void move ()
 Hýbne nestvůrou.
virtual Sint16 type () const
 Typ inteligence.
virtual ~AI_9 ()
 Destruktor.

Chráněné typy

enum  wanted_t { WANTED, UNWANTED }
 Typ rozlišující chtěné a nechtěné. ...
typedef field_t traceField_t
 Typ pro souřadnice políčka.
typedef struct AI_9::traceValue_t traceValue_t
 Typ pro hodnotu políčka trasovacího pole.
typedef std::map< traceField_t,
traceValue_t
traceArray_t
 Typ trasovacího pole.
typedef std::queue< traceField_tfieldsQueue_t
 Typ fronty políček.

Chráněné metody

PositionIndex findPosIndexToWalkFromRisk_ (isTypeOf &isBlocking)
 Najde index pozice, na kterou máme jít abychom se dostali z nebezpečí.
void evalTraceArray_ (traceArray_t &traceArray, isTypeOf &isBlocking, isTypeOf &isInteresting, wanted_t interestArea)
 Ohodnotí trasovací pole (start rekurze).
bool targetFound () const
 Cíl nalezen.
PositionIndex findPosIndexUsingBacktracking_ (traceArray_t &traceArray)
 Najde pomocí backtrackingu index výsledné pozice.

Privátní metody

void recursiveEvalTraceArray_ (traceArray_t &traceArray, fieldsQueue_t &fieldsQueue, isTypeOf &isBlocking, isTypeOf &isInteresting, wanted_t interestArea)
 Ohodnotí trasovací pole (krok rekurze).
bool interestingFound_ (const traceField_t &field, isTypeOf &isInteresting, wanted_t interestingArea)
 Bylo-li nalezeno ve správném smyslu zajímavé políčko.
void evalAndQueueNextFields_ (traceArray_t &traceArray, fieldsQueue_t &fieldsQueue, isTypeOf &isBlocking)
 Ohodnotí a vloží do fronty sousední políčka.
void moveFieldCoordinate_ (traceField_t &field, DIRECTION dir)
 Posune souřadnice políčka.

Privátní atributy

bool targetFound_
 Cíl nalezen.
traceField_t targetField_
 Souřadnice cíle v mapě.

Třídy

struct  traceValue_t
 Typ pro hodnotu políčka trasovacího pole. ...


Detailní popis

Náhodné chození III s defenzivním prohledáváním.

Stejně jako AI_6, pokud je ale v nebezpečí, použije prohledávání mapy do šířky a najde nejbližší bezpečné políčko.


Dokumentace k členským typům

typedef field_t AI_9::traceField_t [protected]

Typ pro souřadnice políčka.

typedef struct AI_9::traceValue_t AI_9::traceValue_t [protected]

Typ pro hodnotu políčka trasovacího pole.

typedef std::map<traceField_t, traceValue_t > AI_9::traceArray_t [protected]

Typ trasovacího pole.

Je otázka jestli trasovací pole opravdu implementovat jako pole. Vzhledem k tomu, že málokdy se využije vetší kus celé mapy a vzhledem k tomu, že mapa může být i velká se uchyluji k dynamičtější struktuře std::map, kde klíč budou souřadnice políčka.

typedef std::queue< traceField_t > AI_9::fieldsQueue_t [protected]

Typ fronty políček.


Dokumentace k členským výčtům

enum AI_9::wanted_t [protected]

Typ rozlišující chtěné a nechtěné.

Hodnoty výčtu:
WANTED 
UNWANTED 


Dokumentace konstruktoru a destruktoru

AI_9::AI_9 ( Creature creature  )  [explicit]

Zavolá konstruktor AI_6.

virtual AI_9::~AI_9 (  )  [inline, virtual]

Destruktor.


Dokumentace k metodám

void AI_9::move (  )  [virtual]

Hýbne nestvůrou.

Pokud je v nebezpečí, zachová se chytře a vyhledá bezpečné políčko. Jinak se zachová standardně podle findPosIndex().

Reimplementuje stejnojmenný prvek z AI_6.

Tato funkce volá...

virtual Sint16 AI_9::type (  )  const [inline, virtual]

Typ inteligence.

Reimplementuje stejnojmenný prvek z AI_6.

Reimplementováno v AI_10.

AI::PositionIndex AI_9::findPosIndexToWalkFromRisk_ ( isTypeOf isBlocking  )  [protected]

Najde index pozice, na kterou máme jít abychom se dostali z nebezpečí.

Předpokládá, že se nacházíme v nebezpečí a snaží se najít bezpečné políčko. Výsledkem je pozice, která nás přiblíží nejbližšímu bezpečnému políčku.

Parametry:
isBlocking predikát odhalující blokující prvek na políčku
Návratová hodnota:
Vrací index pozice, na kterou bychom měli jít.

Tato funkce volá...

Tuto funkci volají...

void AI_9::evalTraceArray_ ( traceArray_t traceArray,
isTypeOf isBlocking,
isTypeOf isInteresting,
wanted_t  interestArea 
) [protected]

Ohodnotí trasovací pole (start rekurze).

Nastartuje rekurzivní ohodnocení trasy. Inicializuje frontu políček, začínáme u aktuální pozice.

Parametry:
traceArray inicializované trasovací pole
isBlocking predikát odhalující blokující objekty
isInteresting predikát odhalující objekty, které jsou zajímavé (svou přítomností nebo naopak nepřítomností)
interestArea upřesňuje, jak jsou zajímavé objekty zajímavé

Tato funkce volá...

Tuto funkci volají...

bool AI_9::targetFound (  )  const [inline, protected]

Cíl nalezen.

Tuto funkci volají...

AI::PositionIndex AI_9::findPosIndexUsingBacktracking_ ( traceArray_t traceArray  )  [protected]

Najde pomocí backtrackingu index výsledné pozice.

Podle výsledku prohledávání do šířky provede backtracking, vybere výslednou pozici, která nejlépe využije směr. Využívá member položku targetField_, kontroluje její správnost pomocí targetFound().

Parametry:
traceArray ohodnocené trasovací pole

Tato funkce volá...

Tuto funkci volají...

void AI_9::recursiveEvalTraceArray_ ( traceArray_t traceArray,
fieldsQueue_t fieldsQueue,
isTypeOf isBlocking,
isTypeOf isInteresting,
wanted_t  interestArea 
) [private]

Ohodnotí trasovací pole (krok rekurze).

Rekurzivní ohodnocení trasy řeší aktuálně jedno políčko ve frontě. Prohledáváním do šířky se snaží najít políčko, které nás zajímá. V jednom kroku vyřeší políčko, které je první ve frontě, odebere ho a přidá do ní nejvýše čtyři sousední políčka (pokud bychom na ně mohli jít).

Parametry:
traceArray inicializované trasovací pole
fieldsQueue fronta políček k prohledávání
isBlocking predikát odhalující blokující objekty
isInteresting predikát odhalující objekty, které jsou zajímavé (svou přítomností nebo naopak nepřítomností)
interestArea upřesňuje, jak jsou zajímavé objekty zajímavé

Tato funkce volá...

Tuto funkci volají...

bool AI_9::interestingFound_ ( const traceField_t field,
isTypeOf isInteresting,
wanted_t  interestArea 
) [private]

Bylo-li nalezeno ve správném smyslu zajímavé políčko.

Zjistí, jestli je zadané políčko v mapě zajímavé či nikoli.

Parametry:
field políčko v mapě
isInteresting predikát odhalující objekty, které jsou zajímavé (svou přítomností nebo naopak nepřítomností)
interestArea upřesňuje, jak jsou zajímavé objekty zajímavé
Návratová hodnota:
TRUE pokud je zadané políčko zajímavé, jinak false.
Výjimky:
string Chybová hláška, pokud nejsou ošetřeny všechny oblasti zajímavosti.

Tuto funkci volají...

void AI_9::evalAndQueueNextFields_ ( traceArray_t traceArray,
fieldsQueue_t fieldsQueue,
isTypeOf isBlocking 
) [private]

Ohodnotí a vloží do fronty sousední políčka.

Sousední políčka jsou políčka vlevo, vpravo, nad a pod políčkem, které je první ve frontě (aktuální políčko). Tato políčka, pokud již nebyla hodnocena označí. Nastavuje, že na něj nemůžeme vstoupit nebo jim nastaví hloubku prohledávání, v jaké jsme schopni na ně dojít. Navíc políčka, na která můžeme vstoupit, vloží do fronty pro pozdější zpracování. Do fronty nevkládá taková políčka, která by měla hloubku větší než povolenou v AI_9_MAX_TRACE_DEPTH.

Parametry:
traceArray trasovací pole pro ohodnocení
fieldsQueue fronta políček
isBlocking predikát určující políčka, na která nemůžeme vstoupit

Tato funkce volá...

Tuto funkci volají...

void AI_9::moveFieldCoordinate_ ( traceField_t field,
DIRECTION  dir 
) [private]

Posune souřadnice políčka.

Posune políčko na sousední podle zadaného směru.

Parametry:
field políčko, které chceme posunout
dir směr, podle kterého budeme posunovat
Výjimky:
string Chybová hláška, pokud nejsou ošetřeny všechny směry.

Tuto funkci volají...


Dokumentace k datovým členům

bool AI_9::targetFound_ [private]

Cíl nalezen.

Souřadnice cíle v mapě.


Dokumentace pro tuto třídu byla generována z následujících souborů:

Generováno Mon May 24 21:57:12 2010 pro projekt Bombic 2 programem  doxygen 1.5.6