![]() 所有的事都很简单 ----- 从原始状态开始 我看过很多别人的文章,有些可以看懂,有些则不能,但我每次看懂时都会觉得很简单的,其实我浪费了很多心思去了解作者的习惯和一些基础但将数不清楚的内容上,这是一个讨论AI的文章,不便在此对其他更基础的东西进行讨论,但是介绍一些与所要讨论的主题有关的内容是必要的,以免浪费讨论主题的时间。我假设你已经是一个能够写Windows程序,并能独立完成一个能够控制小人在地板上走动的人。如果还不能最好去学好那些基础,否则看着些代码将会很头痛。
我们将在AiTestApp.cpp 里面开始我们的介绍。 HRESULT CAiTestApp::Render() 每次调用了Process render就会被请求调用,基本可以跟上显示更新速度。 一般来说我们建立每一个要在系统中运行的对象都有以上几个处理函数。都很象。 CStageScene, CCharacter 这两个都属于AI的环境(一切都是AIWorker的环境) CCharacter 语义上说过的 有行为对象相对应。 CStageScene 给出了人物行走的空间参照坐标。人物的移动都是参照这个坐标系的。 有行为的对象必须理解:基本上是,做事情依赖于状态机和指令作相应的动作, 接下来是虚拟机,前面提出过要建立一套AI语言才能更好的表达。写出更可自定义的AI。关于这部分的代码不便说明, virtual bool Create( const char *szParam ) CMD_PARAM int m_iDir; CMD_END 以上是一个完整的指令定义 只要在VMSCommand.cpp中 用 CMD_BEGIN( 命令名 ) 来定义一个命令. Create中进行参数提取, 把提取出来的参数付给 CMD_PARAM处定义的参数。在Execute里就可以写你的功能,如这里调用了主角的MoveTo。 为了实现我前面提到的AI实现想法,我做了这些测试环境。以上是对各部分的功能简单介绍一下。如果有兴趣继续讨论下面的实现方法,请尽快理解一下这部分代码。这样才好有个可以交流的环境。/Files/Anima64/sf_2004610142933.zip |
![](https://img2024.cnblogs.com/blog/35695/202407/35695-20240713070336838-1837943664.jpg)