• 人工智能-有限状态机(FSM)的学习


    首先声明:此文源于本人最近学习的一本书 《游戏人工智能编程案例精粹》

    FSM的定义:

    一个有限状态机是一个设备,或是一个设备模型,具有有限数量的状态,它可以在任何给定的时间根据输入进行操作,使得从一个状态变换到另一个状态,或者是促使一个输出或者一种行为的发生。一个有限状态机在任何瞬间只能处在一种状态。

    FSM的实现:

    不要用if else语句或者switch语句实现状态机,越往后越累

    类讲解:

    EntityManager:实体对象的管理类,用来注册实体、取得实体还有移除实体,主要是为了处理消息传递,因为消息发出时要指定接收者,如何取得呢?就在这里取得

    BaseGameEntity:实体的基类,HandleMessage是一个纯虚函数,任何继承自它的实体类都要实现这个消息处理的方法。Update方法用于刷新

    MinersWife:一个具体的实体

    StateMachine:专门用来管理状态的类,被MinersWife引用,借用此类可以更改实体的状态,它包含三个状态引用:当前状态,全局状态(任何时刻都必须遵守的规则,比如尿急上厕所)和之前的状态(上厕所之后要继续前面的工作)

    State:状态接口,抽象,包括状态的进入、执行和退出,还有消息的处理

    WifesGlobalState:状态类,全局状态

    VisitBathRoom:状态类,洗澡

    DoHouseWork:状态类,干家务

    CookStew:状态类,做饭

    MessageDispatcher:消息处理类,包括发送即时消息和延迟消息

    Telegram:消息报文的格式

    另外,还有一篇抨击FSM的文章有点意思

    http://blog.csdn.net/lanphaday/article/details/2070675

  • 相关阅读:
    前人风采
    【C++ Primer 第16章】1. 定义模板 (一)
    CCF CSP认证考试试题
    【C++ Primer 第11章】4. 无序容器
    【C++ Primer 第11章 练习答案】2. 关联容器操作
    【C++ Primer 第11章】2. 关联容器操作
    dxRatingControl使用
    dxRangeTrackBar使用教程
    UniConnectDialog使用
    Delphi窗体置顶及失去焦点后取得焦点
  • 原文地址:https://www.cnblogs.com/leonbao/p/3144915.html
Copyright © 2020-2023  润新知