【发布时间】:2012-01-20 19:48:29
【问题描述】:
我正在制作 RPG,并尝试将内容拆分为多个文件以更好地组织内容。 (我的意思是,仅角色创建就超过 2000 行。)但这是我从未做过的事情,我真的不知道该怎么做。因此,如果我能就如何有效地进行设置等获得一些一般性建议,我将不胜感激。除了我确实阅读过的python网站上关于模块的页面之外,我真的无法找到关于这个主题的太多内容,但我仍然有点不清楚。这绝对是迄今为止我在编程中遇到的最令人困惑、谈论最少的事情……我确实讨厌问这样模糊的问题,但我自己绝对没有取得任何进展,所以我我希望你们中的一个能让我走上正确的道路。
我还会举一个具体的例子。
我想将角色的所有统计数据和技能放入一个或两个列表中,这样我可以更轻松地将它们与函数一起使用,但我不知道如何使用来自另一个文件的列表作为参数功能。这是我尝试过的,它似乎应该工作。我将此文件导入 CharacterCreation,然后只使用“StatCalculations.LevelUp(PLAYERSTATLIST)”,但它显示“'module' object has no attribute 'LevelUp'”。
我做错了什么?
from CharacterCreation import BaseHEALTH, BaseMANA, BaseSTAMINA, BaseCAPACITY, BaseDEFENSE, STRENGTH, ENDURANCE, AGILITY, INTELLIGENCE, PERSONALITY, BaseSTRENGTH, BaseENDURANCE, BaseAGILITY, BaseINTELLIGENCE, BasePERSONALITY, PLAYERLEVEL, PLAYERNAME
def LevelUp(*PLAYERSTATLIST):
HEALTH = BaseHEALTH + ( ENDURANCE / 2 ) + ( STRENGTH / 5 )
MANA = BaseMANA + INTELLIGENCE + ( ENDURANCE / 10 )
STAMINA = BaseSTAMINA + ( STRENGTH / 5 ) + ( ENDURANCE / 5 )
CAPACITY = BaseCAPACITY + ( STRENGTH / 5 ) + ( ENDURANCE / 10 )
DEFENSE = BaseDEFENSE + ( ENDURANCE / 10 ) + ( AGILITY / 10 ) + ( STRENGTH / 10 )
PLAYERSTATLIST = [HEALTH, MANA, STAMINA, CAPACITY, DEFENSE, BaseHEALTH, BaseMANA, BaseSTAMINA, BaseCAPACITY, BaseDEFENSE, STRENGTH, ENDURANCE, AGILITY, INTELLIGENCE, PERSONALITY, BaseSTRENGTH, BaseENDURANCE, BaseAGILITY, BaseINTELLIGENCE, BasePERSONALITY, PLAYERLEVEL, PLAYERNAME]
return PLAYERSTATLIST
【问题讨论】:
-
我不得不认为你的代码会从使用Object Oriented Programming 方法中受益匪浅——考虑一下如果你在巨大的列表中交换
BaseHEALTH和BaseMANA会很难找到一个错误的球员统计数据。让每个玩家成为Player类的对象,并将特征存储为类成员,这样您就可以按名称引用它们,而不必关心像这样对变量进行排序。 -
如果您正在学习 oop,[en.wikipedia.org/wiki/Single_responsibility_principle] 应该是您阅读 sarnold 的链接后首先阅读的内容。不知何故,最有才华的软件人会忘记它,它对于良好的类设计非常重要。
-
来自 pyInTheSky 的链接应该是:en.wikipedia.org/wiki/Single_responsibility_principle -- 末尾没有
]字符。
标签: python file list function import