J2ME下漫游(追逐)AI的实现

简介:

漫游(追逐)AI的实现

 
作为游戏开发者,要给玩家制造挑战,只要使游戏的难度有所增加,使游戏中的假想敌人像玩家一样机智,一样具有人类的智慧和应变能力。这就需要使用一种计算机专业领域新兴的一门科学 AI artificial intelligence ,人工智能)。
人工智能,作为一门新兴科学,人类思维的模拟是 AI 的主要研究领域,也是难、热点之一。人类的思维是一个十分不确定性的过程,要对其精确建模十分困难。在我做的这个游戏中所使用的 AI 还很粗糙,是属于人工智能的基础性知识。游戏开发专家将和游戏相关的 AI 划分为3种基本类型:
·漫游 AI ——确定一个游戏对象如何在一个虚拟的游戏世界中漫游;
·行为 AI ——确定跟踪或追逐在一个游戏对象或多个游戏对象后面的别一个游戏对象是多么具有攻击性;
·策略 AI ——在一个策略游戏中,从一组固定的实现定义的漫游规则中确定最佳的移动。
漫游AI是射击类游戏最常见的 AI 方法,是对游戏对象建模的 AI ,也就是说,游戏对象做出决定,确定它们如何在一个虚拟世界中漫游。漫游AI的一个典型的例子就是像 Galaga 的太空射击游戏,其中外星人常常试图跟踪和追逐玩家。同样,漫游 AI 也用来实现按照预先定义的方式飞行,发射子弹或射击的敌机。基本上,对于由计算机(或程序)控制的对象,不论是它必须做出决定改变当前的路径,还是要游戏中实现需要的结果,或者只是简单地遵守某种特定的移动方式,都要用到漫游 AI 。在我做的这个游戏中,敌方飞机所需要的结果就是遵从某种移动方式,同时尝试和玩家的飞机发生碰撞并玩家生命值降低。在其他的游戏中,计算机玩家所需要的结果可能是避开人类玩家所发射的子弹。
实现漫游 AI 通常比较简单,一般包括一个对象(玩家的飞机)的位置,改变别一个对象(敌人的飞机)的速度或位置。对象的漫游移动也可以由随机的或预先定义的方式的影响。通常有3种类型的漫游 AI :追逐、躲避和模式。
追逐是这样一种漫游:一个游戏对象跟踪或追逐另外一个游戏对象或多个游戏对象。追逐是很多射击类游戏所使用的一种方法,其中敌方飞机常常追逐玩家飞机。根据玩家飞船的位置,改变外星人的速度和位置,这就实现了追逐。
例如,我做的这个游戏中实现追逐的算法:
/*flag标记具有跟踪能力的小飞机*/ 
private  int flag=-1; 
for( int i=0;i<MAX_SP;i++) 
       if(smallPlane[i].isVisible()) 
      { 
         if(i==flag) 
        { 
           if(smallPlane[i].getX()>playerSprite.getX()) 
                        smallPlane[i].move(-speedOfSP, speedOfSP); 
           else 
            smallPlane[i].move(speedOfSP, speedOfSP); 
        } 
         else 
          smallPlane[i].move(0,speedOfSP); 
    } 
 
    如程序中可以看出,玩家飞机 smallPlane[i] 的坐标位置 (smallPlane[i].getX()) 根据玩家飞机 playerSprite 的位置 (playerSprite.getx()) 而改变。这段代码可能产生的问题就是可能AI工作的非常良好,敌人飞机几乎可能毫不犹豫地纠缠住玩家,基本上使得玩家没有机会躲开它,这可能是游戏设计者所需要的,但是,玩家更希望敌人在追逐玩家的时候能够多飞一会儿。如果希望这个过程更加完美一些,玩家至少有机会能够以机动性战胜外星人。即敌人飞机在追逐玩家精灵时不应该全力以赴地进行躲闪,而是有余力去追击敌人。
使追逐算法变得更加平和的一种方法就是,在过程中加入一点随机性,我做的这个游戏使用的是这样一种方法:  
/*有跟踪能力的小飞机的出现具有随机性*/ 
x=( int)(random.nextInt()%3); 
                     if(x==0) 
                    { 
                      flag=i; // flag标记具有跟踪能力的小飞机 
                    } 
   break
 
