Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Проблема с кодом

Артем Лобочкин Ученик (141), на голосовании 2 недели назад
Я для хоррора пишу код где рандомно будет выбираться лут, но к сожаалению когда вид лута больше одной штуки, он выдает сразу все 2 только поочередно. Например мне выпали документы, документов всего 5 штук, он выдает мне все 5 вместо одной, он пишет вы получили документы их осталось 4 штуки, вы получили документы их осталось 3 и так далее до нуля и в конце он пишет что этот лут удален из списка. Как сделать чтобы он дал мне 1 лут вместо 5
Дополнен 1 месяц назад
Голосование за лучший ответ
Вика Пинколюбова Мастер (1149) 1 месяц назад
У тебя хоррор игра и код пишешь в хоррор стиле в темноте
Артем ЛобочкинУченик (141) 1 месяц назад
Скинул доп. снимок уже в цвете
RatÆCat Оракул (68961) 1 месяц назад
Затонировал монитор
Артем ЛобочкинУченик (141) 1 месяц назад
скинул дом. снимок
Авдей Авдеев Знаток (423) 1 месяц назад
Для того чтобы выбрать только один лут, нужно изменить логику так, чтобы после выпадания одного предмета количество оставшихся уменьшалось на 1, а не на все. Например, можно выбрать один элемент из массива и уменьшить его количество:

loot = ["документы", "оружие", "еда"] # Пример лута
loot_quantity = {"документы": 5, "оружие": 3, "еда": 2} # Количество предметов

import random

# Выбираем случайный лут
chosen_loot = random.choice(loot)

# Выбираем 1 предмет из этого лута
if loot_quantity[chosen_loot] > 0:
loot_quantity[chosen_loot] -= 1
print(f"Вы получили {chosen_loot}. Осталось {loot_quantity[chosen_loot]}")
if loot_quantity[chosen_loot] == 0:
loot.remove(chosen_loot) # Удаляем предмет из списка

Так лут будет уменьшаться по одному элементу, а не
по всей партии.
Артем ЛобочкинУченик (141) 1 месяц назад
Спасибо, немного не понятно, но разберусь, спасибо за помощь. Кст с НГ!!
Авдей Авдеев Знаток (423) Артем Лобочкин, Благодарю, вас тоже.
Илья Маклаков Знаток (308) 1 месяц назад
Вообще с таким скрином плохо видно из-за качества, но я так понимаю ты просто не выходишь из if. То есть тебе выпадают документы их 5, код видит что у тебя выпали документы смотрит по условиям и уменьшает на 1 их количество. Затем он смотрит на следующий if и видит, что условие выполняется и снова уменьшает.
Лучше сделай, при выполнении условия количество -= 1.
+ бонус от меня. Я вижу что у тебя выбор предмета из словаря с лутом проходит через функцию randint(0,4), но во-первых она выбирает, только первые 4 предмета из словаря, то есть предмет "ключ" никогда не выпадет, так как он 5. А также не проще будет реализовать весь выбор через функцию choice (функция встроенная в библиотеку random)? Почитай про эту функцию, она работает со строками, это поможет тебе в оптимизации кода.
Если будут вопросы спрашивай)

 a = {'a':1, 'b':2, 'c':3} 
if a['c'] == 3: #Входит в if
a['c'] = 2 #Заменяет на 2
print(a['c'])
if a['c'] == 2: #Входит в следующий if! А не прекращает работу!
a['c'] = 1 #Заменяет на 1
print(a['c'])
if a['c'] == 1: #Опять входит в if!
a['c'] = 0
print(a['c'])
if a['c'] == 0:
del a['c']

#Сделай один if при выборе и просто вычитать из количества
if random.randint(0, 2) == 2:
a['c'] -= 1
#То есть программа выбирает случайный предмет, а ты просто вычитаешь 1 из их количества
Похожие вопросы