zoukankan      html  css  js  c++  java
  • 游戏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++和系统方面,其它都是概念性的东西了。
  • 相关阅读:
    蛙蛙推荐:JS里声明事件处理的几种方式
    蛙蛙推荐:asp错误处理
    蛙蛙推荐:偶心目中的编程高手,大家也推荐一下
    access能否用vbs来写存储过程,是否支持参数名称 【星期一 2005年7月4日】
    MySQL索引相关
    ubuntu 禁用触摸板
    ubuntuFQ(转)
    bash编程笔记
    Hive环境搭建与入门(转)
    Linux SSH远程文件/目录传输命令scp
  • 原文地址:https://www.cnblogs.com/kupig/p/2226196.html
Copyright © 2011-2022 走看看