模拟高尔夫游戏策略

时间:2010-03-24 14:27:00

标签: c# asp.net

我正在研究最多可被视为“原始”的高尔夫球比赛,在引入一定程度的随机性后,我需要打出一个高尔夫球洞。这个洞是静态的,我并不关心UI方面,因为我只需要在球被击中后在洞的图形上绘制一条线来显示它的行进位置。

我正在寻找关于如何管理拼图“逻辑”方面的想法的输入,下面是我对此事的一些看法,输入,建议或参考文献都非常感激。

  1. 将洞穴绘制成具有特定精度的阵列,注意表面的类型:越界,球道,粗糙,绿色,沙子,水,以及最重要的洞。
  2. 绘制“区域”,如果球包含在其中一个区域内,则设置“最大”出发角的参数。 (例如,射击的第一部分必须在某些角度之间
  3. 使用球的当前位置和#2中包含的区域,定义一个例程来随机选择射击角度,然后用力移动球,调整轨迹并再次移动。
  4. 我知道这不是“最优雅”的解决方案,但实际上,我们正在寻找一个快速而肮脏的解决方案,因为我必须这样做几次,设置它并在之后忘记它。

    从语言的角度来看,我将使用ASP.NET和C#来完成这项工作。

1 个答案:

答案 0 :(得分:1)

好的,快速且不那么脏:D

具有计划各种路线组合的功能 使用不同的俱乐部(距离) 对于给定的玩家,将提供各种方法计划

最佳平面图在正常场(1到5号)上是1到5个笔划,因此您可以通过将场划分为具有一定精度的正方形来强制它们

假设您为正常地形划分10码精度的场,让我们假设最大50x30网格。

如果你假设每个击球/球杆在90%的情况下会达到一定的距离,那么每次击球都会落在一个网格的一个百分比上 - 让我们假设一个球杆会击中200到250码,然后通常会击中(125) ^ 2 * pi-100 ^ 2 * pi)/(500 * 300)/ 4 * 1500 = 45个方格。 (第一项是最大距离区域,第二项最小距离,它除以完整区域,因为在孔的大致方向上很好地瞄准 - 不超过45度到任何一侧,所以只取得1/4)。

重复最多5次会给出一份可能的好计划清单,计划数量45比5在7 * 10 ^ 8(数量需要减少,因为最后的选择不像以前的4那样免费,但那里是一个俱乐部,所以我会留在这个)

如此迭代球杆及其典型距离并采用代表球场的网格来进一步减少你射击的区域(你不会瞄准森林,沙子,瓦特)你可以计算一个特定的分数射击 - 例如,如果地形接近危险,你可以降低射门得分。如果地形不平坦,你可以降低分数等。

如果你不能直接朝洞那里扩展目标区域,你也可以在这里改进算法。

你可以通过保留最佳笔画列表来修剪你的场地。

最后通过掷硬币从最好的七个计划中选择。 并发挥第一枪。

射门应用骰子来判断击球的程度,风力条件的变化等。

根据您降落的位置重新制定计划。 绿色改变网格的分辨率。

这一切都需要你拥有

  1. 俱乐部列表以及他们可以达到的最小和最大距离,您还可以存储不良/好点击的百分比并对不良点击应用一些随机性
  2. 洞的地形网格以及地形类型的值,您应该为风险分配值
  3. 对更合适的算法的改进需要你有一个功能,可以将全分辨率的地形变成连接节点的网络(因为很多地形在概念上是相同的,并将它分成网格是强力的)在通往洞的路径上的相关成本(风险),然后它变成了一个旅行推销员问题,你将有现有的算法。