我有一个问题,虽然我不确定使用什么语言。我对如何在不使用全局变量的情况下从其他模块访问主驱动程序模块中定义的画布有点困惑。例如,我在 driver.py 中实例化了画布,但我试图从 Level.py 中绘制。就上下文而言,它最终将读取文本文件并根据从中提取的数据绘制地图,用于 RPG 游戏。这是我的代码:
驱动程序.py:
import tkinter
import Level
HEIGHT = 1024
WIDTH = 800
TILE_SIZE = 32
VERTICAL_TILES = HEIGHT//TILE_SIZE
HORIZONTAL_TILES = WIDTH//TILE_SIZE
root = tkinter.Tk()
root.title("RPG Land")
window = tkinter.Canvas(root,width= WIDTH, height=HEIGHT )
lev = Level.LevelMgr()
lev.loadLevel()
lev.drawLevel()
window.pack()
root.mainloop()
Annnd Level.py:
import tkinter
from driver import window
class LevelMgr:
def __init__(self):
self.levelData = []
self.visibleLevel = []
self.tileColors = {
0 : 'empty',
1 : 'wall',
2 : 'bush' }
def loadLevel(self):
fyle = open('levels/level1','r')
count = 0
for lyne in fyle:
self.levelData.append(lyne)
count += 1
def drawLevel(self):
currentY = 0
currentX = 0
for col in self.levelData:
currentY += 32
for t in col:
window.create_rectangle(currentX, currentY, 32, 32, fill="blue")
currentX += 32
任何有关如何更好地构建程序的建议也将不胜感激。访问其他命名空间时,这样做的正确方法是什么?我是否需要在 driver.py 上具有“导入级别”以及在 Level.py 中具有“导入驱动程序”?我对这样一个程序的基本结构有点困惑。