第二章 二维游戏的编程技术-2.ppt
上传人:qw****27 上传时间:2024-09-12 格式:PPT 页数:24 大小:252KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

第二章 二维游戏的编程技术-2.ppt

第二章二维游戏的编程技术-2.ppt

预览

免费试读已结束,剩余 14 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

VC++游戏编程VC++游戏编程——游戏的编程技术2.追逐移动追逐移动最常见的情况是计算机怪物追逐玩家,算法如下:if(怪物X>玩家X)怪物X--;else怪物X++;if(怪物Y>玩家Y)怪物Y--;else怪物Y++;对上面的算法作如下修改:if(怪物HP>200)//生命值大于200时才追{p=rand()%3;if(p!=1)//余数不为1时进行追逐{if(怪物X>玩家X)怪物X--;else怪物X++;If(怪物Y>玩家Y)怪物Y--;else怪物Y++;}else怪物HP+=5;//怪物不动,休息补血}3.躲避移动if(怪物X>玩家X)怪物X++;else怪物X--;if(怪物Y>玩家Y)怪物Y++;else怪物Y--;二、行为型人工智能行为型AI的基本原理是物体会随着不同的情况而改变,并作出一些特有的行为动作,而这些物体可以包含游戏中的主角、怪物,或四周环境中的物品。物体的动作行为在游戏中加入AI,要预先想好一些可能会发生的状况和物体所要执行的动作,并利用if语句来让物体根据各种情况产生相应的行为。例如以一盏灯为例,它的行为只有两种:亮与不亮,但是使亮或不亮的情况有多种,如:停电了、电灯坏了、没按开关等等。考虑到这些情况后,我们就可以利用if语句来赋予一盏灯相应的行为型AI了。我们有如下算法:if(停电)灯不亮else{if(灯坏了)灯不亮else{if(没按开关)灯不亮else灯亮}}假设一只怪物有以下几种行为:普通攻击施放攻击魔法使劲全力攻击补血逃跑我们可以编写如下算法if(生命值>100){if(rand()%9)实施魔法攻击(1/10的几率使用魔法攻击)else实施普通攻击}else{swich(rand()%5){case0:普通攻击break;case1:魔法攻击break;case2:使尽全力攻击break;case3:补血break;case4:逃跑if(rand()%2==0)(1/2几率成功)逃跑成功;else逃跑失败break;}}2.路径查找以迷宫为例,设计路径查找时必须赋予物体一些走迷宫的法则,如:前面的路走过就往没有走过的地方走等,这些法则必须可以让物体探索迷宫中的每一块区域来找到出口,若走迷宫的法则定得不完整,那么物体可能在一个地方兜圈子,永远也找不到出口。在迷宫程序中,定义一个二维数组maze[8][8]用于存储整个迷宫状态,如下图所示:并设置入口的元素值为3,入口的元素值为2,墙的元素值为1,通路的元素值为0。代表入口的数组元素maze[1][0]。VC++游戏编程——游戏的编程技术程序中使用一个双向链表来记录小球所走过的路径,结构声明如下:structlist{intm;intn;structlist*next;structlist*back;};typedefstructlistnode;typedefnode*pointer;数组pass[8][8]用来记录迷宫中的格子是否已走过,当小球走向没有走过的格子时,这一格就会被加到链表中,当小球走到其上下左右都有墙或都已走过时,就必须倒退,而每倒退一格就表示那一个是错误的路,因此要将其从链表中删除。直到走出迷宫,链表中的每一个节点便是正确的行进路线。VC++游戏编程——游戏的编程技术走迷宫规则:步骤1:先试着往下走,如果下一格有墙或走过,则试着往右走;步骤2:如果右一格有墙或走过,则试着往左走;步骤3:如果左一格有墙或走过,则试着往上走;步骤4:如果上一格有墙或走过,则表示上下左右都没有未走过的路,这时必须回退,即回到上一个节点的位置,并删除目前的节点。3.策略型人工智能策略型人工智能是所有AI中最复杂的一种,常见的是棋盘类游戏就是这种策略的典范。这类游戏通常是由计算机根据目前的情况分析计算机所有可走棋步和可能获胜的几率,并计算玩家走棋步和至胜的几率,最后选择一个最佳走法。VC++游戏编程——游戏的编程技术(1)计算所有获胜组合:60+60+2x(6+(5+4+3+2+1)x2)=192(2)定义数组设左图的排列为192种获胜方式中的第8种,那么初始化ptable时数组元素的值设置如下:ptable[0][0][8]=falseptable[0][1][8]=falseptable[2][1][8]=trueptable[3][2][8]=trueptable[4][3][8]=trueptable[5][4][8]=trueptable[6][