• 游戏AI简单实现


    现在游戏中,大多都使用有限状态机。也是设计模式之一。就是通过一个状态基类,根据基类指针执行不同状态。
    下面给出简单的代码,大体上就这样。
    Code:
    1. class State   
    2. {   
    3.     public:   
    4.     virtual void Execute(Troll* troll);   
    5. };   
    6. class Troll// 巨魔类   
    7. {   
    8.  State* m_pCurrentState;   
    9.  public :   
    10.  void Update()   
    11.  {   
    12.       m_pCurrentState->Execute(this);   
    13.  }   
    14.  void ChangeState(const State* pNewState)   
    15.  {   
    16.       delete m_pCurrentState;   
    17.       m_pCurrentState = pNewState;   
    18.  }   
    19. };   
    20.     
    21. class State_RunAway:public State//逃跑(当前状态的逻辑为逃跑)   
    22. {   
    23.  public :   
    24.  void Execute(Troll* troll)   
    25.  {   
    26.       if(troll->isSafe())   
    27.       {   
    28.           troll->ChangeState(new State_Sleep);   
    29.       }   
    30.       else  
    31.       {   
    32.           troll->MoveAwayFromEnemy();   
    33.       }   
    34.  }   
    35. };   
    36.     
    37. class State_Sleep: public State//睡觉(当前状态的逻辑为睡觉)   
    38. {   
    39.     public :   
    40.     void Execute(Troll* troll)   
    41.     {   
    42.        if(troll->isThreatened())   
    43.        {   
    44.            troll->ChangeState(new State_RunAway);   
    45.        }   
    46.        else  
    47.        {   
    48.            troll->Snore();   
    49.        }   
    50.     }   
    51. }; 
    心得:现在感觉设计真的很重要。用好C++和系统方面,其它都是概念性的东西了。
  • 相关阅读:
    windows下设置sublime
    sublime编辑器快捷键
    Navicat Premium 12.1.8.0安装与激活
    Win查找弹窗广告来源
    canvas-绘制时钟
    H5标签-canvas实现颜色拾取功能
    第一次Sprint团队贡献分
    Sprint第一个冲刺(第十一天)
    Sprint第一个冲刺(第十天)
    Sprint第一个冲刺(第九天)
  • 原文地址:https://www.cnblogs.com/kupig/p/2226196.html
Copyright © 2020-2023  润新知