0

这一切都是全新的,所以请耐心等待。我不知道我不知道什么。

每隔一两秒,我就想要从 20 个池中的 5 个随机对象列从右侧生成。我不知道从哪里开始是如果我希望在至少 2 列中没有重复相同的对象。

列从右侧开始生成并向左移动,第一列显然是免费的,但是我如何不允许第一列中的任何对象位于第二和第三列。以及任何从第 2 到第 3 和第 4 等等?

第 1-3 列可以有数字 1-15,然后第 4 列可以再次开始有 1-5,除了 20 中未使用的另一个。

不确定这是否可怕。

4

2 回答 2

1

也许使用敌人的“ds_stack”并从中产生它们。

enemyStack = ds_stack_create();
ENEMY_AMOUNT = /*AMOUNT OF ENEMIES*/

创建一个敌人数组,然后使用“for”循环将它们添加到其中。

for (var i=0;i<ENEMY_AMOUNT;i++)
{
    ds_stack_push(enemyStack,enemy[i]);
}

然后当你想要生成它们时

for (var i=0;i<SPAWN_AMOUNT;i++)
{
    instance_create(xx,yy,ds_stack_pop(enemyStack);
}

记得销毁堆栈

ds_stack_destroy(enemyStack);
于 2016-02-27T07:58:31.587 回答
0

您不知道如何比较两个对象是否相等。游戏制作者为每个对象创建一个唯一索引,您可以通过object_index()函数获取该索引。此外,您可能不知道如何处理 [数据结构][1]。(在这种情况下,数组不是最优的)

首先,您初始化一个包含所有类的数据结构,您可以从中随机选择要创建的敌人。然后你随机选择一个并从数据结构中删除那个 obj ,这样它就不会在下一次随机抽取中被选中。

于 2016-02-15T02:26:21.117 回答