C# 模拟高尔夫比赛策略

C# 模拟高尔夫比赛策略,c#,asp.net,C#,Asp.net,我正在研究一种最原始的高尔夫游戏,在引入某种随机性后,我需要打一个洞。球洞是静态的,我不关心UI方面,因为我只需要在球被击中后在球洞的图形上画一条线,显示球的移动位置 我正在寻找关于如何管理这个难题的逻辑方面的想法的输入,下面是我对这个问题的一些想法,非常感谢您的输入、建议或参考 以特定的精度将孔绘制成阵列,注意表面类型:界外、球道、粗糙、果岭、沙子、水,以及最重要的孔。 绘制区域,如果球包含在其中一个区域内,则设置最大偏离角的参数。例如,孔的第一部分必须在特定角度之间 使用球的当前位置和2中包

我正在研究一种最原始的高尔夫游戏,在引入某种随机性后,我需要打一个洞。球洞是静态的,我不关心UI方面,因为我只需要在球被击中后在球洞的图形上画一条线,显示球的移动位置

我正在寻找关于如何管理这个难题的逻辑方面的想法的输入,下面是我对这个问题的一些想法,非常感谢您的输入、建议或参考

以特定的精度将孔绘制成阵列,注意表面类型:界外、球道、粗糙、果岭、沙子、水,以及最重要的孔。 绘制区域,如果球包含在其中一个区域内,则设置最大偏离角的参数。例如,孔的第一部分必须在特定角度之间 使用球的当前位置和2中包含的区域,定义一个例程以随机选择射击角度,然后移动球,调整轨迹并再次移动。 我知道这不是最优雅的解决方案,但实际上,我们正在寻找一个快速而肮脏的解决方案,因为我只需要做几次,设置它,然后忘记它


从语言的角度来看,我将使用ASP.NET和C来完成此任务。

好的,快速且不太脏:D

具有规划各种路线组合的功能 使用不同的球杆距离 对于一个给定的玩家,将给出不同的进场计划

最佳规划是在正常场(3到5)之间的1到5次冲程,因此你可以通过将场划分为具有一定精度的正方形

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

如果你假设在90%的情况下,每个杆/杆都会击中一定距离,那么每个杆都会落在一定百分比的网格上——让我们假设一个杆会击中200到250码之间,那么它通常会击中125^2*pi-100^2*pi/500*300/4*1500=45格。第一项是最大距离区域,第二项是最小距离,它被整个区域分割,只取1/4,因为油井瞄准的是井眼的大致方向,与任何一侧的角度都不超过45度

这最多重复5次,会给出一个可能的好计划列表,计划数为45比5,7*10^8,需要减少数量,因为最后一个选择没有前4个那么自由,但有不止一个俱乐部,所以我就到此为止

因此,迭代俱乐部及其典型距离,并采用代表场地的网格来进一步减少您拍摄的区域,因为您不会瞄准森林、沙子、水,您可以计算特定拍摄的分数-例如,如果地形接近危险,您可以降低拍摄分数。如果地形不平坦,你可以降低分数,等等

如果不能直接进入孔,还可以通过允许扩展目标区域来改进算法

你可以保留一张最好的笔划列表来修剪你在球场上的行走

最后,掷硬币从最好的七个计划中选择一个。 打第一枪

在击球时,掷骰子决定球的命中程度、风向的变化等

根据着陆地点重新运行计划。 对于绿色,请更改栅格的分辨率

所有这些都需要你有

列出球杆以及它们可以达到的最小和最大距离,您还可以存储坏球/好球的百分比,并对坏球应用一些随机性 钻孔地形的网格,带有地形类型的值,您应该为风险指定值
对更合适的算法的改进要求您拥有一个功能,该功能可以将全分辨率的地形转化为连接节点的网络,因为许多地形在概念上是相同的,将其划分为网格是一种蛮力,在通往孔洞的路径上存在相关的成本风险,然后它会变成一个旅行推销员您可以使用现有算法解决的问题。

这与ASP.Net有什么关系?这是在web环境中完成的。我可以移除标签,但我相信它是适用的。你是在尝试编写一个解谜器还是一个解谜器?解谜器,最终它将显示一个玩家可能在一个类似于它的高尔菲游戏中实际做了什么,这与我自己也在考虑做的事情有点类似