#include <AI.h>
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_t > | fieldsQueue_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. ... | |
Stejně jako AI_6, pokud je ale v nebezpečí, použije prohledávání mapy do šířky a najde nejbližší bezpečné políčko.
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.
enum AI_9::wanted_t [protected] |
| virtual AI_9::~AI_9 | ( | ) | [inline, virtual] |
Destruktor.
| 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.

| virtual Sint16 AI_9::type | ( | ) | const [inline, virtual] |
| 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.
| isBlocking | predikát odhalující blokující prvek na políčku |


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


| bool AI_9::targetFound | ( | ) | const [inline, protected] |
Cíl nalezen.

| 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().
| traceArray | ohodnocené trasovací pole |


| 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).
| 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é |


| 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.
| 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é |
| string | Chybová hláška, pokud nejsou ošetřeny všechny oblasti zajímavosti. |

| 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.
| traceArray | trasovací pole pro ohodnocení | |
| fieldsQueue | fronta políček | |
| isBlocking | predikát určující políčka, na která nemůžeme vstoupit |


| 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.
| field | políčko, které chceme posunout | |
| dir | směr, podle kterého budeme posunovat |
| string | Chybová hláška, pokud nejsou ošetřeny všechny směry. |

bool AI_9::targetFound_ [private] |
Cíl nalezen.
traceField_t AI_9::targetField_ [private] |
Souřadnice cíle v mapě.
1.5.6