#include <AI.h>
Veřejné metody | |
AI (Creature *creature) | |
Uloží rodičovskou nestvůru. | |
virtual void | move ()=0 |
Hýbne nestvůrou. | |
virtual Sint16 | type () const =0 |
Typ inteligence. | |
virtual | ~AI () |
Destruktor. | |
Statické veřejné metody | |
static AI * | new_ai (Creature *creature, Sint16 intelligence) |
Vytvoří umělou inteligenci. | |
static AI * | new_ai (Creature *creature, const AI *ai) |
Okopíruje umělou inteligenci. | |
Chráněné typy | |
enum | PositionIndex { POS_STAY, POS_STRAIGHT, POS_RIGHT, POS_BACK, POS_LEFT, POS_LAST } |
Výčtový typ pro indexování positions_. ... | |
Chráněné metody | |
Uint16 | getCreatureSpeed () |
Rychlost příšery. | |
void | initPositions () |
Inicializuje seznam pozic. | |
void | updatePositions () |
Uloží cílové pozice pro každé otočení. | |
void | setPosition (position_t &position) |
Nastaví nestvůře novou pozici. | |
void | centerCoordinates (position_t &position, bool isMainX, Sint8 sign) |
Komplexně centruje pozici na políčku. | |
void | centerCoordinate (Uint16 &coordinate, Sint8 sign) |
Partikulárně centruje souřadnici dostředu políčka. | |
bool | checkField (const position_t &position, const isTypeOf &isBlocking) |
Zjistí, zda je možné vstoupit na políčko. | |
Chráněné atributy | |
Creature * | creature_ |
Nestvůra, které inteligence patří. | |
std::vector< position_t > | positions_ |
Seznam pozic pro každý krok. | |
Třídy | |
struct | position_t |
Pomocná struktura pro otočení a souřadnice při posunu. ... |
AI je abstraktní třída, která implementuje vlastnosti a metody společné pro většinu úrovní umělých inteligencí. systém úrovní umělých inteligencí není úplně plochý, každá úroveň implementuje stěžejní funkce pro rozhodnutí tahu trochu jinak.
enum AI::PositionIndex [protected] |
AI::AI | ( | Creature * | creature | ) | [explicit] |
Uloží rodičovskou nestvůru.
creature | pointer na nestvůru, které umělá inteligence patří |
virtual AI::~AI | ( | ) | [inline, virtual] |
Destruktor.
Vytvoří umělou inteligenci.
Statická fce, pouze rozhodne, který potomek AI se použije.
creature | rodičovská nestvůra | |
intelligence | výše umělé inteligence |
Okopíruje umělou inteligenci.
Statická fce, pouze vybere potomka AI stejného jako je v parametru.
creature | rodičovská nestvůra | |
ai | pointer na již vytvořenou inteligenci, ten se použije pouze na zjištění typu inteligence |
virtual void AI::move | ( | ) | [pure virtual] |
virtual Sint16 AI::type | ( | ) | const [pure virtual] |
Uint16 AI::getCreatureSpeed | ( | ) | [protected] |
Rychlost příšery.
void AI::initPositions | ( | ) | [protected] |
Inicializuje seznam pozic.
Vloží tolik pozic, aby bylo dost pro další použití.
void AI::updatePositions | ( | ) | [protected] |
Uloží cílové pozice pro každé otočení.
Nastaví cílové pozice pro všech pět možností kroku. Nehýbat se(0), krok vpřed(1), krok vpravo(2), krok zpět(3), krok vlevo(4).
void AI::setPosition | ( | position_t & | position | ) | [protected] |
Nastaví nestvůře novou pozici.
Nastaví nestvůře souřadnice a otočení. Stará se také o centrování na políčku.
position | nová pozice |
void AI::centerCoordinates | ( | position_t & | position, | |
bool | isMainX, | |||
Sint8 | sign | |||
) | [protected] |
Komplexně centruje pozici na políčku.
Podle zadaných parametrů se rozhlédne po okolních políčkách a je-li třeba, přiblíží souřadnice pozice středu políčka.
position | pozice, jejíž souřadnice chci centrovat | |
isMainX | je-li hlavním směrem osa X | |
sign | +1 nebo -1 podle orientace pohybu po hlavní ose +1 pro vzhůru a vlevo, -1 pro dolů a vpravo |
void AI::centerCoordinate | ( | Uint16 & | coordinate, | |
Sint8 | sign | |||
) | [protected] |
Partikulárně centruje souřadnici dostředu políčka.
Podle zadaného znaménka přidá k souřadnici nebo ubere od souřadnice polovinu rychlosti nestvůry. Maximálně však do poloviny políčka.
coordinate | centrovaná souřadnice | |
sign | +1 nebo -1, přidá nebo ubere |
bool AI::checkField | ( | const position_t & | position, | |
const isTypeOf & | isBlocking | |||
) | [protected] |
Zjistí, zda je možné vstoupit na políčko.
Zjistí podle zadané pozice jestli může na políčko vstoupit..
position | zjištovaná pozice nestvůry | |
isBlocking | predikát na určení blokujícího typu |
Creature* AI::creature_ [protected] |
Nestvůra, které inteligence patří.
std::vector<position_t > AI::positions_ [protected] |
Seznam pozic pro každý krok.