我有一个在 pygame 上运行的多人游戏。我在单独的线程中运行游戏/客户端/服务器,并有一个简单的回显服务器。每次玩家广播一条消息,其他所有玩家都会收到它。我遇到的问题是 pygame 有一个 while(true) 循环,每 10 毫秒重绘一次屏幕。此循环导致游戏世界无法更新,因为它无法在循环之外执行任何操作。我尝试使用队列,以便在 while 循环中,它可以出列并处理命令,但是这似乎不起作用(q.put() 没有在队列中放置任何内容)。
任何帮助表示赞赏!谢谢
这是架构的一个片段:
class Client(Thread, Observer):
#waits for notifications from ClientSocket
#starts the game loop
#enqueue commands in the Game
class ClientSocket(Thread, Observable):
#observes the socket and notifies the Client
class Server(Thread):
#simply broadcasts commands to ClientSocket(s)
class Game(Thread):
def __init__(self):
self.q = queue.Queue()
while True:
#delay 10 ms
#redraw
#see if u need to process queue