【发布时间】:2021-10-15 08:53:10
【问题描述】:
我制作了一个使用以下逻辑的在线连接 4 游戏:
-
Player1 将他们的移动发送到服务器
-
服务器将移动发送到 Player2
-
Player2 接收到移动,做出自己的移动并将其发送到服务器
-
服务器将移动发送到 Player1
-
Player1 接收到移动,做出自己的移动并将其发送到服务器
-
(直到有人获胜或平局)
它可以工作,但有一个问题:当玩家 1 需要一段时间来选择他们的移动并且玩家 2 正在等待接收时,玩家 2 的 pygame 窗口变得无响应,因为它卡在 .recv() 调用中。我该如何解决这个问题?
【问题讨论】:
-
您总是需要处理事件以使您的操作系统满意。您可以在单独的线程here's an example 中处理网络通信,该线程使用线程连接到数据库,并通过队列与主 pygame 线程进行通信。