유한 상태 기계 클래스 (FSM)

  • View
    134

  • Download
    3

Embed Size (px)

DESCRIPTION

유한 상태 기계 클래스 (FSM). 이주영 , 전현수. 목차. 유한상태기계란 ? 게임의 AI 에 적용 클래스 정의 설명. 유한상태기계란 ?. Finite state machine, FSM 유한한 개수의 상태들로 구성된 하나의 간단한 기계 하나의 ‘ 입력 ’ 을 받고 그에 의거해서 현재 상태로부터 다른 어떤 상태로 ‘ 전이 ’ 하는 식으로 작동. 게임의 AI 에 적용. 보통. 플레이어의 공격. 플레이어 떠남 또는 몬스터 치료됨. 광분. 흥분. 몬스터 치료됨. 플레이어 등장. - PowerPoint PPT Presentation

Text of 유한 상태 기계 클래스 (FSM)

  • (FSM),

  • ? AI

  • ?Finite state machine, FSM

  • AI

  • FSMstate FSMclass FSMstate

    .

  • FSMstate class FSMstate { unsigned m_usNumberOfTransitions; int *mpiInputs; int *mpiOutputState; int miStateID; public: FSMstate(int iStateID, unsigned usTransitions); ~FSMstate(); int GetID() { return miStateID; } void AddTransition(int iInput, int iOutputID); void DeleteTransition(int iOutputID); int GetOutput(int iInput); };

  • FSMstate ()FSMstate::m_usNumberOfTransitions .

    FSMstate::m_piInputs . FSMstate::piOutputState .

    FSMstate::m_iStateID FSMstate ( ) .

  • FSMstate ()FSMstate::GetID() FSMstate .

    FSMstate::AddTransition() FSMstate .

    FSMstate::DeleteTransition() .

    FSMstate::GetOutput() .

  • FSMclass class FSMclass { State_Map m_map;// FSM int m_iCurrentState;// m_iStateID public: FSMclass( int iStateID );// FSM ~FSMclass();// // ID . int GetCurrentState() { return m_iCurrentState; } // . void SetCurrentState( int iStateID ) { m_iCurrentState = iStateID; } // FSMstate . FSMstate *GetState( int iStateID ); // FSMstate . void AddState ( FSMstate *pState ); // FSMstate . void DeleteState( int iStateID ); // . int StateTransition( int iInput ); };

  • FSMclass ()FSMclass::m_map FSMstate , STL . FSMclass::m_iCurrentState FSM FSMstate .

    FSMclass::GetState() FSMstate FSMstate . FSMclass::GetCurrentState() . FSMclass::SetCurrentState() FSMstate .

  • FSMclass ()FSMclass::AddState() FSM FSM . . FSMclass::DeleteState() FSM FSM . . FSMclass::StateTransition() .

  • Key / value (, key )

    key

  • Map () #include

    namespace std namespace std { template< class Key, class T, class Compare = less, class Allocator = allocator > class map; }

  • FSM - 1

  • FSM - 2

  • FSM - 3

  • FSM 0

    6

    12

    18

    24

    30

    1

    7

    13

    19

    25

    31

    2

    8

    14

    20

    26

    32

    3

    9

    15

    21

    27

    33

    4

    10

    16

    22

    28

    34

    5

    11

    17

    23

    29

    35

    Enemy0 ~ 35ID

  • FSM Message

    struct MESSAGEOBJECT{char strMessageName[256]; // char strSender[256]; // char strReceiver[256]; // float fDeliveryTime; // D3DXVECTOR3 vPos; // D3DXVECTOR3 vDir; // bool bAngry; // };

  • FSM CCube(Player)CMessageRouterCFSMclass(Enemy)CFSMstateCFrameView Player Enemy Enemy Enemy Player Enemy

  • FSM CCube+ m_pVB;+ m_pIB;+ m_pd3dDevice;+ m_matWorld;+ m_vOriginTrans;+ m_vTrans;+ m_vTargetTrans;+ m_fVelocity;+ CCube();+ ~Ccube();+ Create();+ SetLocation();+ FrameMove();+ Render();+ Release();CFSMstate+ m_usNumberOfTransitions;+ m_pnInouts;+ m_pnOutoutState;+ m_nStateID;+ CFSMstate();+ ~CFSMstate();+ GetID();+ AddTransition();+ GetOutput();

  • FSM CFSMclass+ m_pd3dDevice;+ m_StateMap;+ m_nCurrentState;+ m_Enemy;+ m_fVelocity;+ CFSMclass();+ ~CFMSclass();+ GetCurrentState();+ SetCurrentState();+ GetState();+ AddState();+ DeleteState();+ StateTransition();+ ReceiveMessage();CMessageRouter+ m_pd3dDevice+ m_nEnemyNum;+ m_nBeforeLotID;+ m_nCurrentLotID;+ CMessageRouter();+ ~CMessageRouter();+ Create();+ FrameMove();+ GetPlayerLocationID();+ Render();+ Release();

  • THE END

    : FSM .*