zoukankan      html  css  js  c++  java
  • 人工智能-有限状态机(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

  • 相关阅读:
    文件操作:根据现有类生成所需要的类
    Microsoft JScript 运行时错误: “”未定义
    未完成
    WPF模拟雷达界面效果图
    WebClient模拟网页提交表单
    201319
    Delphi中的InStrRev函数(倒找文本)
    利用IDhttp实现图片下载
    白话解释哈希表
    整理的Delphi常用字符串函数
  • 原文地址:https://www.cnblogs.com/leonbao/p/3144915.html
Copyright © 2011-2022 走看看