人工智能课件第四次课.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《人工智能课件第四次课.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 人工智能 课件 第四
- 资源描述:
-
1、基本路径搜索和航点应用Basic Pathfinding and Waypoints At its most basic level, pathfinding is simply the process of moving the position of a game character from its initial location to a desired destination. 基本路径搜索是从初始位置移动到目标位置的过程。基本路径搜索Basic pathfinding algorithmif(positionXdestinationX) positionX-;else if(po
2、sitionXdestinationY) positionY-;else if(positionYdestinationY) positionY+;限制条件Some limitationsSimple path movementLine-of-sight path movement障碍问题Problems with obstacles(1)随机运动避开障碍Random Movement Obstacle Avoidance Random movement can be a simple and effective method of obstacle avoidance. 随机运动能够简单而有
3、效地解决避开障碍。Random movement obstacle avoidance algorithmif player in line of sight following straight path to playerelse move in random direction(2)围绕障碍物的追踪Tracing Around Obstacles This method can be effective when attempting to find a path around large obstacles, such as a mountain range in a strategy
4、 or role-playing game. 解决围绕大障碍物寻找路径的问题。基本追踪Basic tracingComputer-controlled characterIts goal存在的问题Problem with tracing Deciding when to stop tracing? 什么时候停止追踪? We need a way to determine when we should switch from the tracing state back to a simple pathfinding state. 如何从追踪状态转换为路径搜索状态? One way of acc
5、omplishing this is to calculate a line from the point the tracing starts to the desired destination. 解决方法-计算从追踪开始点到目标点的直线距离。改进的追踪Improved tracing改进的追踪Improved tracing Tracing the outskirts of the obstacle until the line connecting the starting point and desired destination is crossed ensures that th
6、e path doesnt loop back to the staring point. 沿着障碍物外围追踪时,穿过障碍物连接开始点和目标点,防止追踪路径又回到起点。视线追踪Tracing with line of sight视线追踪Tracing with line of sight We follow the outskirts of the obstacle, but at each step we check to see if the destination is in the computer-controlled characters line of sight. 每一步检测是
7、否处在视线之内。 If so, we switch from a tracing state to a line-of-sight pathfinding state. 处在视线之内,路径搜索从追踪状态转换为视线搜索状态。(3)标记路径搜索Breadcrumb Pathfinding Breadcrumb pathfinding can make computer-controlled characters seem very intelligent because the player is unknowingly creating the path for the computer-con
8、trolled character. 带标记的路径搜索是玩家无意地留下轨迹。 Each time the player takes a step, he unknowingly leaves an invisible marker, or breadcrumb, on the game world. 每次玩家走一步,它就留下一个不可见的标记。Breadcrumb trailA troll randomly moves about the tile-based environment until it detects a breadcrumb on an adjacent location.ai
9、_Entity class#define kMaxTrailLength 15class ai_Entity public: int row; int col; int type; int state; int trailRowkMaxTrailLength; int trailColkMaxTrailLength; ai_Entity(); ai_Entity();变量说明 #define statement sets the maximum number of player steps to track. 设置kMaxTrailLength为玩家标记轨迹的最大步骤数。 trailRow,
10、trailCol arrays store the row and column coordinates of the previous 15 steps taken by the player. trailRow, trailCol保存由玩家标记的15步的横、纵坐标。标记数组的初始化Trail array initializationint i;for(i=0; ikMaxTrailLength; i+) trailRowi=-1; trailColi=-1;记录玩家的位置Recording the player positionsvoid ai_World:KeyDown(int key)
11、 int i; if(key=kUpKey) for(i=0; i0) entityListi.row-; DropBreadCrumb(); if(key=kDownKey) for(i=0; ikMaxEntities;i+) if(entityListi.state=kPlayer) if(entityListi.row=kMaxRows-1) entityListi.row+; DropBreadCrumb(); if(key=kLeftKey) for(i=0; i0) entityListi.col-; DropBreadCrumb(); if(key=kRightKey) for
12、(i=0; ikMaxEntities;i+) if(entityListi.state=kPlayer) if(entityListi.colkMaxCols-1) entityListi.col+; DropBreadCrumb(); 设置标记Dropping a breadCrumbvoid ai_World:DropBreadCrumb(void) int i; for(i=kMaxTrailLength-1;i-) entityList0.trailRowi=entityList0.trailRowi-1; entityList0.trailColi=entityList0.trai
13、lColi-1; entityList0.trailRow0=entityList0.row; entityList0.trailCol0=entityList0.Col;追踪标记Following the breadcrumbs The goal is to determine if any of the eight positions adjacent to the computer-controlled troll contain a breadcrumb. 是否在八个相邻方向之一中有标记。Following the breadcrumbsfor(i=0; ikMaxEntities;i
14、+) r=entityListi.row; c=entityListi.col; foundCrumb=-1; for(j=0;j=0) entityListi.row=entityList0.trailRowfoundCrumb; entityListi.col=entityList0.trailColfoundCrumb; else entityListi.row=entityList0.row+Rnd(0,2)-1; entityListi.col=entityList0.col+Rnd(0,2)-1; if(entityListi.row0) entityListi.row=0;if(
15、entityListi.col=kMaxRows) entityListi.row=kMaxRows-1;if(entityListi.col=kMaxCols) entityListi.col=kMaxCols-1;Following the shortest path12,11,10,9,8,7,6,2(4)Path Following It is necessary to move computer-controlled characters in a game environment in a realistic way even though they might not have
16、an ultimate destination.没有目的地的移动 Car-racing game 赛车 navigate a roadway want the cars to stay on the roadPath Following2-road 1-out of bounds地域分析Terrain analysis W e need to analyze the surrounding terrain and decide on the best move. 分析周围的地域并决定选取最佳移动。 We examine all eight directions and then elimina
展开阅读全文