だから私はゲームを構築していて、ゲーム自体の実行を (これまでのところ) 処理するメッセージ ハンドラーがあり、現在はロビーを処理しています。メッセージが送信されるたびに、そのメッセージ ハンドラーの新しいインスタンスが作成されます。例えば...
wshandler.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)
そしてこれはlobby.pyにあります:
def join_queue(self, username, messager):
self.lock.acquire()
self.queue.append((username, messager))
self.lock.release()
そのため、roby.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 で定義された関数であると仮定しますか?