【问题标题】:Need help programming with multiple files in Python需要帮助在 Python 中使用多个文件进行编程
【发布时间】: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 方法中受益匪浅——考虑一下如果你在巨大的列表中交换BaseHEALTHBaseMANA 会很难找到一个错误的球员统计数据。让每个玩家成为Player 类的对象,并将特征存储为类成员,这样您就可以按名称引用它们,而不必关心像这样对变量进行排序。
  • 如果您正在学习 oop,[en.wikipedia.org/wiki/Single_responsibility_principle] 应该是您阅读 sarnold 的链接后首先阅读的内容。不知何故,最有才华的软件人会忘记它,它对于良好的类设计非常重要。
  • 来自 pyInTheSky 的链接应该是:en.wikipedia.org/wiki/Single_responsibility_principle -- 末尾没有 ] 字符。

标签: python file list function import


【解决方案1】:

所以,如果我能就如何有效地进行设置等获得一些一般性建议。

第 1 步。阅读 Python 库。挑选十几个“相关”的。如果您查看 Internet 协议部分,您会发现许多东西在许多库之前都被分解了。

第 2 步。想想您从阅读这些库中学到了什么。你读得越多,就会出现更多的原则。

提示。 “模块”是一个单一的、可重用的文件,主要由类和函数定义组成。

【讨论】:

    【解决方案2】:

    这里有一个小例子可以帮助你。你可以用像 randrange 之类的东西来初始化基值。这些类中的每一个都可以放入文件中并作为模块导入,无论您如何组织。祝你好运

    import random
    
    class PlayerAttributes(object):
    
        def __init__(self):
            self.health      = 0
            self.mana        = 0
            self.stamina     = 0
            self.capacity    = 0
            self.defense     = 0
            self.reset_attributes()
    
        def level_up(self):
            self.level_health()
            self.level_mana()
            #etc
    
        def reset_attributes(self):
            self.reset_health()
            self.reset_mana()
            self.reset_stamina()
            self.reset_capacity()
            self.reset_defense()
    
        def get_health(self):
            return self.health
    
        def reset_health(self):
            self.health = base_health
    
        def level_health(self):
            self.health += (self.endurance/2) + (self.strength/2)
    
    
    class Equipment(object):
    
        def __init__(self):
            self.equipment_dict     = {}
            self.currently_equipped = None
    
        def set_equipped_weapon(self,weapon_name)
            self.currently_equipped = weapon_name
    
        def add_item(self,item):
            self.equipment_dict[item.name] = item
    
    class Item(object):
    
        def __init__(self,name,hp,attack,defense,weight):
            pass #put stuff in here, etc
    
    
    class Player(object):
    
        def __init__(self):
            self.attributes = PlayerAttributes()
            self.backpack   = Equipment()
            self.backpack.add_item(Item("dagger",5,10,0,2))
    
        def level_up(self):
            self.attributes.level_up()
    

    【讨论】:

      猜你喜欢
      • 2012-07-03
      • 1970-01-01
      • 1970-01-01
      • 2015-11-12
      • 2015-01-14
      • 2015-11-27
      • 2015-01-12
      • 2011-08-22
      • 1970-01-01
      相关资源
      最近更新 更多