我使用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