Я пытаюсь написать игру RPG и зациклился на том, как вызвать предметы, монстры, квесты и т. Д., Используя единственный уникальный идентификатор, чтобы получить все данные. Это в основном основано на верхнем ответе в this Code Review question.Добавление элемента в инвентарь с использованием уникального идентификатора (python)
Вместо того, чтобы передавать все данные классу Item
, я хотел бы назвать метод или функцию со словарем всех элементов, которые затем передают данные в Item
на основе единственного уникального идентификатора.
Соответствующий код, который я в настоящее время имеют следующий (весь код можно найти here):
inventory.add_item(Item(ListItem.list(1))) #The 1 is a placeholder to specifically get the sword.
class Inventory(object):
def __init__(self):
self.items = {}
def add_item(self, item):
self.items[item.name] = item
class Item(object):
def __init__(self, name, attack, armor, cost, quantity, description):
self.name = name
self.attack = attack
self.armor = armor
self.cost = cost
self.quantity = quantity
self.description = description
class ListItem(object):
# This is a database to hold all the games loot/items
def __init__(self):
# What goes here?
def list(self, itemid):
# Probably don't even need this here? Can it go under __init__?
all_items = {
1: {"name": "Sword", "desc": "A rusty looking sword", "dmg": 5, "arm": 1, "val": 10},
}
return list(all_items[itemid].values())
Вы, кажется, обрабатываете 'ListItem.list' как метод ** **, поэтому вам не обязательно нужно что-либо * в' ListItem .__ init__'. Однако мне не совсем ясно, чего вы пытаетесь достичь. – jonrsharpe
Почему 'ListItem()' класс в первую очередь? Если я не ошибаюсь, это означает, что это будет ** действие **, и в этом случае класс, вероятно, не подходит для него. Мне кажется, что «list» был бы более уместным как метод «Inventory», FWIW. –
Спасибо за ответы. Я новичок в программировании, поэтому пытаюсь понять эти понятия. Чтобы уточнить, чего я пытаюсь достичь: Вместо того, чтобы игрок взял предмет и вызвал инвентарь.add_item (Предмет («меч», 10, 1, 10, 1, «Ржавый меч»)) Я хотел бы «inventory.add_item» (Item (уникальный идентификатор здесь, который ссылается на все данные, которые передадут эти данные классу Item.)) –