第二章 二维游戏的编程技术-2.ppt_第1页
第二章 二维游戏的编程技术-2.ppt_第2页
第二章 二维游戏的编程技术-2.ppt_第3页
第二章 二维游戏的编程技术-2.ppt_第4页
第二章 二维游戏的编程技术-2.ppt_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、VC+游戏编程,第二章 二维游戏的编程技术,VC+游戏编程游戏的编程技术,第九节 人工智能应用 一、移动型人工智能 移动型人工智能主要包括三类:固定模式移动、追逐移动、躲避移动。 固定模式移动 在程序里,我们给物体定义一个移动路径公式,物体就会按照这个公式来移动,这种方式就属于固定模式的移动。固定模式移动的设计重点在于为游戏中每一类移动路径类似的对象建立一个共享移动路径的结构,由此共享结构所声明的对象则拥有类似的移动方式,但通过设置不同的初始值,这些物体的移动路径就会有所不同。,2. 追逐移动 追逐移动最常见的情况是计算机怪物追逐玩家,算法如下: if(怪物X玩家X) 怪物X- -; else

2、 怪物X+; if(怪物Y玩家Y) 怪物Y- -; else 怪物Y+ +;,VC+游戏编程游戏的编程技术,对上面的算法作如下修改: if(怪物HP200) /生命值大于200时才追 p=rand()%3; if(p!=1) / 余数不为1时进行追逐 if(怪物X玩家X) 怪物X- -; else 怪物X+; If(怪物Y玩家Y) 怪物Y- -; else 怪物Y+ +; else 怪物HP+=5; /怪物不动,休息补血 ,VC+游戏编程游戏的编程技术,3. 躲避移动 if(怪物X玩家X) 怪物X+; else 怪物X- -; if(怪物Y玩家Y) 怪物Y+; else 怪物Y- -;,VC+

3、游戏编程游戏的编程技术,二、行为型人工智能 行为型AI的基本原理是物体会随着不同的情况而改变,并作出一些特有的行为动作,而这些物体可以包含游戏中的主角、怪物,或四周环境中的物品。 物体的动作行为 在游戏中加入AI,要预先想好一些可能会发生的状况和物体所要执行的动作,并利用if语句来让物体根据各种情况产生相应的行为。例如以一盏灯为例,它的行为只有两种:亮与不亮,但是使亮或不亮的情况有多种,如:停电了、电灯坏了、没按开关等等。考虑到这些情况后,我们就可以利用if语句来赋予一盏灯相应的行为型AI了。我们有如下算法:,VC+游戏编程游戏的编程技术,if(停电) 灯不亮 else if(灯坏了) 灯不亮

4、 else if(没按开关) 灯不亮 else 灯亮 ,VC+游戏编程游戏的编程技术,假设一只怪物有以下几种行为: 普通攻击 施放攻击魔法 使劲全力攻击 补血 逃跑 我们可以编写如下算法,VC+游戏编程游戏的编程技术,if(生命值100) if(rand()%9) 实施魔法攻击 (1/10的几率使用魔法攻击) else 实施普通攻击 else swich(rand()%5) case 0: 普通攻击 break; case 1: 魔法攻击 break; case 2: 使尽全力攻击 break; case 3: 补血 break; case 4: 逃跑 if(rand()%2=0) (1/2几

5、率成功) 逃跑成功; else 逃跑失败 break; ,VC+游戏编程游戏的编程技术,2. 路径查找 以迷宫为例,设计路径查找时必须赋予物体一些走迷宫的法则,如:前面的路走过就往没有走过的地方走等,这些法则必须可以让物体探索迷宫中的每一块区域来找到出口,若走迷宫的法则定得不完整,那么物体可能在一个地方兜圈子,永远也找不到出口。在迷宫程序中,定义一个二维数组maze88用于存储整个迷宫状态,如下图所示:并设置入口的元素值为3,入口的元素值为2,墙的元素值为1,通路的元素值为0。代表入口的数组元素maze10。,VC+游戏编程游戏的编程技术,VC+游戏编程游戏的编程技术,程序中使用一个双向链表来

