2015-10-17 73 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']) 

試試這個。