0

所以我正在构建一个游戏,我有一个消息处理程序(到目前为止)处理运行游戏本身,现在是大厅。每次发送消息时,都会创建该消息处理程序的新实例。例如...

来自 whandler.py:

def on_message(self, message):
    MH = protocol.msghandler.HandlerImplementation(self)
    message = tornado.escape.json_decode(message)
    MH.handle_message(message)

现在 MH 对象......它调用了大厅类中的一个函数,将它们放入队列中。队列将在一个线程上实现,该线程在程序启动时开始......

来自 main.py:

lobby = model.lobby.Lobby()
threading.Thread(target = lobby.match_players).start()

我基本上要问的是我可以在 HandlerImplementation 中做到这一点......

def join_queue(self, username):
    main.lobby.join_queue(username, self)

这在大厅.py中:

def join_queue(self, username, messager):
    self.lock.acquire()
    self.queue.append((username, messager))
    self.lock.release()

因此,当我在 lobby.match_players 中匹配玩家时,我基本上可以这样做......

def match_players(self):
    while(True):
        while len(self.queue) < 2: pass
        self.lock.acquire()
        if len(self.queue) >= 2:
            player1 = self.queue.pop(0)
            player2 = self.queue.pop(0)
            player1[1].player_connect(player1[0], player2[0])
            player2[1].player_connect(player2[0], player1[0])
        self.lock.release()

假设 player_connect 是 HandlerImplementation 中定义的函数?

4

0 回答 0