badbye
V2EX  ›  算法

一个游戏中很常见的找路径问题,请各位算法大神帮忙

  •  
  •   badbye · Jan 6, 2023 · 2071 views
    This topic created in 1237 days ago, the information mentioned may be changed or developed.
    想在战棋游戏中实现类似 dota 中宙斯的弧形闪电技能:释放一道会跳跃穿越附近敌人的闪电。

    像 dota 这样实时的游戏,有可能宙斯释放技能时,目标的队友会走位离开闪电的跳跃范围,所以猜想的实现方式是递归寻找范围内的目标,找到一个就直接跳过去。

    但在战棋游戏中,回合行动时,其他人的位置是固定的,所以应该能找到一条路径,尽可能的电到最多敌人。

    在图中从一个顶点出发,找到一条能经过最多顶点数的最长路径,顶点不可重复,不知道这样描述是否清晰。
    11 replies    2023-01-06 18:15:35 +08:00
    MeiJM
        1
    MeiJM  
       Jan 6, 2023 via Android
    不是动态障碍物 a*就可以 还有其他算法 可以搜一下路径规划
    MeiJM
        2
    MeiJM  
       Jan 6, 2023 via Android
    你这个有点不一样 要先算结束位置再匹配哪个路径可达
    takato
        3
    takato  
       Jan 6, 2023
    想到一个需要补充的点,如果弹跳范围内有两个可选的点,它会根据特定的规则寻找点还是随机选择一个?两个不同的选项可能影响最终结果。
    rrfeng
        4
    rrfeng  
       Jan 6, 2023
    棋盘上随机放置了 N 个棋子。

    从 A 棋子开始,跳转到任意相邻的棋子,重复此过程,求最长路径。
    badbye
        5
    badbye  
    OP
       Jan 6, 2023
    @MeiJM A*我一直以为需要有个终点
    badbye
        6
    badbye  
    OP
       Jan 6, 2023
    @takato 我这一个带 bug 的实现是都走完然后选最长的
    elmagnificogg
        7
    elmagnificogg  
       Jan 6, 2023
    GuardX
        8
    GuardX  
       Jan 6, 2023
    有点类似哈密尔顿通路?
    elmagnificogg
        9
    elmagnificogg  
       Jan 6, 2023
    或者求 极大连通子图 结果应该就是你想要的
    badbye
        10
    badbye  
    OP
       Jan 6, 2023
    @elmagnificogg 是的,看了一些算法,大多是输出最大的长度,而不是完整的路径,修改的时候脑子就不够用,有些算法根本不能改成路径
    MeiJM
        11
    MeiJM  
       Jan 6, 2023 via Android
    @assiadamo 是需要结束点 所以要查找所有结束点 再检验哪个点可达
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   4542 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 47ms · UTC 01:04 · PVG 09:04 · LAX 18:04 · JFK 21:04
    ♥ Do have faith in what you're doing.