Процедурная генерация для рогаликов: Миллионы, миллионы, миллионы pixel shop!
1212 показов
2.3K2.3K открытий

Создаем список, который хранит в себе все координаты для предметов в определенной части магазина. Далее для каждого предмета мы запускаем бесконечный цикл. В нем мы случайно выбираем координату для него. Если этой координаты НЕТ в списке существующих

А не проще хранить список пустых клеток? Если клетка заполнилась, то эта ячейка с координатами удаляется. Тогда не придется запускать бесконечные циклы, а только один цикл на количество предметов. 

# заполняем массив координатами:
Coord = 0
For i in range(room_array.len):
Room_array[i] = coord
Coord +=1

#Размещаем предметы
For i in range(items_amount):
Rand_array_element = random(0, room_array.len)
Coord = room_array[rand_array_element]
Put(item, coord)
Delete(room_array[rand_array_element])

Как-то так.

Предмет если подбирается, то координата возвращается в массив.

Ответить

Проще. Сначала генерируем n штук уникальных координат , после яего массив с коорлинатами по порядку отдаем предметам. Это стнадартная задача по работе с массиве   которую человек видит сразу после темы про массивы.  Учебнач задача по принципу  вроде - закинуть на шахматное поле фигуры с случайном порядке. 

Ответить

Для начала - в цикле (For i in range(items_amount):) не меняется значение переменной Coord, а это одна из главных идей ее алгоритма
Вернее, у тебя непонятно в псевдокоде, куда именно помещаются предметы случайные - видно, что ты выбираешь случайный предмет, но расположение - неслучайное, т.е. предметы будут лежать подряд.

Ответить