2

我必须用 C++ 实现Battleship 游戏。这将是人类计算机的游戏。

除了在游戏开始时定位计算机的船只外,一切都非常简单。计算机的舰船位置应该是随机的。但是我应该如何(最佳地)为船舶选择阵列单元?

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

有任何想法吗?

4

3 回答 3

2

使用链表,其中每个节点都是棋盘上一个正方形的链接。然后,您可以 a) 生成一个随机节点,然后 b) 在放置船只时从列表中删除节点。您可以从放置的船周围移除额外的节点,以便为该船提供一些空间(不希望您的船接触;)

于 2012-05-31T23:34:07.360 回答
2

空间是如此之大,以至于总是有空闲的细胞可以使用,所以反复尝试放置飞船,然后失败,完全没问题。

您可以通过确保您的船只不接触(因为如果对手正在摧毁船只,这可能会给对手提供免费信息)以及通过放置更短的船只来获得足够接近最佳位置的可能性。靠近边缘(以抵消更大的船只更可能在中心附近发现的事实)。

于 2012-05-31T23:27:42.930 回答
0

如果是计算机与计算机,您只需要确保将船只随机放置在整个棋盘上,这样任何船只都不会彼此相邻。

但是,由于您扮演的是人类,因此您可以获得更多创意。这就像游戏中的石头剪刀布一样,您可以通过利用人类倾向来获得优势。

于 2012-06-01T02:23:12.553 回答