基于文本的Python RPG - 存储武器

时间:2012-09-03 23:08:28

标签: python coding-style python-2.7

我是编程新手,我自学Python,作为一个爱好,我正在制作一个基于文本的RPG。

我的问题是这个;我想存储一个武器,盔甲等清单,可以轻松编辑,而不会搞砸我的整个程序。我的想法是我为他们equipment.py创建了一个单独的模块,并将它们存储在像<; p>这样的列表中

equipment = [ 
#Longsword
w1 = 15
#Axe
w2 = 17
]

我只是导入它并使用分配给它们的值将用于我决定创建的任何战斗引擎。这甚至是正确的吗?可怕的编码约定?我有很多东西需要学习,你要分享的任何智慧都非常感激。

编辑:从下面的优秀答案我开始编码,我的代码看起来如何?

equipment = {

'Longsword':     {  'cost': 50,
                    'damage': 19,
                    'element': 'physical',
                    'description': 'Long steel blade used by the knights of Coamrin. The weight allows it to cleave foes with relative ease.'}

'Estoc':        {   'cost': 45,
                    'damage': 17,
                    'element': 'physical',
                    'description': 'Expertly crafted thin, steel blade designed for thrust and swiping motions.'}

}

任何提示?我已阅读PEP 8,但我的知识不够好,或者在这种特殊情况下没有足够的具体帮助

2 个答案:

答案 0 :(得分:4)

我建议使用python字典(而不是列表)会更好。

equipment = {
              'Longsword': 15,
              'Axe':       17
            }

通过这种方式,您可以将longswords值称为equipment['Longsword'],而不是列在equipment[0]列表中的位置。

将它放在一个单独的模块中可能是一个好主意,可能在包含攻击/防御功能的模块内,以及其他项目效果。

您可能感兴趣的另一个建议(取决于RPG的功能)是为此属性和其他属性设置另一个字典,因此您可以在将来添加其他属性。也就是说,

equipment = {
             'Longsword': {'attack_str': 15, 'defence_str': 15, 'color': 'grey',... etc.}
             }

这允许稍后添加其他功能(不破坏以前的机制)。

答案 1 :(得分:1)

在我看来,在配置文件中将这些值存储在python之外会更好。

例如,ConfigParser的语法即使对于不懂任何编程语言的用户也是可读的。

这也可以让您在游戏中制作武器编辑器,并进行永久性更改。实际上,通过使用字典方法,您需要更改程序运行的文件,这是我试图避免的。