【问题标题】:Block user from moving anywhere阻止用户移动到任何地方
【发布时间】:2009-07-05 02:10:15
【问题描述】:

我制作了一款与 Popcap 的 Atomica 几乎相同的游戏。 (http://www.popcap.com/gamepopup.php?theGame=atomica)

差不多完成了,除了一个重要的功能;阻止用户在任何地方移动球体。比如,如果在用户试图移动的球体和试图将其移动到的场之间有一堵墙,用户应该无法移动它。

我已将所有字段和球体存储在一个多维数组 [x-loc, y-loc] 中,其中“e”等于空,“s”球体等。我尝试通过它运行一个循环以找出如果两个领域之间有一条清晰的道路,但没有任何效果。

谁能告诉我如何解决这个问题?

【问题讨论】:

  • 请参阅有关路径查找的这些问题:stackoverflow.com/search?q=path+finding 以及有关碰撞检测的这些问题:stackoverflow.com/search?q=collision+detection 然后再尝试更具体的问题。或者发布您的代码,我们会告诉您它在哪里不起作用。
  • 不要将数据存储为字符串/字符。将其存储为枚举。
  • 查理:为什么?这种方式更容易,因为球体可以是不同的颜色。就像红色球体的“sr”,蓝色球体的“sb”等等。

标签: c# arrays multidimensional-array


【解决方案1】:

您需要运行像Floyd-Warshall 这样的路径算法...从矩阵中忽略无效的注释和边(即您查看的图将是所有没有球体的节点的子图),以便您创建一个图只有合法的举动。然后,像Floyd-Warshall 这样的路径算法将为您提供所有“合法”移动。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多