0

だから私はゲームを構築していて、ゲーム自体の実行を (これまでのところ) 処理するメッセージ ハンドラーがあり、現在はロビーを処理しています。メッセージが送信されるたびに、そのメッセージ ハンドラーの新しいインスタンスが作成されます。例えば...

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 で定義された関数であると仮定しますか?

4

0 に答える 0