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

上传人:痛*** 文档编号:186137107 上传时间:2023-02-07 格式:PPT 页数:24 大小:252.50KB
收藏 版权申诉 举报 下载
第二章二维游戏的编程技术2_第1页
第1页 / 共24页
第二章二维游戏的编程技术2_第2页
第2页 / 共24页
第二章二维游戏的编程技术2_第3页
第3页 / 共24页
资源描述:

《第二章二维游戏的编程技术2》由会员分享,可在线阅读,更多相关《第二章二维游戏的编程技术2(24页珍藏版)》请在装配图网上搜索。

1、VC+游戏编程第二章 二维游戏的编程技术VC+游戏编程游戏的编程技术第九节第九节 人工智能应用人工智能应用一、移动型人工智能一、移动型人工智能 移动型人工智能主要包括三类:固定模式移动、追逐移动型人工智能主要包括三类:固定模式移动、追逐移动、躲避移动。移动、躲避移动。1.固定模式移动固定模式移动 在程序里,我们给物体定义一个移动路径公式,物体就在程序里,我们给物体定义一个移动路径公式,物体就会按照这个公式来移动,这种方式就属于固定模式的移会按照这个公式来移动,这种方式就属于固定模式的移动。固定模式移动的设计重点在于为游戏中每一类移动动。固定模式移动的设计重点在于为游戏中每一类移动路径类似的对象

2、建立一个共享移动路径的结构,由此共路径类似的对象建立一个共享移动路径的结构,由此共享结构所声明的对象则拥有类似的移动方式,但通过设享结构所声明的对象则拥有类似的移动方式,但通过设置不同的初始值,这些物体的移动路径就会有所不同。置不同的初始值,这些物体的移动路径就会有所不同。2.追逐移动追逐移动 追逐移动最常见的情况是计算机怪物追逐玩家,算法如下:追逐移动最常见的情况是计算机怪物追逐玩家,算法如下:if(怪物怪物X玩家玩家X)怪物怪物X-;else 怪物怪物X+;if(怪物怪物Y玩家玩家Y)怪物怪物Y-;else 怪物怪物Y+;VC+游戏编程游戏的编程技术对上面的算法作如下修改:对上面的算法作如

3、下修改: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+游戏编程游戏的编程技术二、行为型人工智能二、行为型人工智

4、能 行为型行为型AI的基本原理是物体会随着不同的情况而改变,的基本原理是物体会随着不同的情况而改变,并作出一些特有的行为动作,而这些物体可以包含游戏并作出一些特有的行为动作,而这些物体可以包含游戏中的主角、怪物,或四周环境中的物品。中的主角、怪物,或四周环境中的物品。1.物体的动作行为物体的动作行为 在游戏中加入在游戏中加入AI,要预先想好一些可能会发生的状况,要预先想好一些可能会发生的状况和物体所要执行的动作,并利用和物体所要执行的动作,并利用if语句来让物体根据各语句来让物体根据各种情况产生相应的行为。例如以一盏灯为例,它的行为种情况产生相应的行为。例如以一盏灯为例,它的行为只有两种:亮与

5、不亮,但是使亮或不亮的情况有多种,只有两种:亮与不亮,但是使亮或不亮的情况有多种,如:停电了、电灯坏了、没按开关等等。考虑到这些情如:停电了、电灯坏了、没按开关等等。考虑到这些情况后,我们就可以利用况后,我们就可以利用if语句来赋予一盏灯相应的行为语句来赋予一盏灯相应的行为型型AI了。我们有如下算法:了。我们有如下算法:VC+游戏编程游戏的编程技术if(停电停电)灯不亮灯不亮else if(灯坏了灯坏了)灯不亮灯不亮 else if(没按开关没按开关)灯不亮灯不亮 else 灯亮灯亮 VC+游戏编程游戏的编程技术假设一只怪物有以下几种行为:假设一只怪物有以下几种行为:普通攻击普通攻击 施放攻击

