【问题标题】:Hint function based on AI moves基于AI动作的提示功能
【发布时间】:2013-10-25 20:23:07
【问题描述】:

我正在制作一个类似于Greedy Spiders 的游戏。简而言之,这是一款回合制游戏,其中有一只或多只蜘蛛试图接近苍蝇吃掉它们。用户的任务是通过从网上切下一小部分以释放苍蝇或诱捕蜘蛛来防止这种情况发生。有一个提示功能,显示如何以尽可能少的切割(移动)完成关卡并释放苍蝇或诱捕蜘蛛。

我正在使用 A* 算法来寻找到其中一只苍蝇的最短路径。该算法仍然不是很智能,因为它只找到最短路径并且没有考虑用户的切割。

我想知道的是如何实现提示功能。我现在想的是使用游戏树并重视每个结果并选择最好的,但我不确定这是否是最好的方法。

对于实现这样的功能,您有什么建议?

附言。我不是要复制应用程序。我想用自己的努力做一些类似的事情,这样我就可以更好地解决问题。我想要一个想法,而不是解决方案......

【问题讨论】:

  • 所以你试图复制别人的应用程序,而不是你自己的努力复制它,你试图让 SO 告诉你怎么做?
  • 任何适合屏幕的游戏的可能性都相对较小。我会尝试所有这些并选择最好的。
  • 嘿伙计,我不是要求实现或伪代码......只是一个想法......
  • 一个不要求代码的问题可能不属于这里。请改用programmers.stackexchange.com

标签: algorithm artificial-intelligence path-finding


【解决方案1】:

这是我的猜测。

  1. 在每个回合中,对所有蜘蛛使用 A* 来找到所有蜘蛛到最近的苍蝇的最短路径。以某种方式将所有边存储在某个有序数据结构中,用于每个蜘蛛的每个最短路径。如果蜘蛛有多个路径共享最短路径长度,则存储所有路径。例如如果蜘蛛有 3 条路径可供 3 种不同的苍蝇使用,并且所有这些路径的长度均为 2,则存储所有这些路径。

  2. 按路径长度“排序”在步骤 1 中找到的路径。找出其中最短的(长度最短的)。我们将这些称为最短路径

  3. 在所有这些最短路径中,尝试找到所有路径中常见(最高频率)的边。告诉玩家切掉那个特定的边缘(如果存在)。如果不存在这样的“共同”边,请告诉玩家在最短路径之一上剪下最后一条边,因为这将提供最大的机会一次释放一只或多只苍蝇。

我没有严格的证据证明这有效。作为一名玩家,这似乎是一件最理想的事情。

想到在多条最短路径之间找到“共同边缘”的想法是为了在一个回合内完成几个重要目标,例如一次阻止多个蜘蛛(或一次阻止单个蜘蛛的多条路径)。可能有更高级的算法来做这个特定的事情。否则,如果不存在“共同边”(即所有边的频率 == 1),最佳策略似乎是慢慢地把处于最迫在眉睫的危险的苍蝇周围的边一个接一个地剪掉。

【讨论】:

  • 对于那些感兴趣的人来说,找到尽可能少的动作的最佳方法是尝试所有可能的切割和工具组合,因为根据我的经验,频率并不能保证最佳解决方案。问题在于算法运行时,它迫使我将提示预加载到 xml 文件中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多