2014-06-08 102 views
0

考虑一个方阵,所有插槽都用零填充。这将是战场。现在,为了放置船只,我通过放置1来表示。一艘船的尺寸可以是1,2,3,也就是说两个或三个连续的方块应该是1.它们也可以是水平的或垂直的。现在,敌人搜寻我的战舰的最佳策略是什么?他不知道我是如何放置我的船。搜索矩阵有什么好的策略?或者在做出“聪明动作”时,如何让CPU成为更好的玩家?战场 - 棋盘游戏策略

  1. 搜索随机
  2. 搜索,当你发现一个攻击相邻块来检查它是否大小2/3的船。
  3. 此外,CPU的初始定位可以基于之前的获胜位置,而不仅仅基于随机数。
  4. 其他想法..... ??

这个想法可以扩展到20 x 20矩阵的多船游戏。一个例子如下。

0 0 0 0 0 0 
0 1 0 0 0 0 
0 0 0 1 1 0 
0 1 0 0 0 0 
0 1 0 0 0 0 
0 1 0 0 0 0 

任何帮助将不胜感激!

+0

什么问题? – bytefire

+0

刚做了必要的编辑 - 谢谢@bytefire –

回答

0

因为你有一艘大小为1的船,你基本上需要枚举所有的领域,并检查邻居的大船。您可以通过使用特定的顺序一样,通过所有的行会节省一些工作:

1 2 3 4 5 6 
7 8 9 10 11 12 
13 ... 

如果检测到更大的船只,你检查以下两个右字段(如果不是出界,你检查的第一个领域,如果它是一艘船的一部分,那么你检查第二)以及两个底部字段(再次边界检查)。使用该遍历,可以确保从不检查左侧和顶部字段以获取更大的船。当你检查更大的船只时,你应该记住你已经访问过多少个职位,并在移动后跳过这些职位。

这只是一个建议,是相对有效的。使用一些内存使用情况后,您可以在检查底部后避免双重访问字段,但这不会导致在现实生活中取得成功。

+0

谢谢@Ivaylo Toskov。是的,我通过枚举这样的方块来完成这个实现。这确实是一种天真的方法的改进。但我期望利用一些数据结构来真正提高性能。我摔倒了,我仍然错过了一些非常有效的东西。 –

+0

没有办法显着提高性能。这是因为你拥有单一舰队,这基本上意味着你需要枚举所有的领域,除了这么小的调整之外,没有“超高效”的方法去做。事实上,使用数据结构实际上可能会降低性能,因为如果数据结构中存在数据结构,您将不得不检查每个字段,但您可以基本上为邻居做到这一点,但仅限于某些字段。 –

+0

声音有效。有关如何让CPU播放器更智能的建议?我的意思是,让它更好地猜测,以更加计算的方式? –