Algorithm 战舰游戏中的舰船定位算法 我必须在C++中实现。这将是人类对电脑的游戏

Algorithm 战舰游戏中的舰船定位算法 我必须在C++中实现。这将是人类对电脑的游戏,algorithm,position,Algorithm,Position,一切都很简单,除了在游戏开始时定位计算机的飞船。计算机的船的位置应该是随机的。但我应该如何为舰船选择最佳的阵列单元呢 编写代码来设置船只的随机位置,然后检查附近的单元格是否为空,这可能非常耗时 有什么想法吗?空间太大了,总是有空闲的电池可以使用,所以反复尝试放置飞船,然后失败,是完全可以的 你可以通过确保你的飞船不触碰来实现足够接近最佳的定位,因为如果对手正在摧毁一艘飞船,这可能会给对手提供免费信息,此外,还可以将概率稍高的较短船舶放置在边缘附近,以抵消较大船舶更可能在中心附近被发现的事实。空间

一切都很简单,除了在游戏开始时定位计算机的飞船。计算机的船的位置应该是随机的。但我应该如何为舰船选择最佳的阵列单元呢

编写代码来设置船只的随机位置,然后检查附近的单元格是否为空,这可能非常耗时


有什么想法吗?

空间太大了,总是有空闲的电池可以使用,所以反复尝试放置飞船,然后失败,是完全可以的


你可以通过确保你的飞船不触碰来实现足够接近最佳的定位,因为如果对手正在摧毁一艘飞船,这可能会给对手提供免费信息,此外,还可以将概率稍高的较短船舶放置在边缘附近,以抵消较大船舶更可能在中心附近被发现的事实。

空间如此之大,以至于始终有可用的单元,因此反复尝试放置船舶,然后失败是完全可以的


你可以通过确保你的飞船不触碰来实现足够接近最佳的定位,因为如果对手正在摧毁一艘飞船,这可能会给对手提供免费信息,也可以将概率稍高的较短船舶放置在边缘附近,以抵消较大船舶更可能在中心附近被发现的事实。

使用链接列表,其中每个节点都是指向棋盘上一个正方形的链接。然后,您可以a生成一个随机节点,b在放置船舶时从列表中删除节点。你可以从放置的飞船周围移除额外的节点,让飞船有一些不想让你的飞船接触的空间

使用链表,其中每个节点都链接到电路板上的一个正方形。然后,您可以a生成一个随机节点,b在放置船舶时从列表中删除节点。你可以从放置的飞船周围移除额外的节点,让飞船有一些不想让你的飞船接触的空间

如果是计算机与计算机,你只需确保你将船只随机放置在船上,这样就不会有任何船只彼此相邻


然而,由于你扮演的是人,你可以变得更有创造力。这就像一个石头剪刀游戏,你可以利用人类的倾向获得优势。

如果是计算机对计算机,你只需要确保你将船只随机放置在甲板上,这样就不会有船只彼此相邻


然而,由于你扮演的是人,你可以变得更有创造力。这就像玩石头剪刀一样,你可以利用人类的倾向获得优势。

考虑到棋盘是二维网格,可能不是数据结构的最佳选择;单元有多个相邻单元,因此与使用锯齿状/多维数组相比,最终需要更多的代码来确定相邻单元。每个节点都是连接到电路板上一个正方形的链接。实现你想要的-你可以使用一个属性为X和Y的结构/类正方形,然后你可以用与锯齿阵列完全相同的方法来确定邻居;单元有多个相邻单元,因此与使用锯齿状/多维数组相比,最终需要更多的代码来确定相邻单元。每个节点都是连接到电路板上一个正方形的链接。按照您的意愿实现它-您可以使用具有属性X和Y的结构/类正方形,然后您可以使用与锯齿阵列完全相同的方法来确定邻居。这就是问题所在:如何最佳地将船舶随机放置在整个甲板上,以使所有船舶都不相邻?这就是问题所在问题是:如何以最佳方式在船上随机放置船舶,使所有船舶都不相邻?但阵列大小不必为10x10。我会让它更灵活。重复随机尝试在这里不是解决方案。我想做得最好。随机尝试非常耗时。我并没有写在上面,但船舶不能“接触”在这个游戏中,因为游戏规则告诉这样做;这是必须的。@patryk.beza:1我知道尺寸可以是任何尺寸。我仍然坚持我的主张,因为密集战舰的游戏并不有趣。2然后你应该编辑这个问题。但是数组大小不必是10x10。我会让它更灵活。重复随机尝试在这里不是解决方案。我想做得最好。随机尝试非常耗时。我并没有写在上面,但船舶不能“接触”在这个游戏中,因为游戏规则告诉这样做;这是必须的。@patryk.beza:1我知道尺寸可以是任何尺寸。我仍然坚持我的主张,因为密集战舰的游戏并不有趣。2然后你应该编辑问题。你应该编辑你的问题,说明你说你没有提到的规则。你 应该编辑你的问题,说明你说你没有提到的规则。