Python - 使用字典的基于文本的RPG库存系统

时间:2015-10-17 20:52:09

标签: python

我正在尝试为我的游戏制作库存系统。我可以更新角色的库存,但我希望能够添加项目,而不是更新它们。例如(下面)我想将妖精的库存添加到角色中,这样角色就会拥有3个生命药水,15个硬币和1把剑。

char = {'name' : "Hero",
        'class' : "Default",
        'lvl': 1,
        'xp': 0,
        'lvlNext' : 25,       
        'stats' : {'str': 1,
                   'dex' : 1,
                   'int' : 1,
                   'atk' : [5, 12],
                   'hp' : 20,
                   'maxHp' : 20},      
        'inv' : {'Coins': 10,
                 'Health potion' : 1 }
        }

goblin = {'name' : "Goblin",
        'class' : "Monster",
        'lvl': 2,
        'xp': 80,
        'stats' : {'atk' : [3, 7],
                   'hp' : 15,
                   'maxHp': 15},
        'inv': {'Coins': 5,
                'Health potion': 2,
                'Sword': 1}
        }


for k, v in char['inv'].items():
    print("\n------Char-----")
    print("Name:", k )
    print("Value:", v)
    print("-----Char-----")


for k,v in goblin['inv'].items():
    print("\n-----goblin-----")
    print("Name:", k )
    print("Value:", v)
    print("-----goblin-----")

char['inv'].update(goblin['inv'])

for k, v in char['inv'].items():
    print("\n------Char-----")
    print("Name:", k )
    print("Value:", v)
    print("-----Char-----")

输出是:

>>> 

------Char-----
Name: Coins
Value: 10
-----Char-----

------Char-----
Name: Health potion
Value: 1
-----Char-----

-----goblin-----
Name: Coins
Value: 5
-----goblin-----

-----goblin-----
Name: Sword
Value: 1
-----goblin-----

-----goblin-----
Name: Health potion
Value: 2
-----goblin-----

------Char-----
Name: Coins
Value: 5
-----Char-----

------Char-----
Name: Sword
Value: 1
-----Char-----

------Char-----
Name: Health potion
Value: 2
-----Char-----
>>> 

整个计划在这里:http://pastebin.com/4U9hpbWW

1 个答案:

答案 0 :(得分:1)

def update_inv(inv1, inv2):
    """
    update inv1 dict with inv2 dict
    """
    for k,v in inv2.items():
        if k in inv1:
            inv1[k] += inv2[k]
        else:
            inv1[k] = inv2[k]


update_inv(char['inv'], goblin['inv'])

试试这个。