在这段代码中,敌人飞机只有三分之一的机会能够跟踪玩家。即便只有三分之一的机会能够追逐到玩家,敌人飞机还是对玩家具有攻击性,而这也使玩家能够争取逃脱的机会。
在漫游 AI 中,还有一个分类,即是按照预先定义的方式飞行,发射子弹或射击的敌方机体。在我做的这个游戏中,敌机由计算机(程序)来进行控制,几乎敌机的所有行为均由程序控制。
对于逃避、模式漫游戏 AI ,行为 AI 我做的这个游戏中没有具体的实现,所以只是简单地进行介绍(可以参看《 J2ME 手机游戏编程入门》第三部分,第13章)。逃避 AI 在逻辑上与逃 AI 是相对的,即敌机试图躲避玩家飞机的射击。和追逐一样,逃避也可以使用随机方法或者模式移动来减缓。比如逃避的一个经典例子是 Pac-Man 。模式移动指得是游戏对象使用一组预定义的移动的一种漫游 AI 类型。模式移动的典型例子是经典街机 Galaga 中的外星人,它们在屏幕上表演各种各样的漂亮的特技飞行。模式包括圆圈,八字形等等。
AI 另外一大类是行为 AI ,它常常是一组混和漫游 AI 算法赋予游戏对象特定的地为。比如敌方机体有时候追逐,有时候躲避,并且每次交替时间都是随机的。常常在实现中,先定义几种行为:追逐、躲避、按某模式飞行或随机飞行,并且可以上述行为分配时间百分比,如50%追逐,10%躲避,40%随机飞行等。实现行为 AI 的伪码可以这样表示。  
int behavior=Math.abs(rand.nextInt())%100; 
if(behavior<50) 
//追逐 
else  if(behavior<60) 
//躲避 
else 
//随机飞行 
 

    最后一种AI类型即是策略AI,这种AI机制常常在棋牌类,益智类游戏中比较常见。



     本文转自 gaochaojs 51CTO博客,原文链接:http://blog.51cto.com/jncumter/187540,如需转载请自行联系原作者


相关文章
|
人工智能 编解码 并行计算
Ai实现FPS游戏自动瞄准 yolov5fps自瞄
Ai实现FPS游戏自动瞄准 yolov5fps自瞄
8488 0
|
机器学习/深度学习 存储 人工智能
5秒实现AI语音克隆(Python)
推荐一个有趣的AI黑科技--MockingBird,该项目集成了Python开发,语音提取、录制、调试、训练一体化GUI操作,号称只需要你的 5 秒钟的声音,就能实时克隆出你的任意声音
|
人工智能 文字识别 Java
身份证图片识别demo通过百度AI开放平台实现
身份证图片识别demo通过百度AI开放平台实现
452 0
身份证图片识别demo通过百度AI开放平台实现
|
机器学习/深度学习 人工智能 PyTorch
百度马艳军:实现AI技术自立自强,国产深度学习框架面临三大难题
百度马艳军:实现AI技术自立自强,国产深度学习框架面临三大难题
147 0
百度马艳军:实现AI技术自立自强,国产深度学习框架面临三大难题
|
人工智能 JavaScript 算法
通过JS实现一个带AI的井字棋小游戏
用JavaScript做一个井字棋的小游戏玩玩
290 0
|
人工智能 算法
|
人工智能 计算机视觉
CV之FD:基于dlib、cv2库利用warpPerspective函数和_68_face_landmarks文件实现AI换脸渐变融合视频效果
CV之FD:基于dlib、cv2库利用warpPerspective函数和_68_face_landmarks文件实现AI换脸渐变融合视频效果
CV之FD:基于dlib、cv2库利用warpPerspective函数和_68_face_landmarks文件实现AI换脸渐变融合视频效果
|
人工智能 边缘计算 算法
AI开发者大会之计算机视觉技术实践与应用:2020年7月3日《RPA+AI助力政企实现智能时代的人机协同》、《5G风口到来,边缘计算引领数据中心变革》、《数字化时代金融市场与AI算法如何结合?》
AI开发者大会之计算机视觉技术实践与应用:2020年7月3日《RPA+AI助力政企实现智能时代的人机协同》、《5G风口到来,边缘计算引领数据中心变革》、《数字化时代金融市场与AI算法如何结合?》
AI开发者大会之计算机视觉技术实践与应用:2020年7月3日《RPA+AI助力政企实现智能时代的人机协同》、《5G风口到来,边缘计算引领数据中心变革》、《数字化时代金融市场与AI算法如何结合?》
|
机器学习/深度学习 人工智能 TensorFlow
AI开发者大会之AI学习与进阶实践:2020年7月3日《如何转型搞AI?》、《基于AI行业价值的AI学习与进阶路径》、《自动机器学习与前沿AI开源项目》、《使用TensorFlow实现经典模型》
AI开发者大会之AI学习与进阶实践:2020年7月3日《如何转型搞AI?》、《基于AI行业价值的AI学习与进阶路径》、《自动机器学习与前沿AI开源项目》、《使用TensorFlow实现经典模型》
AI开发者大会之AI学习与进阶实践:2020年7月3日《如何转型搞AI?》、《基于AI行业价值的AI学习与进阶路径》、《自动机器学习与前沿AI开源项目》、《使用TensorFlow实现经典模型》
|
机器学习/深度学习 人工智能 JSON
使用 TensorFlow 和 Express.js 实现AI图像识别
人工智能是一个相当广泛的领域,以其惊人的能力和复杂的性质吸引着人们的兴趣。自 1940 年代首次提出使用电子设备重建大脑的可能性以来,这项技术已经取得了长足的进步。尽管人工智能和机器学习在其生命周期的大部分时间里都是相当独特的领域,但事情开始发生变化。
804 0
使用 TensorFlow 和 Express.js 实现AI图像识别

热门文章

最新文章