Понедельник, 11 Ноября 2024, 03:41

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Game maker
sivanДата: Вторник, 08 Мая 2018, 09:27 | Сообщение # 1
уже был
Сейчас нет на сайте
Как сделать так, чтобы рандомные комнаты не повторялись?

room_goto(choose(r_1,r_2,r_3,r_4,r_5,r_6,r_7,r_8,r_9,r_10))


Сообщение отредактировал sivan - Вторник, 08 Мая 2018, 10:44
AlexanderBekkerДата: Вторник, 08 Мая 2018, 12:29 | Сообщение # 2
BekkerDev Studio
Сейчас нет на сайте
Всё предельно просто: тебе нужно добавить все комнаты в список, затем выбирать рандомную из него и удалять её из списка.

Разработчик, композитор и издатель инди-игр в Steam.
Редактор карт: BekkerDev Level Editor 4
Страница разработчика в Steam
Паблик ВК: BekkerDev Studio
Abel399Дата: Вторник, 08 Мая 2018, 14:58 | Сообщение # 3
Surpass your limits. Right now.
Сейчас нет на сайте
Если подробнее, то так:
1) Использовать ds_list (документация)
2) Создать / использовать уже существующий persistent объект
3) В его Create написать что-то вроде:
Код

room_id = 0;
list_rooms = ds_list_create();
ds_list_add(list_rooms, r_1, r_2, r_3, r_4, r_5, r_6, r_7, r_8, r_9, r_10); // Не более 15 за раз
ds_list_shuffle(list_rooms);

4) Создаем User Defined Event 1 (можно так же использовать Alarm):
Код

room_id = 0;
ds_list_shuffle(list_rooms);

5) Создаем User Defined Event 2 (можно так же использовать Alarm):
Код

if (ds_list_size(list_rooms) >= room_id + 1) exit; // Либо любая другая логика аля "выход в меню"
room_goto(list_rooms[| ++room_id]);

Теперь если нужно заново перемешать - вызываем event_user(1) у объекта.
Если перейти к следующей комнате - event_user(2).

P.S> В случае с alarm вызываем через alarm[index] = 1; Производительность не замерял, в теории user-defined быстрее.


Ninja Slayer - 2D Physics Puzzle [cancelled]

Сообщение отредактировал Abel399 - Вторник, 08 Мая 2018, 14:59
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг