⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chase.cpp

📁 C人工智能游戏开发的一些实例源代码 C Game development in artificial intelligence source code of some examples
💻 CPP
字号:

#include "character.h"
#include "Chase.h"
#include "gametime.h"
#include "util.h"

Chase::Chase()
{
    m_name      = "Chase"; // must match class name
    m_owner     = NULL;
}

void Chase::init   ( IEOwner * owner )
{
    m_owner = dynamic_cast<Character *> (owner);
}

bool Chase::start ()
{
    m_state = Go;

    m_owner->animStart ( CA_Run );

    m_enemy = m_owner->getEnemy();

    printf ( "%s barks at %s.\n", m_owner->getName(), m_enemy->getName() );

    m_enemy->alertChase ( m_owner );

    m_owner->setMotionSpeed ( m_owner->getRunSpeed() );

    return false;
}

bool Chase::update () 
{
    switch ( m_state )
    {

    case Go:

        // get enemies position
        int ex, ey;
        m_enemy->getPos ( ex, ey );

        // get our position
        int ox, oy;
        m_owner->getPos ( ox, oy );

        // set movement direction towards it (only x or y, not both)
        int xdir, ydir;

        if ( abs( ex - ox ) > abs (ey - oy ) )
        {
            ydir = 0;

            if ( ex > ox )
                xdir = 1;
            else
                xdir = -1;
        }
        else
        {
            xdir = 0;

            if ( ey > oy )
                ydir = 1;
            else
                ydir = -1;
        }

        m_owner->setDirection ( xdir, ydir );

        // move
        m_owner->move ();

        if ( m_owner->inNewPos() )
        {
            printf ( "%s chasing %s at %d %d\n",
                m_owner->getName(), m_enemy->getName(), ox, oy );
        }

        m_owner->burnEnergy();

        break;

    }

    return true;
}

bool Chase::finish ()
{
    return true;
}

IEOwner * Chase::getOwner ()
{
    return m_owner;
}

const char * Chase::getName()
{
    return m_name.c_str();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -