我被告知要制作一个 10x10 field 的船战游戏项目。现在我需要知道如何在现场随机生成船舶位置(这是一个 10x10 数组)。这些字段不能彼此重叠,也不能彼此相邻。它们也可以是水平或垂直的。
我需要放置以下船只: 1艘五田船 1艘四场船 3艘2艘船 3艘两艘船 4艘船为1艘
我真的不知道如何做到这一点。这是我到目前为止所拥有的:
void generateField(int field[][dim])
{
int i,j;
for (i=0; i<dim; i++)
{
for (j=0; j<dim; j++)
{
field[i][j] = 0;
}
}
}
这使得该字段全部为零。我想像我之前说的那样生成船
最佳答案
似乎您想要一个方法,该方法将采用 int (size_of_boat),然后为 x
和 y
选择一个随机数(比方说:2, 5).
您需要做的就是检查您是否可以从那时开始安装该船。
1. 向左走到 size_of_boat。如果你没有找到任何其他“被占用”的位,或者你没有离开棋盘。很好。
2.如果没有,请检查...
3.对...
4. 向下...
如果找到了方向,请将数组中的这些位设置为 true,然后返回 true。 如果没有,则说明你无法将这种尺寸的船只放置在该位置,因此随机搜索另一个位置并重试。
这不是最佳算法,但我确信它足以满足您的需求
关于c - 填充船战游戏板C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26156980/