我在查找在某些条件下是否有可能为战列舰的沉没部分编写有效的AI时遇到了一些麻烦。
条件是:
嗯,我无法正式表达的是沉船的长度。一旦我沉没了船,它就无法理解它的长度。
我想用density approach根据游戏船的静止长度估算射击位置,但如果没有系统来获得沉没船的长度,我的密度永远不会变得“更聪明” 。目前,我只保存每次击中的北/南/东/西点,并在我的筹码为空时考虑完成的工作。当然,这非常耗费精力。
我试着澄清我在问什么:假设你有一个二维数组,你可以用这种方式跟踪你的射击结果:
u =未知地点
m =你在x,y上拍摄,游戏经理告诉你“小姐”
h =你在x,y上射击,游戏经理告诉你“击中”
s =你在x,y上射击,游戏经理告诉你“沉没”
假设董事会是5 * 5.首先你有这个:
1 2 3 4
1 u u u u
2 u u u u
3 u u u u
4 u u u u
假设你在2,3上射击并且游戏经理告诉你“击中”,现在你有:
1 2 3 4
1 u u u u
2 u u h u
3 u u u u
4 u u u u
好的,现在你开始环顾你的最后一枪了。无论你是使用密度方法还是使用一堆N / S / E / W点。假设您的算法提出了3,3。这次是错过:
1 2 3 4
1 u u u u
2 u u h u
3 u u m u
4 u u u u
所以现在你尝试2,2,这是一个打击:
1 2 3 4
1 u u u u
2 u h h u
3 u u m u
4 u u u u
现在让我们说2,1并且游戏经理告诉你“沉没”:
1 2 3 4
1 u u u u
2 s h h u
3 u u m u
4 u u u u
嗯:知道船只可能相邻,你怎么知道你刚刚沉没的船的长度而不是在每个N / S / E / W点上射击? 在这种情况下,你需要在2,4和1,3上拍摄以确定你沉没的东西,并且它变得消耗。如果你想象一个更大,更人性化的电路板,事情就会变得更加耗费人力。不确定的。
所以问题很简单:没有什么比N / S / E / W耗时更好的&&不确定的方法?
希望我能清楚地解释我的问题。
P.S。 我知道this question,但是我不能读C#语言:几个月前刚刚开始使用java,顺便说一句,如果有人愿意解释我的Dreadnought算法,我会很高兴:)
P.S。 2 我也知道this(参见最后的插图)据我所知,事情看起来完全相同,只是他认为最小长度= 2。我总是可以编码2个算法(如果我检测到最小长度> 1,如果最小长度= 1则再一次“转动消耗”,但我不知道他是如何处理这个事情的......