我使用pygame的为我的比赛,它的在线,但问题是,每当游戏的主循环从服务器等待插座的冻结。 所以,除非你正在做你的回合中,客户端等待来自服务器的插座,什么也不做,等待和冻结,直到它得到了插座,做它的转向。窗口pygame的冻结,同时等待
所以我在这个网站和其他一些和读取几个答案和解决方案,我什么都不做的OS认为窗口(锁定本身)5秒后,明白了吗?所以我创建了线程keep_run,但它没有做任何改变,窗口仍然冻结,而没有轮到他。
另外提一下的服务器选择库工作,如果其因为反正帮助keep_run()是我使用的唯一线索。
我并没有包括多条线路在我的代码,因为有太多,但其重要的东西一个基本结论,也许造成的吗?实例的
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