[英]How can I create a global command for a user raw_input(); access inventory list?
我不是真的100%知道如何问这个问题,但是这里有:
我正在艰难地学习Python,并且在Ex上学习。 45,我应该自己创建一个基于文本的游戏。 我不得不拉别人的代码来进行库存(我将在下面提供代码),但是我一生都无法弄清楚:如果用户在任何raw_input()中键入“ inventory”(跨多个类),如何显示清单内容? 我所能想到的就是这个的更复杂的版本:
if raw_input() == "inventory"
print ???
但我不知道该如何显示游戏清单(或???)或如何使“清单”成为全局命令...我知道这看起来非常准,但除非经过研究,否则我不会来这里并试图自己找到答案。 感谢任何可以提供帮助的人,这真令人沮丧!
这是我正在使用的库存系统:
class Item(object):
def __init__(self, name, quantity=1):
self.name = name
self.raw = name.strip().lower()
self.quantity = quantity
class Container(object):
def __init__(self, name):
self.name = name
self.inside = {}
def __iter__(self):
return iter(self.inside.items())
def __len__(self):
return len(self.inside)
def __contains__(self, item):
return item.raw in self.inside
def __getitem__(self, item):
return self.inside[item.raw]
def __setitem__(self, item, value):
self.inside[item.raw] = value
return self[item]
def add(self, item, quantity=1):
if quantity < 0:
print "ERROR."
if item in self:
self[item].quantity += quantity
else:
self[item] = item
inventory = Container("Inventory")
spare_key = Item("SPARE KEY", 1)
rock = Item("ROCK", 1)
print(spare_key in inventory)
一种打印Container
类实例的内容的简单方法:
print "Inventory: [" + ",".join((item[1].name for item in inventory)) + "]"
考虑更改此功能:
def __iter__(self):
return iter(self.inside.items())
对此:
def __iter__(self):
return iter(self.inside.values())
通常,您会期望遍历库存仅产生项目,而不产生带有项目名称和项目的元组。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.