首页 > 解决方案 > 在模块之间传递变量的更新值

问题描述

我在 pygame 中有两个模块。一个 (game_manager) 负责创建游戏以及您可以在那里进行的所有活动。另一个(window_manager)负责更新游戏窗口并绘制所有元素。

在重构代码以创建新的游戏模式时,我遇到了一个问题。

我想将变量 DECK_PLAYER 从 game_manager 传递给 window_manager:

# IN GAME_MANAGER.py
TABLERO = []
DECK_PLAYER = []

<some code>

def set_tablero(size):
    global TABLERO
    global DECK_PLAYER

    TABLERO = class_board.crear_tablero(size)
    DECK_PLAYER = class_cards.create_decks()

def get_deck_player():
    global DECK_PLAYER
    print("get_deck_player() -> ", DECK_PLAYER)
    return DECK_PLAYER

if __name__ == "__main__":

    board_size = 3
    CLOCK.tick(30)
    set_tablero(board_size)
    print("get_deck_player() -> ", get_deck_player())

    game_init()

到目前为止,这两个打印都打印了正确的结果,DECK_PLAYER 作为带有元素的列表。但如果我打电话

# IN WINDOW_MANAGER.py
    deck_p = game_manager.get_deck_player()
    print(deck_p)

此打印返回一个空列表 ([]),我不明白为什么。get_deck_player 不应该返回变量的当前值吗?

标签: pythonpygame

解决方案


解决了:

当我将 game_manager 作为 main 运行时,来自 window_manager 的调用应该是:

import __main__

    deck_p = __main__.get_deck_player()

获取变量的正确值


推荐阅读