我正在用python重新制作一个游戏,菜单文件和游戏文件是分开的。菜单将游戏文件导入为模块,并在需要时调用它。但是,我希望确定声音和难度的变量从菜单文件传递到游戏文件,因为这些选项是由用户在菜单中选择的。
我完全不确定如何执行此操作,因此这是我导入和调用python游戏文件的方式:
import SpaceInvaders
SpaceInvaders.SpaceInvaders().mainLoop()
,我想通过参数'sound'和'difficulty',它们的值是字符串。
我也调用了主循环函数,但是变量需要在SpaceInvaders类中可用,因此我可以将它们分配给 self.sound 和 self.difficulty ,不在主循环中使用。
答案 0 :(得分:1)
如果您想将sound
的{{1}}和difficulty
传递给mainLoop
的{{1}},则使SpaceInvaders
接受它们作为参数,然后您将能够发送给他们:
mainLoop
要回答其他问题“这就是问题,我不希望它们出现在主循环中,我希望它们在SpaceInvaders类中:(“ -执行此操作:
SpaceInvaders.SpaceInvaders().mainLoop(sound, difficulty)
答案 1 :(得分:0)
用法示例:
python somegame.py hello args --difficulty medium
如何使用sys.argv
创建示例:
echo 'import sys;print(sys.argv)' >> test.py
python test.py okay okay --diff med
输出:
['1.py', 'okay', 'okay', '--diff', 'med']
使用sys.argv
的非常基本的示例:
import sys
import SpaceInvaders
print(sys.argv)
# step through using pdb
# see: https://docs.python.org/3/library/pdb.html
import pdb;pdb.set_trace() #print(dir(), dir(SpaceInvaders))
# 'n' enter, 'n' enter
# set self.stuff
# create the class
invade = SpaceInvaders.SpaceInvaders(sys.argv)
# pass argv to mainLoop
invade.mainLoop(sys.argv)
和SpaceInvaders.py
中的
class SpaceInvaders(object):
def __init__(self, args):
print(args)
self.difficulty = # some var from args
import pdb;pdb.set_trace()
def mainLoop(self, args):
print(args)
如果您想真正结帐:
argparse
的结帐示例