填充船战斗游戏板C.

时间:2014-10-02 08:26:51

标签: c arrays random

我被告知制作一个10x10场地的船舶比赛项目。现在我需要知道如何在现场随机生成船的位置(这是一个10x10阵列)。这些字段不能彼此叠加,它们不能彼此相邻。它们也可以是水平或垂直的。

我需要放置以下船只: 1艘五个领域的船 1艘四场船 2艘三场战舰 3艘船两艘 4艘船只

我真的没看到我能做到这一点。这就是我到目前为止所做的:

void generateField(int field[][dim])
{
    int i,j;
    for (i=0; i<dim; i++)
    {
        for (j=0; j<dim; j++)
        {
            field[i][j] = 0;
        }
    }
}

这使得该字段全为零。我想像之前说的那样生成船只

1 个答案:

答案 0 :(得分:2)

好像你想要一个接受int(size_of_boat)的方法,然后为xy选择一个随机数(比方说:2,5)。

您需要做的就是检查您是否可以从该点开始适合该船 1.左转进入size_of_boat。如果你没有找到任何其他“占用”位,或者你没有离开董事会。不错。
2.如果没有,检查......
对... ... 下来......

如果找到了方向,请将数组中的这些位设置为true,然后返回true。 如果没有,这意味着你不能把那个大小的船放在那个位置,所以随机搜索另一个位置再试一次。

这不是最佳算法,但我确信它足以满足您的需求