我正在進行文本冒險並嘗試讓玩家從房間中拾取物品。我通過讓房間有一個items
屬性這是一個項目模塊中的對象列表。我試圖檢查用戶的輸入是否在列表中,但即使它們是相同的,它說它不在其中。檢查用戶輸入是否在對象列表中
world.py:
class ItemTile(MapTile):
def __init__(self, x, y):
self.items = [items.Bread(), items.Herbs()]
super().__init__(x, y)
items.py:
class Bread(Consumeable):
def __init__(self):
self.name = "Bread"
self.healing_value = 15
self.value = 20
game.py:
elif hasattr(room, "items") and 'take' in action:
player.pick_up(action)
player.py:
def pick_up(self, action):
room = world.tile_at(self.x, self.y)
item = action[5:]
item = item.title()
print(item, room.items[0])
if item in room.items:
self.inventory.append(item)
room.items.remove(item)
print('You pick up the {}'.format(item))
else:
print("You see no such thing.")
例如,如果我輸入'take bread'
(只是打印,以顯示它們是相同的):
Bread Bread
You see no such thing.
而且我的IDE說,耗材類下self.name
沒有得到解決。
字符串「Bread」與列表中的「Bread」實例不同**,即使它們具有相同的表示形式。考慮將字符串名稱映射到實際對象的字典。此外,它看起來像麪包應該是'Consumeable'的*實例*,而不是*子類*。 – jonrsharpe
@jonrsharpe:你可以在上面的編輯中查看我的字典代碼嗎?我認爲我還沒有真正理解不同元素的表示。對不起:/關於子類,我正在關注一個教程 - 我並不知道更好的XD –
我建議你用你的新嘗試的適當[mcve]寫一個新問題,建立在下面答案的教導你的基礎上。如果你改變了這個問題,你會使答案失效。 – jonrsharpe