【问题标题】:Finding a percent of how far away an object is in a 2D grid在 2D 网格中查找对象距离的百分比
【发布时间】:2018-04-03 22:02:32
【问题描述】:

对于我的计算机科学项目,我正在制作一个迷宫游戏。我已经编写了一个随机 prims 算法来随机制作迷宫并且效果很好。 我添加了一个我想称之为收音机的对象(在上面链接的图像中显示为黄色方块),它可以从中播放音乐。如果播放器(在图像中显示为红色)位于 [0, 0](左上角)并且收音机位于 [7, 4](右下角),我希望音量非常小。如果播放器和收音机并排,我希望音量最大。我希望以双倍存储的音量(范围从 0.0(无音频)和 1.0(全音量)。我该怎么做?

【问题讨论】:

  • 红色和黄色的距离是多少?例如,它是一条直线,还是它们之间的最短路径?
  • 哪个有更好的比例因子。我认为这将是最短的路径。编辑:我应该说的是忽略墙壁的最短路径。

标签: java arrays swing


【解决方案1】:

如果您只想获得玩家和收音机之间的直接距离,而不是他们必须在迷宫中行走的距离,那么您可以将用户当前的距离作为最大距离的百分比。

最大距离是 [0, 0] 到 [n-1, m-1],其中 n 和 m 是网格的高度和宽度。在您的示例中,收音机水平距离为 7 个单位,垂直距离为 4 个单位。应用毕达哥拉斯定理可以得到大约 8.06 个单位作为最大距离。

与无线电相比,当前距离就是用户所在的位置。如果用户在 [3, 2],则他们水平距离为 4 个单位,垂直距离为 2 个单位。再次应用毕达哥拉斯定理,用户距离约 4.46 个单位。

以百分比形式计算,用户与无线电的最大距离约为 55%。然后您可以将音量设置为 (100-55)% = 45%。您可能还希望将最小音量限制为 20-30%,以便他们即使刚开始也能听到音乐。

附言如果步幅太大,您可以添加一个计时器,以较小的步幅平稳过渡音量,而不是突然改变音量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多