对于我正在制作的基于文本的角色扮演游戏,我有字典概述各种游戏中的宗教,种族等等。这些宗教的一些价值观包括玩家统计数据的增益,例如:
religion_Dict = {'Way of the White': {'buffs': {'intelligence': 5, 'defense': 3},
'abilities': [...],
'description': '...'}}
当我尝试将宗教的stat buff应用于玩家的统计数据时,我的问题就出现了。如果我有一个看起来像这样的玩家类:
class Player(object)
def __init__(self):
...
self.religion = None
self.stats = {'intelligence': 10, 'defense': 8}
现在,让我们说玩家加入宗教Way of the White
,如何识别密钥intelligence
和defense
及其各自的值 - 在字典{{1}内 - 并将它们应用到播放器的religion_dict
字典的值上?
我知道我可以使用stats
或基本for循环来提取键名,但是如何使用它来正确修改相应的玩家统计值?
我确信我只是错过了一个基本概念。无论如何,感谢愿意帮助回答这个简单问题的人!我很感激!
答案 0 :(得分:2)
以下是您将如何解决这个问题的草图:
religion_Dict = {'Way of the White': {'buffs': {'intelligence': 5, 'defense': 3},
'abilities': [...],
'description': '...'}}
buffs = religion_Dict['Way of the White']['buffs']
for key in buffs:
player.stats[key] = player.stats.get(key,0) + buffs[key]
当然,您应该将此逻辑包装在Player类的方法中,但上面的逻辑就是您要寻找的。请注意.get
方法接受第二个参数,如果没有键值,它将返回默认值。因此,此行将为任何统计数据添加1,如果它不存在,则将1加到0。
答案 1 :(得分:1)
这为Player
添加了一种方法,可以将字典中的值分配给玩家统计信息。它使用get
来确保值在字典中,并且包含字段buffs
。如果是,则获取intelligence
和defense
的值,并将其添加到播放器的统计信息中。
class Player(object)
def __init__(self):
...
self.religion = None
self.stats = {'intelligence': 10, 'defense': 8}
def join_religion(religion):
stats = religion_dict.get(religion)
if stats and 'buffs' in stats:
self.intelligence += stats['buffs'].get('intelligence', 0)
self.defense += stats['buffs'].get('defense', 0)
p = Player()
p.join_religion('Way of the White')
答案 2 :(得分:0)
self.stats = religion_Dict['Way of the White']['buffs']