为基于文本的RPG向列表添加随机项

2024-06-26 14:41:15 发布

您现在位置:Python中文网/ 问答频道 /正文

这与我今天早些时候提出的问题("List" Object Not Callable, Syntax Error for Text-Based RPG)相关联。现在我的困境在于将药草添加到玩家的药草列表中。你知道吗

self.herb = []

是开始的药草清单。功能包括:

def collectPlants(self):
    if self.state == 'normal':
    print"%s spends an hour looking for medicinal plants." % self.name
        if random.choice([0,1]):
        foundHerb = random.choice(herb_dict)
        print "You find some %s." % foundHerb[0]
        self.herb.append(foundHerb)
        print foundHerb
    else: print"%s doesn't find anything useful." % self.name

因为foundHerb是随机选择。如何将此项以整洁的方式添加到列表中(当前打印药草名称,然后打印“无”),并允许具有多个相同的药草?你知道吗

这是药草课:

class herb:
    def __init__(self, name, effect):
        self.name = name
        self.effect = effect

草药样品清单(警告:不成熟):

herb_dict = [
    ("Aloe Vera", Player().health = Player().health + 2),
    ("Cannabis", Player().state = 'high'),
    ("Ergot", Player().state = 'tripping')
]

Tags: nameself列表forifdefrandomstate
2条回答

在函数中,考虑如果random.choice([0,1])0,会发生什么。它不会运行if块,因此不会选择任何药草。也许在你的功能中,你可以return False说没有发现草药。然后你可以这样做:

self.herb = []
myherb = collectPlants() # This will either contain a herb or False
if myherb: # If myherb is a plant (and it isn't False)
    self.herb.append(myherb)

使用列表。你知道吗

self.herb = []
foundHerb = 'something'
self.herb.append(foundHerb)
self.herb.append('another thing')
self.herb.append('more stuff')

print 'You have: ' + ', '.join(self.herb)
# You have: something, another thing, more stuff

编辑:我在你的另一个问题中找到了foundHerb的代码(请在这个问题中也发布!),即:

foundHerb = random.choice(herb_dict)

当我看herb_dict

herb_dict = [
    ("Aloe Vera", Player().health == Player().health + 2),
    ("Cannabis", Player().state == 'high'),
    ("Ergot", Player().state == 'tripping')
]
  1. 这是错误的,请使用=进行赋值。==用于测试相等性。你知道吗
  2. 您需要在这些元组的第二项中使用函数。你知道吗
  3. 不要将第二项添加到列表中。像这样:

    self.herb.append(foundHerb[0])
    

相关问题 更多 >