6、分层状态机编码与执行模型解析

分层状态机编码与执行模型解析

1. 分层状态机编码

很多人存在误解,认为将分层状态机(UML 状态图)转换为高效且易于维护的 C 或 C++ 代码需要大型的设计自动化工具。实际上,借助 QF 实时框架和 QEP 分层处理器(它们都是 QP 事件驱动平台的一部分),我们可以手动编写状态机代码。以“Fly ‘n’ Shoot”游戏中的飞船状态机为例,下面分三步进行讲解。

1.1 定义飞船结构

在这一步,我们要定义飞船的数据结构。和事件类似,我们使用继承从框架结构 QActive 派生出飞船结构,这样就将飞船结构与 QF 框架关联起来了。

QActive 基结构的主要职责是存储状态机当前活动状态的信息,以及飞船活动对象的事件队列和优先级。实际上,QActive 本身是从更简单的 QEP 结构 QHsm 派生而来的,QHsm 仅表示分层状态机的当前活动状态。此外,几乎每个状态机都需要存储其他“扩展状态”信息,比如飞船对象需要维护飞船的位置和游戏中积累的分数。我们通过在基结构成员 super 之后列出的数据成员来提供这些额外信息,如下所示:

#include "qp_port.h"  /* the QP port */
#include "bsp.h"      /* Board Support Package */
#include "game.h"     /* this application */
/* local objects --------------------------------------------------------*/
typedef struct ShipT
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值