标题:[C++Qt]人工智能算法在游戏中演示
作者:jeffreylee
日期:2013-04-16 08:41
内容:
转自:http://bbs.csdn.net/topics/390425195
人工智能是一个非常具有潜力的分支,顾名思义,它可以通过计算机指令模拟人的行为,在游戏中的人工智能就非常地多样了。对于FPS、TAB、RPG、STG、ADV等游戏,有着不同的人工智能,但都基于几种理论:有限状态机、遗传算法、神经网络等。下面我就采用游戏中最基础也是最常用的人工智能算法来进行演示。
我的开发环境是:
Windows: WindowsXP(SP3) + MinGW4.4/MinGW4.7 + Qt4.8.3/Qt5.0.1 + QtCreator2.6/QtCreator2.7
Linux: Ubuntu12.10 + gcc4.7 + Qt4.8.1/Qt4.8.4/Qt5.0.1 + QtCreator2.6/QtCreator2.7
演示程序下载地址:这里
源代码下载地址:这里
注意:由于Qt5.0.1中一个未知的Bug,编译运行后角色无法移动,所以请使用Qt4.6+来进行编译。
程序截图如下所示:


通过子窗口的控制选项,我们可以设置我们的初音ミク、镜音リン和镜音レン的控制方法,可以选择人工控制也可以选择AI控制。如果选择人工控制,那么可以通过按下“上下左右”键控制角色的移动,如果选择AI控制,那么角色会沿着场景作顺时针移动。
整个项目的代码量较多,我将选择有关人工智能的内容进行讲解,也希望大家沿着我的思路思考下去。
首先如何让角色沿着窗口作顺时针旋转?一个简单的想法就是:当角色将要达到窗口顶端那么角色将往右移动;角色将要到达窗口右端那么角色将往下移动,以此类推。按照这样的思路,我写了这样的AI代码:
if ( m_pCharacter->pos( ).y( ) > 20.0 )
{
qDebug( "AI go Up." );
m_pCharacter->SetAnimation( Character::_Up_ );
emit TriggerTransition( );
}
else if ( m_pCharacter->pos( ).x( ) & ..
#1 [toby520 04-16 09:11]
Lee发的帖子根本没法阅读呢,能否修改修改
#2 回 1楼(toby520) 的帖子 [makai 04-16 09:34]
估计是技术性太强了吧!嘿嘿
#3 [XChinux 04-16 15:14]
这回能看了吧。
#4 [nmiirq 04-17 20:38]
图裂了。。。