我正在创建一个聊天系统,并希望插入使用Pygame制作的游戏。在聊天系统的state_machine文件中,我将客户端的状态设置为-d
。当客户端在S_GAMING
状态下键入“游戏”时,状态将更改为S_LOGGEDIN
,并且当游戏结束时,用户可以通过单击“ x”按钮或通过以下方式退出游戏等待3秒。
在不退出聊天系统的情况下关闭游戏窗口有些麻烦。
当我使用S_GAMING
时,窗口将冻结。
当我尝试使用pygame.quit()
和pygame.quit()
或sys.exit()
时,我也退出了聊天系统。
这是game.py文件的一部分:
quit()
这是chat_state_machine文件的一部分:
run = True
gameOver = False
timer = 0
while run:
clock.tick(27)
#check events
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
if not gameOver:
drawWindow()
for each in barriers:
if each.isHit:
gameOver = True
else:
if timer < 81:
win.blit(game_over,(0,0))
timer +=1
pygame.display.update()
else:
run = False
pygame.display.quit()
pygame.quit()
我知道这是一个特定的问题,如果以上内容不清楚,我可以提供更多代码。 希望我能得到答案。我全是耳朵。
答案 0 :(得分:1)
这是一个简单的解决方案:退出pygame后,代码应该抛出异常,在这种情况下,您可以将run切换为False并开始新的循环
import pygame
pygame.init()
screen = pygame.display.set_mode((600, 400))
clock = pygame.time.Clock()
run = True
while run:
try:
screen.fill((0,0,0))
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
clock.tick(120)
pygame.display.update()
except:
run = False
while not run:
#Your other code here
pass