6、魔法施放攻击魔法使劲全力攻击使劲全力攻击补血补血逃跑逃跑我们可以编写如下算法我们可以编写如下算法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几率成功)几率成功)逃跑成功;逃跑成功;e

7、lse 逃跑失败逃跑失败 break;VC+游戏编程游戏的编程技术2.路径查找路径查找 以迷宫为例,设计路径查找时必须赋予物体一些走迷宫以迷宫为例,设计路径查找时必须赋予物体一些走迷宫的法则,如:前面的路走过就往没有走过的地方走等,这的法则,如:前面的路走过就往没有走过的地方走等,这些法则必须可以让物体探索迷宫中的每一块区域来找到出些法则必须可以让物体探索迷宫中的每一块区域来找到出口,若走迷宫的法则定得不完整,那么物体可能在一个地口,若走迷宫的法则定得不完整,那么物体可能在一个地方兜圈子,永远也找不到出口。在迷宫程序中,定义一个方兜圈子,永远也找不到出口。在迷宫程序中,定义一个二维数组二维数组

8、maze88用于存储整个迷宫状态,如下图用于存储整个迷宫状态,如下图所示:并设置入口的元素值为所示:并设置入口的元素值为3,入口的元素值为,入口的元素值为2,墙,墙的元素值为的元素值为1,通路的元素值为,通路的元素值为0。代表入口的数组元素。代表入口的数组元素maze10。VC+游戏编程游戏的编程技术VC+游戏编程游戏的编程技术 程序中使用一个双向链表来记录小球所走过的程序中使用一个双向链表来记录小球所走过的路径,结构声明如下:路径,结构声明如下:struct listint m;int n;struct list*next;struct list*back;typedef struct li

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

10、术VC+游戏编程游戏的编程技术0000000000000000000000000000000000000000000000000000000000000000走迷宫规则:走迷宫规则:步骤步骤1:先试着往下走,如果下一格有墙或走过,:先试着往下走,如果下一格有墙或走过,则试着往右走;则试着往右走;步骤步骤2:如果右一格有墙或走过,则试着往左走;:如果右一格有墙或走过,则试着往左走;步骤步骤3:如果左一格有墙或走过,则试着往上走;:如果左一格有墙或走过,则试着往上走;步骤步骤4:如果上一格有墙或走过,则表示上下左右:如果上一格有墙或走过,则表示上下左右都没有未走过的路,这时必须回退,即回到上一都没

11、有未走过的路,这时必须回退,即回到上一个节点的位置,并删除目前的节点。个节点的位置,并删除目前的节点。VC+游戏编程游戏的编程技术3.策略型人工智能策略型人工智能 策略型人工智能是所有策略型人工智能是所有AI中最复杂的一种,中最复杂的一种,常见的是棋盘类游戏就是这种策略的典范。这类常见的是棋盘类游戏就是这种策略的典范。这类游戏通常是由计算机根据目前的情况分析计算机游戏通常是由计算机根据目前的情况分析计算机所有可走棋步和可能获胜的几率,并计算玩家走所有可走棋步和可能获胜的几率,并计算玩家走棋步和至胜的几率,最后选择一个最佳走法。棋步和至胜的几率,最后选择一个最佳走法。VC+游戏编程游戏的编程技术

12、VC+游戏编程游戏的编程技术(1)计算所有获胜组合:)计算所有获胜组合:60+60+2x(6+(5+4+3+2+1)x2)=192VC+游戏编程游戏的编程技术(2)定义数组)定义数组 设左图的排列为设左图的排列为192种获胜方式中的第种获胜方式中的第8种,种,那么初始化那么初始化ptable时数组时数组元素的值设置如下:元素的值设置如下:ptable008=falseptable018=false ptable218=true ptable328=true ptable438=true ptable548=trueptable658=true.ptable998=false 如果在程序运行中玩

