Сборка игры, требуется совет по инвентарям - PullRequest
0 голосов
/ 18 декабря 2018

Я сейчас работаю над игрой, в которой мне нужно немного помочь.Знаете ли вы, что в большинстве игр есть элемент, в котором вы можете создавать вещи с помощью вещей, которые у вас есть, например Minecraft?Вот что я пытаюсь здесь:

def craftitem(item):
    if item == 'applepie':
        try:
            inventory.remove('apple')
            inventory.remove('apple')
            inventory.remove('apple')
            inventory.remove('apple')
            inventory.append('applepie')
            print('Item crafted successfully.')
        except ValueError:
            print('You do not have the ingredients to craft this.')

Это определение.Я использовал команду try, чтобы добиться того, что может сработать: использовать вещи в инвентаре, чтобы создать что-то другое, и добавить его обратно в качестве результата.

И поскольку код выполняется по порядку, то есть если что-то выполняется ПРАВИЛЬНО,Следующая вещь работает.Если есть ошибка, она не запустится дальше.Вот проблема: если у вас нет ингредиентов для его изготовления, он все равно вырвет все ваши вещи из инвентаря и ничего не вернет.

Вот что я вижу:

Работает:

>>>inventory = ['apple','apple','apple','apple']
>>>
>>>craftitem('applepie')
Item crafted successfully.
>>>
>>>>inventory
['applepie']

Не работает:

>>>inventory = ['apple','apple','apple'] #Need one more apple
>>>
>>>craftitem('applepie')
You do not have the indredients to craft this.
>>>
>>>inventory
[]

Код переписывается, исправления или советы приветствуются.

Я новичок в python, только начал как месяц назад.

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

Вскоре вы поймете, что хотите использовать классы, чтобы справиться с этим.Таким образом, ваши объекты будут Инвентарь, Предмет, Рецепт и т. Д.

Но чтобы дать вам реальный совет на том уровне, на котором вы уже находитесь, вы можете попробовать сделать это следующим образом:

recipes = {'applepie': [('apple', 4)],
           'appleorangepie': [('apple', 4), ('orange', 2)]}

inventory = {'apple': 8, 'orange': 1}


def craft_item(item):
    ingredients = recipes.get(item)
    for (name, amount) in ingredients:
        if inventory.get(name, 0) < amount:
            print('You do not have the ingredients to craft this.')
            return
    for (name, amount) in ingredients:
        inventory[name] -= amount
    print('Item crafted successfully.')


craft_item('applepie')
print(inventory)

craft_item('appleorangepie')
print(inventory)

Вывод:

Элемент создан успешно.

{'apple': 4, 'orange': 1}

У вас нет ингредиентов для его изготовления.

{'яблоко': 4, 'апельсин': 1}

0 голосов
/ 18 декабря 2018

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

num_apples = sum(item == 'apple' for item in inventory)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...