战舰AI关于在某些条件下下沉的部分

时间:2013-05-16 22:35:31

标签: java algorithm

我在查找在某些条件下是否有可能为战列舰的沉没部分编写有效的AI时遇到了一些麻烦。

条件是:

  • 最短船的长度甚至可以是1.你可以在开始时知道它,当游戏经理给你放置船只阵列时
  • 船舶不能重叠,但它们可能相邻
  • 游戏经理告诉你,你的最后一次射击是打击,沉没还是未命中。没有关于您击中/沉没的船的长度的信息
  • 游戏管理员使用两种方法与我的玩家进行交流:第一种方法询问射击位置,第二种方法告诉其结果等等

嗯,我无法正式表达的是沉船的长度。一旦我沉没了船,它就无法理解它的长度。

我想用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则再一次“转动消耗”,但我不知道他是如何处理这个事情的......

0 个答案:

没有答案