visual c++游戏编程基础,visual c++游戏开发案例实战pdf
我们经常听到AI(人工智能)这个词,比如Dota中的AI地图。写这篇文章的时候DotaAI的最新版本是6.72f估计过几天6.73的AI就出来了。很多Dota玩家喜欢玩AI地图练感情补刀。可以说,Dota地图成功加入AI元素,是Dota近年来风靡全球不可或缺的因素之一。
一、知识点讲解
那么,AI到底是什么?我们先来了解一下人工智能(AI)的具体定义。“人工智能”简称AI。它是研究和发展模拟、延伸和扩展人类智能的理论、方法、技术和应用系统的一门新技术科学。人工智能研究如何利用计算机模拟、延伸和扩展人的智力;如何更聪明地使用电脑;如何设计和构建高智能水平的计算机应用系统;如何设计和制造更智能的计算机和智能水平更高的智能计算机?人工智能是计算机科学的一个分支,人工智能是计算机科学技术的前沿。人工智能与计算机软件密切相关。一方面,各种人工智能应用系统都要通过计算机软件来实现;另一方面,许多智能计算机软件也应用了人工智能的理论方法和技术。
我们要解释的游戏人工智能,只是人工智能这个深奥领域的冰山一角。我们不会用神经网络、遗传算法、模糊逻辑等复杂的人工智能理论。我们只需要用自己的思维模式,赋予角色在游戏中的判断能力,进行一些具体的行为。
今天我们的主角是运动AI,言归正传。
游戏中几乎所有可以移动的物体都涉及体育游戏AI。例如,追逐怪物或避免游戏中玩家和NPC角色的移动就是移动人工智能的例子。
1追逐和移动
我们以移动AI中对移动AI的追求为例。
追逐一般是通过控制一个角色接近某个目标来实现的。简单来说,就是两个物体的空间坐标相互接近。比如我们想设计一个怪物追玩家的游戏。我们只要每次贴图的时候,把怪物坐着的坐标和玩家角色的坐标进行对比,在怪物的X轴和Y轴上增加或者减少贴图坐标,就可以产生追动的效果。下面是一个典型的怪物追逐的移动AI算法,用“moonkin X”、“moonkin Y”、“幻影刺客X”和“幻影刺客Y”分别表示怪物和玩家在X轴和Y轴上的映射坐标。
[算法1]
让我们看另一个例子。这个算法是以上面的【算法1】为核心代码,给怪物更多的“思考”空间。追怪会根据自己的生命值来决定追不追。每计算一次下一个位置坐标,只有三分之二的几率会正确面对玩家,其中“moonkin HP”用来代表怪物当前的生命值。
[算法2]
这种怪物更有灵性。要继续创造更聪明的AI,只要继续改进代码,写更多的函数就行了。
2避免移动
其实避动的算法和追动差不多,就是用-交换位置就行了,让怪物和人物的空间坐标保持距离。
具体代码如下:
[算法3]
这是一只鸟追逐一个小女孩的场景。我们需要使用键盘上的[][][]]键来躲避小鸟的追逐。键盘输入信息的具体知识点还有
不太了解的朋友,请移步注12。以下是链接:
【Visual C】游戏开发注意事项十二游戏输入消息处理(1)键盘消息处理
以下仍是地图详细标注的源代码:
和
运行这个小游戏,我们要用键盘上的[][][]]键来躲避小鸟的追击,小鸟会不断靠近人物。
在贴图方面,我只是做了效果。由于最近真的很忙,这个demo只是给大家提供了一个实现AI的思路,具体的bug还没有进一步修复和完善。在这个例子中,会有一个小鸟闪烁的小问题。希望你不要见事说事,呵呵。
关于贴图的方式,之前尝试了CImage的绘制方式,图像闪烁严重。由于这是消息循环产生的动画效果,所以图像闪烁的原因估计和CImage类的贴图效率有关。之后使用CImage的detach方法将一个png的句柄附加到HBITMAP上,然后调用bitblt进行映射,却得到了一个扭曲的矩形。
动画显示时CImage地图闪烁的问题,有没有解决的办法,请大家和我讨论。这是一个相互学习和提高的过程。非常希望能和大家交流。
因为CImage类没有起到很好的效果,所以仍然采用传统的bitblt映射方法。这种映射方法的优点是映射效率非常高。
本节笔记到此结束。因为最近在做纯flash网站,更新速度和回复评论不如往常及时,文末demo质量有所下降,但这不会影响整体学习效果。希望你能理解。
请点击此处下载本节注释的源代码:[Visual C] Code _ Note _ 15
感谢一直支持[VisualC]游戏开发笔记系列专栏的朋友们,也请继续关注我的专栏。我一有时间就把我的学习经验和我认为比较好的知识点写出来和大家分享。
要精通游戏开发还有很长的路要走。非常希望能和大家交流,一起学习,一起进步。
如果你看完之后觉得值得一读,可以置顶这篇文章。你们的支持是我继续写下去的动力~
文章如有遗漏,请指正。也希望大家可以多留言和我一起探讨编程相关的问题。
最后,感谢大家一直以来的支持~ ~ ~
3354————3————33543334轻墨2012年4月7日
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。