【问题标题】:Text Based Python RPG - Storing Weapons基于文本的 Python RPG - 存储武器
【发布时间】:2012-08-28 14:35:15
【问题描述】:

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

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

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,但我的知识还不够好,或者在这种特殊情况下没有足够具体的帮助

【问题讨论】:

  • RPG 标签指的是最初由 IBM 开发的报告程序生成语言,当时角色扮演游戏完全是另外一回事。

标签: python coding-style python-2.7


【解决方案1】:

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

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

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

把它放在一个单独的模块中可能是个好主意,也许放在一个包含攻击/防御功能和其他物品效果的模块中。

.

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

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

这允许以后添加额外的功能(不破坏以前的机制)。

【讨论】:

  • 这很有帮助!我现在正在编码,这是迄今为止我最头疼的问题。所以我为字典中的项目制作字典?我不知道我能做到这一点。我是一个快乐的程序员!你帮了大忙!
【解决方案2】:

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

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

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

【讨论】:

  • 我已经收藏了它以供学习,目前它似乎有点超出我的范围,但感谢您的智慧!
猜你喜欢
  • 2019-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-02
  • 1970-01-01
  • 1970-01-01
  • 2016-05-09
  • 1970-01-01
相关资源
最近更新 更多