免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3610 | 回复: 9
打印 上一主题 下一主题

状态机用表怎么驱动的呢?? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-04 09:39 |只看该作者 |倒序浏览
本帖最后由 三月廿七 于 2011-12-04 09:42 编辑

可以用 EXCEL 表的吗?? EXCEL表只能存 函数指针 的索引吧??

FSM.jpg (68.04 KB, 下载次数: 0)

FSM.jpg

论坛徽章:
0
2 [报告]
发表于 2011-12-04 09:49 |只看该作者
本帖最后由 xhl 于 2011-12-04 09:51 编辑
可以用 EXCEL 表的吗?? EXCEL表只能存 函数指针 的索引吧??
三月廿七 发表于 2011-12-04 09:39



简单的通用状态变换, 一般是用native代码写死的。 表里写数据, 用数据驱动。

复杂的AI状态, 一般采用脚本模式驱动, 可以直接自己写个脚本解析器, 也可以采用lua, python等。

还有把csv表跟脚本结合使用的, 就是可以在表里配置逻辑语句, 函数调用, 条件判断等。 这种模式你必须得自己写脚本语法解析器了。 至于写多复杂, 那要看你的需求了。

论坛徽章:
0
3 [报告]
发表于 2011-12-04 09:50 |只看该作者
本帖最后由 三月廿七 于 2011-12-04 09:58 编辑

我猜是这样的干的
#define SAFE                         0
...
#define WEAKERTHANENEMY  1

condition[] = {Safe, WeakerThanEnemy, Threatened, StrongerThanEnemy, WeakerThanEnemy};

论坛徽章:
0
4 [报告]
发表于 2011-12-04 09:55 |只看该作者
回复 2# xhl

论坛徽章:
0
5 [报告]
发表于 2011-12-05 17:32 |只看该作者
你是问怎么用表驱动来写状态机吗?

定义一个表(也就是struct),存放各状态下处理的消息;
再定义一个表,存储某个状态下消息和回调函数的对应关系。

然后实现一个proc函数,分别便利上诉两张表来处理

论坛徽章:
0
6 [报告]
发表于 2011-12-05 18:10 |只看该作者
你是问怎么用表驱动来写状态机吗?

定义一个表(也就是struct),存放各状态下处理的消息;
再定义一个 ...
linux_arm 发表于 2011-12-05 17:32


struct 也是表吗?

论坛徽章:
0
7 [报告]
发表于 2011-12-05 18:43 |只看该作者
回复 6# 三月廿七
  1. struct tag
  2. {
  3.     unsigned msg;
  4.     Foo* func;
  5. }mspMap;

  6. msgMap  stateHandle[20] = {
  7. {msg1, func1},
  8. {msg2, func2},
  9. }
复制代码
表大概类似这个样子

论坛徽章:
0
8 [报告]
发表于 2011-12-05 21:11 |只看该作者
回复  三月廿七 表大概类似这个样子
linux_arm 发表于 2011-12-05 18:43

你不觉得你写的这个很难看吗?

论坛徽章:
0
9 [报告]
发表于 2011-12-17 21:52 |只看该作者
是很难看,那我就删掉了

论坛徽章:
0
10 [报告]
发表于 2011-12-17 22:23 |只看该作者
是很难看,那我就删掉了
linux_arm 发表于 2011-12-17 21:52


我以为常说的 表驱动是用 Excel啊, 而且我也听说有用Excel的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP