简单有限状态机(FSM)

python 有限状态机(FSM)简单实现 阅读详情

// 简单有限状态机(FSM)
// 有限状态自动机是一个五元组:
//   状态的非空有穷集合,输入字母表,状态转移函数,初始状态,终止状态集合

//  复杂的状态机构造,可以使用 boost StateChart 库
// VC2008

 

// 一个实际使用的状态机, 它的状态可能不能用一个类似整数这样的简单数据表示,并同时具有内部状态
// 则我们需要用一组对象的来表示这些状态, 并用一个指向他们的指针来表示"当前状态"
// 通常,在较高的层次,我们仍然可以用一个整数来表示"当前状态",并用一个对应的对象来记录这个状态的细节数据
// 参考《设计模式》(GoF)的"状态模式(State)"

 

#include "stdafx.h"

// 状态
enum enState
{
 enState_Open,
 enState_Close,
};

// 输入事件
enum enEvent
{
 enEvent_Open,
 enEvent_Close,
};

// 状态转换信息
struct tagStateChange
{
 enState m_newState;
};


class FSM
{
public:
 // 初始状态
 FSM(enState s0) : m_State(s0) {};

 // 状态转移函数: 事件处理函数
 bool HandleEvent(enEvent enE)
 {
  tagStateChange cE;
  switch(enE)
  {
  case enEvent_Open:
   cE.m_newState = enState_Open;
   break;
  case enEvent_Close:
   cE.m_newState = enState_Close;
   break;
  }

  return ChangeState(cE);
 }


 // 状态转移函数: 状态转换函数
 bool ChangeState(const tagStateChange& changeInfo)
 {
  if(m_State == changeInfo.m_newState)
   return false;

  m_State = changeInfo.m_newState;
  return true;
 }

 // 终止状态
 bool IsFinal() const
 {
  return (m_State == enState_Close);
 }

private:
 enState m_State;
};


int _tmain(int argc, _TCHAR* argv[])
{
 FSM fsm(enState_Open);   // 初始状态
 fsm.HandleEvent(enEvent_Open);
 fsm.HandleEvent(enEvent_Close);
 fsm.HandleEvent(enEvent_Open);
 fsm.HandleEvent(enEvent_Open);
 fsm.HandleEvent(enEvent_Close);

 bool bClose = fsm.IsFinal();
 return 0;
}

FSM有限状态机实现简单的巡逻追击AI Points表示四个点位,敌人在这四个点之间来回巡逻。 using System.Collections; using System.Collections.Generic; using UnityEngine; using System.Linq; /// <summary> /// 状态ID /// </summary> public enum FSMStateID ... 阅读详情

相关推荐

GameFramework框架详解之 Fsm状态机

FSM(有限状态机)是一种在游戏编程中非常常用的编程技术,可以方便地管理游戏中的各种状态转换。在Gameframework中,FSM也被广泛使用,并且该框架提供了方便易用的FSM API,使得我们可以在Unity项目中快速实现FSM逻辑。有限状态机(Finite-state machine,FSM),又称有限状态自动机,简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。

TxNet 3039

C语言——简单状态机

状态机:一般指有限状态机(英语:finite-state machine,缩写:FSM)又称有限状态自动机(英语:finite-state automaton,缩写:FSA),是表示有限个状态以及在这些状态之间的转移和动作等行为的数学计算模型。状态机中有几个术语:state(状态) 、transition(转移) 、action(动作) 、transition condition(转移条件) 。如下图,就定义了一个只有opened 和closed两种状态的状态机。当系统处于opened状态,在收到输入“关闭

m0_51582169的博客 3621

基于ProXmoX VE的虚拟化家庭服务器(篇一)—ProXmoX VE 安装及基础配置

ProxmoxVE是一款套开源的虚拟化管理软件,用户可通过网页的方式来管理服务器上使用kvm以及lxc技术运行的虚拟机。同时提供了一些先进功能的支持,如集群、HA等。PVE虽然是开源,却是由一个商业公司在运营、更新以及维护。...

隔壁老瓦的专栏 6321

13简单状态机

一、状态机 1.定义 状态机简写为FSM(Finite State Machine),也称为同步有限状态机,我们一般简称为状态机分类:Moore型状态机、Mealy型状态机 同步:是指再时钟的作用下进行的 有限:是指表示状态的个数有限 Moore型状态机、Mealy型状态机 的区别: 相同点:状态的跳转都只和输入有关 不同点:在输出的时侯,若最后的输出都只和当前状态有关而与输入无关为Moore型状态机,若最后的输出与输入有关为Mealy型状态机。 2.编码方式 (1)独热码 每个状态只有一个为高电平,其余的