6、记录小球所走过的路径,结构声明如下: struct list int m; int n; struct list *next; struct list *back; ; typedef struct list node; typedef node *pointer; 数组pass88用来记录迷宫中的格子是否已走过,当小球走向没有走过的格子时,这一格就会被加到链表中,当小球走到其上下左右都有墙或都已走过时,就必须倒退,而每倒退一格就表示那一个是错误的路,因此要将其从链表中删除。直到走出迷宫,链表中的每一个节点便是正确的行进路线。,VC+游戏编程游戏的编程技术,VC+游戏编程游戏的编程技术,走迷宫

7、规则: 步骤1:先试着往下走,如果下一格有墙或走过,则试着往右走; 步骤2:如果右一格有墙或走过,则试着往左走; 步骤3:如果左一格有墙或走过,则试着往上走; 步骤4:如果上一格有墙或走过,则表示上下左右都没有未走过的路,这时必须回退,即回到上一个节点的位置,并删除目前的节点。,VC+游戏编程游戏的编程技术,3.策略型人工智能 策略型人工智能是所有AI中最复杂的一种,常见的是棋盘类游戏就是这种策略的典范。这类游戏通常是由计算机根据目前的情况分析计算机所有可走棋步和可能获胜的几率,并计算玩家走棋步和至胜的几率,最后选择一个最佳走法。,VC+游戏编程游戏的编程技术,VC+游戏编程游戏的编程技术,(

8、1)计算所有获胜组合: 60+60+2x(6+(5+4+3+2+1)x2)=192,VC+游戏编程游戏的编程技术,(2)定义数组 设左图的排列为192种获胜方式中的第8种,那么初始化ptable时数组元素的值设置如下: ptable008=false ptable018=false ptable218=true ptable328=true ptable438=true ptable548=true ptable658=true . ptable998=false,如果在程序运行中玩家棋子占住了(3,2),那么计算机的ctable328的值便会被设为false,因为计算机的棋子不可能再下到(3

9、,2)上,因此第8种的获胜组合对计算机来说就变的不可能了。反之,若计算机的棋子占住了(3,2)的位置,则玩家的ptable328元素的值也会被设为false。 win2192数组用来记录玩家或计算机在其各个获胜组合中所填入的棋子数。假设玩家在数组中的下标为0,若玩家已在第8种获胜组合中填入了4颗棋子,那么win08便等于4,在运行时,程序会判断win2192数组中是否有一个元素的值为5,若是则表示已经完成了5颗棋子的连线,玩家(或计算机)获胜。,VC+游戏编程游戏的编程技术,(3)分数设置 在游戏中,为了让计算机能够决定下一步的最佳走法,必须先计算出计算机将棋子下到棋盘上任意一格的分数,而其中

10、的最高分便是计算机下一步的最佳走法。如下图所示。 从图中我们可以看到,右边的棋子(粉色)阻绝了左边棋子在右边方向的连线,因此右边方格的分数为0。而在左边所可以达成连线的格子内,分数各不同,以最左上角的格子与绿色棋子达成连线的组合只有一种,因此把这一格子定为5,而右上方的那一格与棋子达成连线的组合有4种,所以该格子的分数为5x4=20,其他格子的分数依此类推。,VC+游戏编程游戏的编程技术,若空格子可以与一颗棋子达成连线,每有一种获胜组合就将该格子的分数累加5,如果空格子可以与2、3、4颗棋子达成连线,那么所要加上的分数就更高了。计算机在下每颗棋子之前,必须按照这样的方法来计算每一个空格的分数,分数最高的那个格就是计算机下棋子的最佳位置。,VC+游戏编程游戏的编程技术,(4)攻击与防守 在上述方式中,计算机实际上只是计算出了最佳的“攻击位置”,也就是让计算机可以达成连线的最佳进攻方式。在玩家快获胜的时候,计算机还是去找自己的最佳位置,也就是说计算机不会防守。为了让计算

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论