Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
填充船战斗游戏板C_C_Arrays_Random - Fatal编程技术网

填充船战斗游戏板C

填充船战斗游戏板C,c,arrays,random,C,Arrays,Random,我被告知制作一个具有10x10场的Shippattle游戏项目。现在我需要知道如何在现场随机生成飞船的位置(10x10阵列)。这些字段不能相互重叠,也不能相邻。它们也可以是水平或垂直的 我需要放置以下船舶: 一船五场 一船四场 三场两船 三艘两艘的船 一艘四艘船 我真的不知道该怎么做。这就是我到目前为止所做的: void generateField(int field[][dim]) { int i,j; for (i=0; i<dim; i++) {

我被告知制作一个具有10x10场的Shippattle游戏项目。现在我需要知道如何在现场随机生成飞船的位置(10x10阵列)。这些字段不能相互重叠,也不能相邻。它们也可以是水平或垂直的

我需要放置以下船舶: 一船五场 一船四场 三场两船 三艘两艘的船 一艘四艘船

我真的不知道该怎么做。这就是我到目前为止所做的:

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

对于(i=0;i似乎需要一个方法,该方法将取int(船的大小),然后为
x
y
选择一个随机数(假设为:2,5)

你所需要做的就是检查你是否能从那一点开始适应那艘船。
1.向左看船的大小。如果你没有找到任何其他“被占用”的位置,或者你没有从船上下来。很好。
2.如果没有,请检查…
3.对…
4.向下

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


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

是否可以放置前几艘船,使其他船只没有剩余空间?那么任务将更具挑战性。否则,它归结为逐个放置。您将需要一个碰撞测试例行程序(“给定一条长度为l的船,从x,y开始,方向为N,W,S或E,它是否重叠或离开边界或有邻居?”)然后你在船上迭代;一次又一次地随机选择候选起始坐标和方向,直到你的例行程序显示ok。