weixin_48564372的博客 579

STM32—时钟树(结合系统时钟函数理解)

时钟树的概念: 我们可以把MCU的运行比作人体的运行一样,人最重要的是什么?是心跳! 心脏的周期性收缩将血液泵向身体各处。心脏对于人体好比时钟对于MCU,微控制器(MCU)的运行要靠周期性的时钟脉冲来驱动,而这个脉冲的始源往往是由外部晶体振荡器提供时钟输入,最终转换为多个外部设备的周期性运作。这种时钟“能量”的传递路径犹如大树的养分由主干流向个分支,因此称为时钟树。 STM32时钟: 在STM32...

肥宅快乐博客 1万+

对Palantir的本体论的理解

本体论Ontology是Palantir的整个技术架构的核心与基石,它远不止是一个数据模型,而是一个旨在对企业决策本身进行建模的“数字世界的操作系统”。

liuyukuan的专栏 1148

简单状态机的学习

状态机,或称有限状态机FSM(Finite State Machine),表示有限个状态及在这些状态之间的转移和动作等行为的数学模型,FSM是一种逻辑单元内部的一种高效编程方法,在服务器的编程中,服务器可以根据不同状态或者消息类型进行相应的处理逻辑,使得程序逻辑更加清晰易懂,是一种重要的编程思想。状态机有3要素:状态、事件与响应状态:系统处在什么状态?事件:发生了什么事?响应:此状态下发生了这样的事,系统要如何处理?

Liu1013216383的博客 2513

一次点击跑通:用 Postman 自动获取并携带 CSRF token,测试 SAP OData 写操作

SAP OData 写操作自动化测试方案 针对 SAP Gateway OData 服务写操作中常见的 CSRF token 验证问题,本文提出了一套基于 Postman 的自动化解决方案: 问题分析:解释了 CSRF token 的验证机制及其必要性,说明手工测试效率低下的原因 解决方案: 使用 Postman 环境变量存储 token 通过脚本自动获取并传递 token 利用 Collection Runner 实现一键执行 实施步骤: 创建环境变量存储 token 第一个请求获取 token 并存入变

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 305

