所以爲了幫助我學習Python,我正在構建一個簡單的基於文本的小遊戲。我正在研究文件的最高級別結構。到目前爲止,我有main.py,input.py和commands.py。Python導入循環和頂級程序結構
main.py
from input import *
x = 1
start()
input.py
from commands import *
def inputLoop():
inString = input('::> ')
tokens = inString.split(' ')
cmd = tokens[0]
args = tokens[1:]
if cmd != '':
try:
commands[cmd](args)
except KeyError:
print('Command not found.')
print('\n')
inputLoop()
def start():
inputLoop()
commands.py
def quit(arg):
input('Goodbye!')
exit()
def echo(arg):
print(' '.join(arg))
commands = {
'exit' : quit,
'echo' : echo
}
正如你可以看到主.py導入input.py,導入commands.py。這一切都很好,我可以有效地將文本輸入映射到函數,併成功傳遞參數。我遇到的麻煩是使command.py中的函數可以訪問main.py中聲明的變量的正確方法。如果我從commands.py中導入main.py,它會創建一個導入循環。我知道我錯過了一些高層次的設計模式來把這件事整合在一起。
也許我做了一個主類,一個導入類和一個指揮官類,並通過每個構造函數向下傳遞主類的實例,直到指揮官類可以引用它爲止,但對我來說這似乎很笨拙和不雅。
你會如何構建這個程序?
我的想法更像是命令需要訪問玩家和敵人的類的實例,但是這將爲該工作了。感謝您的建議! – aurath