基于Python文本的RPG-武器选择

基于Python文本的RPG-武器选择,python,dictionary,Python,Dictionary,我正在研究一个RPG,希望找到捕获用户输入的最佳方法,并根据用户的选择创建一个类实例。我首先列出了一系列武器及其属性。我是用字典做的 melee_weapons = {'Broad Sword': {'damage':30, 'cost':25}, 'Great Sword': {'damage':40, 'cost':45}, 'Spear': {'damage':20, 'cost':15}} 然后我有了这个简单的武器类 class Weapon: def __init__(

我正在研究一个RPG,希望找到捕获用户输入的最佳方法,并根据用户的选择创建一个类实例。我首先列出了一系列武器及其属性。我是用字典做的

 melee_weapons = {'Broad Sword': {'damage':30, 'cost':25}, 
'Great Sword': {'damage':40, 'cost':45}, 'Spear': {'damage':20, 'cost':15}}
然后我有了这个简单的武器类

class Weapon:

    def __init__(self, name, damage, cost):
        self.name = name
        self.damage = damage
        self.cost = cost
接下来,我有所有武器类别的实例:

broad_sword = Weapon('Board Sword', 30, 25) 
great_sword = Weapon('Great Sword', 40, 45)
最后,我有一个请求输入的函数:

def weapon_selection():
    print(weapons + ranged_weapons)
    wp = int(input('What weapon would you like to pick? Enter the corresponding number'))
    if wp == 1:
        Character.weapon = broad_sword
    elif wp == 2:
        Character.weapon = great_sword

这种方法没有任何固有的问题,但是,如果有更快或更直观的方法,我将非常感激

不需要你的字典

 melee_weapons = {'Broad Sword': {'damage':30, 'cost':25}, 
“大刀”:{“伤害”:40,“代价”:45},“长矛”:20,“代价”:15}

当您在行中手动提供此信息时

broad_sword = Weapon('Board Sword', 30, 25) 
great_sword = Weapon('Great Sword', 40, 45)
如果您想实现一个字典,那么为什么不创建如下类实例:

user_input = 'Great Sword' # or something similar
user_weapon = Weapon(weapon_list[user_input], weapon_list[user_input]['damage'], weapon_list[user_input]['cost'])

通过这种方式,用户提供密钥,您可以自动生成武器,而无需手动为字典中的每个输入创建武器实例

无需使用字典

 melee_weapons = {'Broad Sword': {'damage':30, 'cost':25}, 
“大刀”:{“伤害”:40,“代价”:45},“长矛”:20,“代价”:15}

当您在行中手动提供此信息时

broad_sword = Weapon('Board Sword', 30, 25) 
great_sword = Weapon('Great Sword', 40, 45)
如果您想实现一个字典,那么为什么不创建如下类实例:

user_input = 'Great Sword' # or something similar
user_weapon = Weapon(weapon_list[user_input], weapon_list[user_input]['damage'], weapon_list[user_input]['cost'])

通过这种方式,用户提供密钥,您可以自动生成武器,而无需手动为字典中的每个输入创建武器实例

@StephenStirling很高兴提供帮助:)我希望您能评论到已完成项目的链接,以便我可以查看它!我一定会的!可能需要一点时间才能恢复finish@StephenStirling很高兴为您提供帮助:)如果您能对已完成项目的链接发表评论,我会很高兴,这样我就可以查看它了!我一定会的!可能需要一点时间才能完成