一个简单的状态机 (c#)

用法 class Program { static void Main(string[] args) { //状态机 //根据当前的不同的状态,做出不同的事件操作 StateMachine.Register("cat", new Cat()); StateMa...

蓝创精英团队 3762

刷机维修进阶教程-----oppo机型 一加 7pro 修复基带 更改参数 实例详细步骤解析

通过课程基本可以了解 1-----oppo机型与一加7机型更改参数的具体步骤解析 2------了解oppo机型开启diag端口的具体步骤 3-----了解一加7这些机型改参数常识 。可以借鉴参考用于其他机型 4-----了解手机基带分区与基带辅助分区的作用 5-----机型参数能读取到 但不能写这种情况如何操作

小马哥的专栏 1478

ArcMap|时空地理加权回归(GTWR)

ArcGIS的GTWR插件下载地址:https://www.researchgate.net/publication/329518786_GTWR_ADDIN_Valid_till_Dec_31_2022 更详细的操作参考: https://www.bilibili.com/video/BV1fR4y1M7xB?spm_id_from=333.999.0.0 https://blog.youkuaiyun.com/weixin_40008135/article/details/112693520 双击“GTWR_Be

个人学习笔记 1万+

[python]有限状态机(FSM)简单实现

本文发表于恋花蝶的博客http://blog.youkuaiyun.com/lanphaday,欢迎转载,但必须保留文章内容完整且包含本声明。违者必究。 [python]有限状态机(FSM)简单实现简述 有限状态机(以下用FSM指代)是一种算法思想,简单而言,有限状态机由一组状态、一个初始状态、输入和根据输入及现有状态转换为下一个状态的转换函数组成。在Gof的23种设计模式里的state模式是一种面向对象的状

csdn_sr的博客 1604

深入浅出块I/O子系统(四)请求处理过程

BIO请求处理的流程 函数scsi_request_fn()代码(摘自文件drivers/scsi/scsi_lib.c) (1)static void scsi_request_fn(struct request_queue *q) (2)int scsi_dispatch_cmd(struct scsi_cmnd *cmd) { host->hostt->queuecommand(host, cmd) } (3)struct sas_internal *i sas_queuec

sinat_37817094的博客 1348

FSM - 一个简单的有限状态机(Golang)

FSM - 一个简单的有限状态机(Golang) 基础介绍 FSM 是一个为 Golang 编写的简单有限状态机(Finite State Machine,FSM)。它允许您定义状态和状态之间的转换,并可以并行运行任意数量的转换检查。FSM 已经进行了测试和性能基准测试,以确保其稳定性和效率。 主要编程语言 Golang 新手常见问题及解决方案 问题一:如何初始化和设置状态机 问题描述:新手在...

gitblog_00466的博客 507

手把手教你学Simulink--基于新能源并网与协调控制的场景实例:双馈异步风力发电机并网运行仿真

随着“双碳”目标的推进,风力发电已成为新能源并网的核心组成部分。其中,双馈异步风力发电机(Doubly-Fed Induction Generator, DFIG)因其变频器容量小(仅处理转差功率)、可实现有功/无功独立调节、运行效率高等优势,广泛应用于现代兆瓦级风电机组。DFIG系统通过转子侧变流器(Rotor-Side Converter, RSC)和网侧变流器(Grid-Side Converter, GSC)实现对发电机转矩与电网无功的精确控制,支持最大功率点跟踪(MPPT)和。

MHD0815的博客 280

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

C语言实现简单有限状态机(FSM)

转载地址:https://www.jianshu.com/p/917c0fb8778b?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation 有限状态机(finite state machine)简称FSM,表示有限个状态及在这些状...

认知 行动 坚持 8871

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Type-C OTG扩展板设计指南:CC引脚原理与协议芯片选型全解析

Type-C接口正逐步取代Micro-USB成为移动设备的标准通信与供电接口,其中OTG功能的实现高度依赖CC引脚上的上下拉电阻完成角色识别。DFP与UFP通过检测Rp/Rd阻值确定供电方向,这也是普通数据线与OTG线内部CC处理存在本质差异的原因。硬件工程师在开发Type-C产品时,常因协议芯片选型不当导致识别失败或供电不足。本文从CC引脚的基础原理出发,对比纯电阻方案、CC逻辑芯片、带PD的集成方案以及MCU+PD控制器的适用场景,并结合电路设计细节与实测排错思路,帮助开发者快速搭建稳定可靠的OTG扩展

weixin_34279246的博客 379

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Unity FSM(有限状态机)框架的简单封装

using System.Collections; using System.Collections.Generic; using UnityEngine; public abstract class FSMBase { //进入这个状态 public abstract void OnEnter(); //正处在这个状态 public virtual void OnStay() { } //退出这个状态 public virtual void

qq_40780420的博客 1117

一个简单确有用的有限状态机(FSM) in c++

原文:http://www.frozax.com/blog/2012/10/simple-useful-finite-state-machine-fsm-c/ 我写了一个有限状态机的模板,因为我要写不同的FSM 1.状态用枚举来代替(便于调试) 2.要运行FSM,只需要setState和updateState(float delta_time)即可 3.用GetState来获取当前状态

爱去玩的专栏 7367

如何实现一个简单的FSM有限状态机

在游戏开发中,有限状态机(Finite State Machine,FSM)是一种强大的设计模式,用于描述对象在不同状态下的行为以及状态之间的转换,对于有限的状态,每个状态有自己独立的实现逻辑和过渡逻辑,每个状态可以切换至零-多个状态。通过描述对象在不同状态下的行为以及状态之间的转换,为游戏开发者提供了一种清晰而有效的方式来管理复杂的游戏逻辑。有限状态机是一种数学模型,用于描述一个系统在不同状态之间的转换。在游戏开发中,这个系统可以是任何具有多种行为的实体,比如角色、敌人、NPC等。

weixin_51186493的博客 1245

有限状态机FSM详解(1)——最简单的FSM

【基本概念】 有限状态机(finite-state machine,FSM)可以解决有限个状态转换的问题。具体的定义和相关的概念先不说,我们直接通过例子来理解。 我们知道一个角色通常会至少有idle,walk,jump,attack,dead这五种状态,我们在操作角色时角色会根据我们的操作转换为不同的状态,那么角色如何根据输入转换为相应的状态呢,这就是状态机的要解决的问题。 【我们的需求】 按I键,角色变为Idle状态,播放相应动画 按W键,角色变为walk状态,播放相应动画,也即角色开始行.

enternalstar的博客 2万+
上一篇: STL的bind1st,bind2nd,mem_fun,mem_fun_ref使用示例
下一篇: 行为树(Behavior Tree)简介
双杯献酒
博客等级 码龄25年 102粉丝 134原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值