我目前正在开发一款小游戏,但遇到了一些我无法弄清楚的问题。
我有一个包含 5 个项目的数组,这些项目代表不同的位置,如下所示:
[1, 2, 3, 4, 5]
随着玩家深入游戏,这些基本上是用于放置对象的不同线条。
每 5 秒就会出现一次新对象,这些对象来自另一个数组,看起来像这样:
[1, 2]
// 1 = single item
// 2 = double item
1 和 2 是不同类型的对象,都需要不同数量的行。
问题是这些项目有时会重叠,我不知道如何阻止这种情况。
您可以从输出中看到问题:
Items: [1, 2]
[Item of type 1] line: 3
[available lines] [1, 2, 3, 4, 5]
[Item of type 2] line: 2
[available lines] [1, 2, 4, 5]
[1, 5]
所以项目 1(1 行)放在第 3 行,但是对于项目 2(2 行),第 2 行是选择的,因为它是 2 行宽,这将与我的第一个项目重叠。
所以基本上对于第 2 项,只能选择第 1 行和第 4 行,但我似乎找不到任何只会选择这些的逻辑。
它可能会扩展到大约 20 行,包含更多对象,所以我需要找到一种方法来选择下一个可用的行。
关于如何开始这方面的任何想法?
我目前使用的是这个:
var random = Math.floor(Math.random() * (start_lines.length - 1));
var line = start_lines[random];
// If it's a barrier, delete 2 rows instead (35)
if(type == 2) {
if(line == 5) {
xPos = this._lines[random - 1] - 35;
start_lines.splice(random - 1, 2);
} else {
xPos = this._lines[random] - 35;
start_lines.splice(random, 2);
}
} else {
start_lines.splice(random, 1);
}