游戏人工智能实验报告二

上传人:xmg****18 文档编号:118868969 上传时间:2019-12-27 格式:DOC 页数:15 大小:100.50KB
返回 下载 相关 举报
游戏人工智能实验报告二_第1页
第1页 / 共15页
游戏人工智能实验报告二_第2页
第2页 / 共15页
游戏人工智能实验报告二_第3页
第3页 / 共15页
游戏人工智能实验报告二_第4页
第4页 / 共15页
游戏人工智能实验报告二_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《游戏人工智能实验报告二》由会员分享,可在线阅读,更多相关《游戏人工智能实验报告二(15页珍藏版)》请在金锄头文库上搜索。

1、word格式实验二 聚集与避障实验报告一、实验目的掌握游戏中聚集与避障的人工智能算法,理解宽视野和有限视野的区别二、实验仪器Windows 7系统 Microsoft Visual Studio2015三、实验原理及过程/描述聚集与避障的算法原理/描述程序实现时的思路包括对每个调用的API进行详细说明智能体只考虑哪些在检测盒内的障碍物。初始的时候,要将游戏世界中所有的障碍物都迭代到内存中,并标记哪些在检测盒内的障碍物以作进一步分析,然后把所有已经标记的障碍物都转换到智能体的局部空间。转换坐标后,那些x坐标为负值的物体将不被考虑,所以问题就变得简单多了,接下来必须要检测障碍物是否和检测盒重叠。使

2、障碍物的包围半径扩大检测盒宽度的一半。然后测试该障碍物的y值是否小于这个值(即障碍物的包围半径加上检测盒宽度的一半)。此时,只剩下那些与检测盒相交的障碍物了。接下来我们找出离智能体最近的相交点。再一次在局部空间中计算,第三步中扩大了障碍物的包围半径。用简单的线圆周相交测试方法可以得到被扩大的圈和x轴的相交点。4、 实验结果五、实验心得(需包括有何不足如何改进)/你认为目前的聚集与避障有什么不足之处,如何改进目前的聚集与避障的不足之处在于:可能会因为错误的方案设计而搞错导致路线的躲闪。还有就是从实验2开始,我的电脑本身出现了COMCTL32.LIB文件LINK的错误,后来在同学的帮助下我解决了这

3、个问题。如何改进:实验前必须要经过精确的计算并且代码不能出现任何错误。把COMCTL32.LIB文件载入文件以让程序正确运行。6、 主要代码#include main.h#include time.h/-/*Book: AI for Game DevelopersAuthors: David M. Bourg & Glenn SeemannExample: Flocking, Chapter 4*/-#define_TIMESTEP0.0025#define_TOL1e-10#define_FWDTIME10#define_THRUSTFACTOR1.0#define _CHASESETUPt

4、rue#define_SPAWN_AREA_R100#define_MAX_NUM_UNITS20#define_UNIT_LENGTH4#define_OBSTACLE_RADIUS_FACTOR8#define_OBSTACLE_RADIUS_OBSTACLE_RADIUS_FACTOR * _UNIT_LENGTH#define_COLLISION_VISIBILITY_FACTOR25#define_WIDEVIEW_RADIUS_FACTOR200#define_NARROWVIEW_RADIUS_FACTOR50#define_LIMITEDVIEW_RADIUS_FACTOR30

5、#define_SEPARATION_FACTOR5#define_BACK_VIEW_ANGLE_FACTOR1#define_FRONT_VIEW_ANGLE_FACTOR1#define_NUM_OBSTACLES8/ Global Variables:intFrameCounter = 0;RigidBody2DUnits_MAX_NUM_UNITS;VectorTarget;VectorObstacles_NUM_OBSTACLES;boolInitialize(void)int i;GetRandomNumber(0, _WINWIDTH, true);for(i=0; i_MAX

6、_NUM_UNITS/2)Unitsi.Interceptor = true;Unitsi.ThrustForce = _THRUSTFORCE*1.5f; else Unitsi.Interceptor = false;Unitsi.ThrustForce = _THRUSTFORCE;for(i=0; i_NUM_OBSTACLES; i+)Obstaclesi.x = GetRandomNumber(_OBSTACLE_RADIUS*4, _WINWIDTH-_OBSTACLE_RADIUS*4, false);Obstaclesi.y = /*_WINHEIGHT/2;*/GetRan

7、domNumber(_OBSTACLE_RADIUS*4, _WINHEIGHT-_OBSTACLE_RADIUS*4, false);return true;voidDoUnitAI(int i)intj;intN;VectorPave;VectorVave;VectorFs;VectorPfs;Vectord, u, v, w;doublem;intNf;boolInView;boolDoFlock = WideView | LimitedView | NarrowView;intRadiusFactor;/ begin Flock AIFs.x = Fs.y = Fs.z = 0;Pav

8、e.x = Pave.y = Pave.z = 0;Vave.x = Vave.y = Vave.z = 0;N = 0;Pfs.x = 0;Pfs.y = Unitsi.fLength / 2.0f;Nf = 0;for(j=1; j 0) & (fabs(w.x) fabs(w.y)*_FRONT_VIEW_ANGLE_FACTOR) if(d.Magnitude() 0) | (w.y fabs(w.y)*_BACK_VIEW_ANGLE_FACTOR);RadiusFactor = _WIDEVIEW_RADIUS_FACTOR;if(LimitedView)InView = (w.y 0);RadiusFactor = _LIMITEDVIEW_RADIUS_FACTOR;if(NarrowView)InView = (w.y 0) & (fabs(w.x) fabs(w.y)*_FRONT_VIEW_ANGLE_FACTOR);RadiusFactor = _NARROWVIEW_RADIUS_FACTOR;if(InView & (Unitsi.Interceptor = Unitsj.Interceptor)if(d.Magnitude() = (Unitsi.fLength * RadiusFactor)Pave += Uni

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号