我正在製作一個RPG,並且試圖將事情分解成多個文件以更好地組織事情。 (我的意思是,單獨創作的角色超過2000行)。但這是我從未做過的事情,我真的不知道該怎麼做。所以,如果我能得到一些關於如何有效設置事物的一般建議,我會非常感激。除了關於python網站上的模塊的頁面外,我確實一直無法找到關於這個主題的很多內容,但我對此還是有點不清楚。這絕對是目前我在編程中遇到的最混亂,最少討論的事情......而且我討厭提出這樣的模糊問題,但我絕對沒有取得任何進展,希望你們中的一個能讓我走上正確的道路。需要幫助用Python中的多個文件進行編程
我會舉一個具體的例子。
我想將角色的所有屬性和技能都放到一個或兩個列表中,所以我可以更方便地將它們用於函數,而我不知道如何使用另一個文件中的列表作爲參數一個函數。這是我嘗試過的,它似乎應該起作用。我將這個文件導入CharacterCreation,然後使用「StatCalculations.LevelUp(PLAYERSTATLIST)」,但它說''模塊'對象沒有屬性'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
我不得不考慮使用[面向對象編程(http://en.wikipedia.org/wiki/Object_oriented_programming)方法,你的代碼將大大受益 - 認爲這將是多麼艱難如果你在你龐大的玩家統計列表中交換了`BaseHEALTH`和`BaseMANA`,就會發現一個bug。讓每個玩家成爲Player類的對象,並將這些特徵存儲爲類成員,這樣你就可以通過名稱來引用它們,而不用關心如何排序變量。 – sarnold 2011-12-15 03:06:40