欢迎来到天天文库
浏览记录
ID:30853749
大小:931.71 KB
页数:19页
时间:2019-01-04
《游戏人工智能实验报告一》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实验一追逐与拦截实验报告一、实验目的掌握游戏中追逐与拦截的人工智能算法二、实验仪器Windows7系统MicrosoftVisualStudio2015三、实验原理及过程//描述追逐与拦截的算法原理//描述程序实现时的思路包括对每个调用的API进行详细说明(1)描述追逐与拦截的算法原理:连续环境中的视线追逐是最简单的追逐算法,但是追逐者的移动不仅有线速度,而且还有角速度。算法思路就是:首先根据角速度把方向转到视线方向,然后向目标追过去。完整追逐/闪躲由三部分组成:首先,作出追或逃的决策判断。其次,开始追或逃(本章重点)最后,避开障碍物。拦截算法的基木原理是可以预测猎物未来的
2、位置,然后直接到那个位置去,让追击者和猎物同吋到达同一个位置。为了找岀追击者和猎物能同吋到达的点,不仅要考虑他们的移动方向,还要考虑他们的速度。(2)Main和winmnin进行函数的定义。RigidBody2D类:进行物体的质量,惯性,关系,坐标,长高宽即外形的定义,用向量表示他们移动的方向。UpdateSimulation函数对于物体1,2的移动进行反应和控制。DoCraft2Chase函数对于物体1,2追逐进行判断,DoCraft2Evade函数对于物体1,2躲避进行判断。DoCraft2InterceptAlt函数对于物体1,2拦截进行判断。DoAttractCra
3、ft2函数判断是否攻击。Ui□X■1AlCh2Demo:••FileOptions五、实验心得(需包括有何不足如何改进)我认为目前的追逐与拦截的不足之处在于:本次实验做的是连续环境中的视线追逐与拦截。相比砖块环境中的追逐与拦截,肯定是要灵活变通很多,但是箭头老要跑到屏幕外面去,这就非常尴尬了。猎物的速度向量和初始位置向量是固定的,而口靠拢时间的计算是需要相对位移和相对速度的,容易得到两者不相遇的尴尬情况。如何改进:计算采用靠拢时间的办法,此外,再想办法让箭头留在屏幕以内,这样视觉感受会比较好。六、主要代码main.cpp#include"main.h"#include"ti
4、me.h"//严Book:AlforGameDevelopersAuthors:DavidM.Bourg&GlennSeemannExample:Chasingandevadingincontinuousenvironments,Chapter2*/////GlobalVariables:intFrameCounter=0;RigidBody2DCraft1,Craft2;VectorTarget;#define#define#define#define#define_TIMESTEP0.001_TOLle-10_FWDTIME10_THRUSTFACTOR3_CHASES
5、ETUPtrueboolInitialize(void)Craftl.fMass=10;Craftl.flnertia=10;Craft1.flnertialnverse=1/10;Craftl.vPosition.x二_WINWIDTH-60;Craftl.vPosition.y=_WINHEIGHT*0・8;Craftl.fWidth=10;Craftl.fLength=20;Craftl.fHeight=5;Craftl.fOrientation=135;Craftl.CD.y=-0.12*Craft1.fLength;coordinatesofthebodycent
6、erofdragCraftl.CT.y=-0.50:
7、iCraftl.fLength;coordinatesofthepropellerthrustvectorCraftl.CPT.y=0.5*Craftl.fLength;//coordinatesoftheportbowthrusterCraftl.CST.y=0.5*Craftl.fLength;Craftl.CD.x=O.Of;//Craftl.CT.x=0.0f;//Craftl.CPT.x=・0.5*Craftl.lWidthCraftl.CST.x=0.5*Craftl.fWidth//coordinateso
8、fthestarboardbowthrusterCraft1.ProjectedArea=(Craftl.fLength+Craftl.fWidth)*Craftl.fHeight;Craftl.ThrustForce=_THRUSTFORCE*1;Craft2.fMass=10;Craft2.flnertia=10;Craft2.flnertialnverse=1/10;if(_CHASESETUP){Craft2.vPosition.x=40;Craft2.vPosition.y二_WINHEIGHT*0.8;
此文档下载收益归作者所有