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