电脑游戏中人工智能制作34987

电脑游戏中人工智能制作34987

ID:20991965

大小:43.00 KB

页数:10页

时间:2018-10-18

电脑游戏中人工智能制作34987_第1页
电脑游戏中人工智能制作34987_第2页
电脑游戏中人工智能制作34987_第3页
电脑游戏中人工智能制作34987_第4页
电脑游戏中人工智能制作34987_第5页
电脑游戏中人工智能制作34987_第6页
电脑游戏中人工智能制作34987_第7页
电脑游戏中人工智能制作34987_第8页
电脑游戏中人工智能制作34987_第9页
电脑游戏中人工智能制作34987_第10页
资源描述:

《电脑游戏中人工智能制作34987》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、电脑游戏中的人工智能制作34987脑游戏中的人工智能制作    电脑游戏随着硬件执行效率与显示解析度等大幅提升,以往很多不可能或非常难以实现的电脑游戏如此都得以顺利完成。虽然电脑游戏的呈现是那么地多样化,然而却与我们今日所要探讨的主题,人工智能几乎都有着密不可分的关系。 在角色扮演游戏中,程序员与企划人员需要精确地在电脑上将一个个所谓的“怪物”在战门过程中栩栩如生地制作出来;所以半兽人受了重伤懂得逃跑,法师懂得施展攻性法术。 目前能让人立刻想到与人工智能有密切关系的游戏有两种:一是所谓的战棋/策略模拟游戏,二则是棋弈游戏。人工智能的比重

2、与深浅度,在不同的游戏类型中各有不一。有的电脑游戏非标榜着高人工智能不可,不然没有人买;有的则是几乎渺茫到让玩家无法感觉有任何人工智能的存在。             导向式思考 AI最容易制作的的方式,同时也是早期游戏AI发展的主要方向就是规则导向或称之为假设导向。在一些比较简单的电脑游戏中,程序员可以好不困难地将游戏中的规则与设定转化成一条条的规则,然后将它们写成电脑程序。让我们以角色扮演游戏为例。决大多数的企画在设定所谓电脑怪物时,所设定的属性通常有以下几种:  生命值 攻击力 防御力 法力 属性 最后一个“属性”是我在设定时喜欢

3、增加的项目之一。透过这项属性的设定,我可以把怪物设定成“贪生怕死的”,也可以把战士设定为“视死如归”。以目前我们所掌握的资料,在战门系统中的大纲如是诞生了:                          规则一if(生命值<10)//边临死亡了吗 { if(属性==贪生怕死)                  结果=试图逃跑                 if(有任何恢复生命值的物品或法术可用)         结果=使用或施展相关物品或法术       }                                     

4、            规则二 if(可施攻击性法术&&有足够法力){                           结果=施展攻攻击性法术             }                         由以上一连串的“如果--就--”规则设定,建立了最基本的AI。说这样的制方式只能建立基本AI其实并不当然正确。只要建立足够及精确的规则,这样的方式仍然有一定水准的表现。 规则导向的最大优点就是易学易用。在没有深奥的理论概念的前提下,仍有广大的使用群。所以很多老道的玩家常常没两下就摸清楚敌人的攻击策略,移动方式等等。 

5、推论式思考 相信曾经接触过电脑语言课程,或是自习过相关书籍的朋友们,都曾曾经听过一个著名的程序,那就是井字游戏。用井字游戏作为讨论AI的入门教材,我个人觉得是最适当的例子。或许有人还不知道井字游戏怎么玩。只要任何一方在三乘三的方格中先先成一线便胜利了。我们在前面谈过的规则导向,在这里也可以派得上用场。 if任何一线已有我方两子&&另外一格仍空//我方即将成一线吗  结果=该空格                      if任何一线已有敌方两子&&另外一格仍空//防止敌方作成一线   结果=该空格                    

6、 if任何一线已有我方一子&&另外两格仍空//作成两子      结果=该空格 有一次我在某本电脑书上,同样地也看到某些以井字游戏为介绍的范例。不同的是,我几乎看不到任何规则导向的影子。但在仔细分析该程序码后,我得到了极大的启发,原来AI是可以不用这么多规则来制作的。它用的方法正是在电脑AI课程中重要的概念:极大极小法。我在这里只说明这法则的概念。继续以井字游戏为例,电脑先在某处下子,接着会以假设的方式,替对方下子,当然,必须假设对方下的是最佳位置,否则一切则毫无意义。在假设对方下子的过程中,自然又需要假设我方的下一步回应,如此一来一往

7、,直到下完整局游戏为止。底下是节录书中的程序片段:                        bestMove(intp,int*v){  inti;    intlastTie;                     intlastMove;                    intsubV;                                   /*First,checkforatie*/                if(isTie()){                   *v=0;         

8、           return(0);                 };/*Ifnotatie,tryeachpotentialmove*/ for(*v=-1,lastTie=lastMove=-

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。