2016-02-11 6 views
0

Полностью новый для всего этого, так что несите меня. Я не знаю, чего не знаю.Нерест уникальных групп Разработчик игры

Каждые секунды или два я хочу, чтобы столбец из 5 случайных объектов из пула 20 появлялся справа. Я не могу понять, с чего начать, если я хочу, чтобы повторений одного и того же объекта не было, по крайней мере, для двух столбцов.

Столбцы начинают нереститься справа и оставляют свой путь слева, первый столбец, очевидно, свободен, но как я не могу позволить ни одному из объектов от первого быть во 2-м и 3-м. и любой из 2-го, чтобы быть в 3-м и 4-м и так далее?

колонны 1- 3 может иметь число 1-15, а затем колонку 4 может начать с 1-5 раз, в дополнение к другой неиспользованными из 20.

не уверен, если это чудовищно или нет.

ответ

0

Вы не знаете, как сравнивать, если два объекта равны. Для каждого создателя игрового объекта создается уникальный индекс, который вы можете получить через функцию object_index(). Также вы, вероятно, не знаете, как обращаться с [структурами данных] [1]. (массивы не являются оптимальными в этом случае)

Сначала вы инициализируете структуру данных со всеми классами, из которых вы можете произвольно выбирать врага для создания. Затем вы выбираете один случайный и удаляете obj из структуры данных, поэтому он не будет выбран в следующей случайной ничьей.

1

Возможно, используйте «ds_stack» врагов и выпустите их из этого.

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

Создайте массив врагов, а затем используйте цикл «для», чтобы добавить их в него.

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); 

 Смежные вопросы

  • Нет связанных вопросов^_^