私は自分のゲームとオンラインにpygameを使用していますが、ゲームのメインループがサーバからソケットを待つときはいつでも問題ありません。 あなたのターンをやっていない限り、クライアントはサーバからソケットを待っています。ソケットを手に入れてターンを待つ間は、何もしません。待機中のpygameフリーズのウィンドウ
私は、このサイトや他のサイトや、5秒後にOSがウィンドウ(自分自身をロックしている)を考えてから理解したことから、いくつかの答えと解決策を読んでいますか?だから私はスレッドkeep_runを作成しましたが、それは変更されず、ウィンドウはまだ凍っていません。
また、keep_run()が私が使用した唯一のスレッドなので、助けがあればサーバはselectライブラリで動作します。
私のコードには多くの行が含まれていませんでしたが、多すぎるかもしれませんが、おそらくそれを引き起こす重要な要素の基本的な結論がありますか?例の
import sockets
import pygame
from threading import Thread
def keep_run():
clock = pygame.time.Clock()
fps = 60
while True:
pygame.event.pump()
clock.tick(fps)
pygame.init()
keep_running = Thread(target=keep_run)
keep_running.setDaemon(True)
keep_running.start()
while Game_run:
#the main loop
server_command = client_socket.recv(1024)
if server_command == "move":
# make your turn
do_turn()
elif server_command == "over":
# finish the game
finish_game()
画像:https://i.stack.imgur.com/b4Qx8.png
Game_runはおそらく "game_run"と呼ばれるべきです。しかし、内部の整合性がある限り、重要ではありません。 – Frogboxe