2015-10-17 36 views
-1

我正在尝试为我的游戏制作库存系统。我可以更新角色的广告资源,但我希望能够添加项目,而不是更新它们。例如(下图)我想把角色的地图加到角色身上,这样角色将会拥有3种生命药水,15种硬币和1把剑。Python - 使用字典的基于文本的RPG库存系统

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

你应该完全去学习课程。他们擅长制作游戏! –

回答

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']) 

试试这个。