c - 填充船战游戏板C

标签 c arrays random

我被告知要制作一个 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),然后为 xy 选择一个随机数(比方说:2, 5).

您需要做的就是检查您是否可以从那时开始安装该船。
1. 向左走到 size_of_boat。如果你没有找到任何其他“被占用”的位,或者你没有离开棋盘。很好。
2.如果没有,请检查...
3.对...
4. 向下...

如果找到了方向,请将数组中的这些位设置为 true,然后返回 true。 如果没有,则说明你无法将这种尺寸的船只放置在该位置,因此随机搜索另一个位置并重试。

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

关于c - 填充船战游戏板C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26156980/

相关文章:

javascript - 如何在不点击按钮的情况下随机显示数组?

java - 获取随机数,数字越大越不可能

C:链接列表和指针到指针

c - GDB 在 PLT 部分显示不正确的跳转地址

c - 在 For 循环中 fork() 发生了什么

c# - 将整数数组传递给 ASP.NET Web API?

c - 有没有更好的方法来读取 C 中的复杂二进制数据?

Java如何获得适合虚拟机限制的最大字节数组大小

c - 填充作为 C 中的参数传递的固定大小的预分配字符串

计算随机圆圈位置的算法,使它们不重叠