所以我正在构建一个游戏,我有一个消息处理程序(到目前为止)处理运行游戏本身,现在是大厅。每次发送消息时,都会创建该消息处理程序的新实例。例如...
来自 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 中定义的函数?