13、家棋子占住了如果在程序运行中玩家棋子占住了(3,2),那么计算,那么计算机的机的ctable328的值便会被设为的值便会被设为false,因为计,因为计算机的棋子不可能再下到算机的棋子不可能再下到(3,2)上,因此第上,因此第8种的获胜组种的获胜组合对计算机来说就变的不可能了。反之,若计算机的棋子合对计算机来说就变的不可能了。反之,若计算机的棋子占住了占住了(3,2)的位置,则玩家的的位置,则玩家的ptable328元素元素的值也会被设为的值也会被设为false。win2192数组用来记录玩家或计算机在其各个数组用来记录玩家或计算机在其各个获胜组合中所填入的棋子数。假设玩家在数组中的下标为获胜

14、组合中所填入的棋子数。假设玩家在数组中的下标为0,若玩家已在第,若玩家已在第8种获胜组合中填入了种获胜组合中填入了4颗棋子,那么颗棋子,那么win08便等于便等于4,在运行时,程序会判断,在运行时,程序会判断win2192数组中是否有一个元素的值为数组中是否有一个元素的值为5,若是则,若是则表示已经完成了表示已经完成了5颗棋子的连线,玩家(或计算机)获胜。颗棋子的连线,玩家(或计算机)获胜。VC+游戏编程游戏的编程技术(3)分数设置)分数设置 在游戏中,为了让计算机能够决定下一步的最佳走在游戏中,为了让计算机能够决定下一步的最佳走法,必须先计算出计算机将棋子下到棋盘上任意一格的分法,必须先计算

15、出计算机将棋子下到棋盘上任意一格的分数,而其中的最高分便是计算机下一步的最佳走法。如下数,而其中的最高分便是计算机下一步的最佳走法。如下图所示。图所示。从图中我们可以看到,右边的棋子(粉色)阻绝了从图中我们可以看到,右边的棋子(粉色)阻绝了左边棋子在右边方向的连线,因此右边方格的分数为左边棋子在右边方向的连线,因此右边方格的分数为0。而在左边所可以达成连线的格子内,分数各不同,以最左而在左边所可以达成连线的格子内,分数各不同,以最左上角的格子与绿色棋子达成连线的组合只有一种,因此把上角的格子与绿色棋子达成连线的组合只有一种,因此把这一格子定为这一格子定为5,而右上方的那一格与棋子达成连线的组,

16、而右上方的那一格与棋子达成连线的组合有合有4种,所以该格子的分数为种,所以该格子的分数为5x4=20,其他格子的分,其他格子的分数依此类推。数依此类推。VC+游戏编程游戏的编程技术 若空格子可以与一颗棋子达成连线,每有一若空格子可以与一颗棋子达成连线,每有一种获胜组合就将该格子的分数累加种获胜组合就将该格子的分数累加5,如果空格,如果空格子可以与子可以与2、3、4颗棋子达成连线,那么所要加颗棋子达成连线,那么所要加上的分数就更高了。计算机在下每颗棋子之前,上的分数就更高了。计算机在下每颗棋子之前,必须按照这样的方法来计算每一个空格的分数,必须按照这样的方法来计算每一个空格的分数,分数最高的那个

17、格就是计算机下棋子的最佳位置。分数最高的那个格就是计算机下棋子的最佳位置。VC+游戏编程游戏的编程技术(4)攻击与防守 在上述方式中,计算机实际上只是计算出了最佳的“攻击位置”,也就是让计算机可以达成连线的最佳进攻方式。在玩家快获胜的时候,计算机还是去找自己的最佳位置,也就是说计算机不会防守。为了让计算机能够知道玩家目前的状态,程序同样要计算玩家目前在所有空格子上的获胜分数,其中分数最高的就是玩家下棋子的最佳位置。如果玩家最佳攻击位置上的分数大于计算机最佳位置上的分数,那么计算机就将下一步的棋子摆在玩家的最佳攻击位置上以阻绝玩家的攻击,从而进行防守,否则,便将棋子下在自己的最佳位置上去进行攻击。VC+游戏编程游戏的编程技术

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!