当前位置: 代码迷 >> 高性能计算 >> 一个小游戏AI有关问题
  详细解决方案

一个小游戏AI有关问题

热度:8491   发布时间:2013-02-26 00:00:00.0
一个小游戏AI问题
现在又一个10*10的方格地图,地图的某处是目的地,主人公要从左上角(起点)到达目的地,目的地的坐标是给定的,地图的又四种,一种是路,可以通过;一种是墙,不能通过;一种是怪物,遇见怪后会发生战斗;最后一种是宝物,主人公达到该格子时属性会加上宝石的属性(宝石属性可能为负);战斗是这样计算属性的,主人公、宝石、怪物有三个属性:攻击、防御、血。战斗时回合制的,主人公先发动攻击,怪物的掉血量为主人公的攻击减去怪物的防御,当然怪物攻击主人公后,主人公的掉血量也是这样算的,为怪物的攻击减去主人公的防御,直到一方死亡为止(血小于等于0)。

  要求是主人公安全到达目的地,并且得分要尽可能的高,得分 = 主人公的剩余血量 - 步数;
求最优解的算法是带权最短路径图算法,我写好后,在没有宝物的地图上可以找见最优解,可是当地图上出现宝物时,就得不到最优解了,甚至找不见解,我知道这是对宝物的权值计算的不合理造成的,

  我是这样计算权的:墙的权 = 无穷大; 怪物 = 主人公掉血量;

  而宝物我不知道该怎么衡量权,我是改了又改,越改越糟,改得我头疼,大侠们帮帮我啊!

------解决方案--------------------------------------------------------
没什么好的建议,提醒注意下:如果宝物有加血的属性,防止在没到终点前,比如连续遇到很多怪,又连续遇到很多宝物,这样可能没遇到宝物就被怪杀死了,但如果不检测可能最后还是有血量的。
------解决方案--------------------------------------------------------
因为有的宝物会改变其他位置的权(加攻击或防御的宝物使得其它怪物的权变小),所以你需要遍历所有可能的路径。

算法的话,可以先构造一个图,图的结点是有宝物或怪物的位置,外加开始和结束的位置,如果从一个结点可以不经过其它结点走到另一结点,则在两结点之间加一条边,边的长度是两个结点间的最短距离。

除非是满地都是宝物的变态地图,这样得到的图规模不会太大。

在这个图上,用floyd算法求从开始到结束位置的最短距离。
------解决方案--------------------------------------------------------
遍历所有路径 结果排序。
  相关解决方案