《Fly ‘n’ Shoot游戏的状态机与事件机制解析》
1. 地雷组件(The Mine Components)
地雷被建模为分层状态机,但并非活动对象。它们是隧道活动对象的组件,共享隧道对象的事件队列和优先级。隧道活动对象通过 QHsm_dispatch() 函数将事件直接分发到地雷组件,实现与它们的同步通信。而地雷组件则通过 QActive_postFIFO() 函数将事件发布到其他活动对象的事件队列,实现与隧道及其他活动对象的异步通信。
活动对象之间的事件交换是异步的,即事件发送者仅将事件发布到接收方活动对象的事件队列,而无需等待事件处理完成。相比之下,同步事件处理类似于函数调用(如 QHsm_dispatch() ),它在调用者的执行线程中处理事件。
隧道对象维护着一个数据成员 mines[] ,这是一个指向分层状态机( QHsm * )的指针数组。每个指针可以指向 Mine1 对象、 Mine2 对象,若该条目未使用则为 NULL 。隧道对象将地雷视为通用状态机,统一分发事件,不区分不同类型的地雷。但每个地雷状态机以其特定方式处理事件,例如, Mine2 类型检查与导弹和飞船的碰撞方式不同,而 Mine1 类型对两者的处理方式相同。这种对不同地雷对象分发相同事件却产生不同行为的特性,在面向对象编程中被称为多态性。
每个地雷对象具有较高的自主性,它维护自身
超级会员免费看
订阅专栏 解锁全文
24

被折叠的 条评论
为什么被折叠?



