首页 > 解决方案 > Pygame 窗口在启动 game_loop() 后冻结

问题描述

嘿它的最大我有一个问题,我的game_loop()运行大约半秒钟然后冻结,它没有说没有响应或任何东西只是对所有按钮完全没有响应,有人知道我做错了什么吗?我正在定义game_intro()并说,如果我单击输入[RETURN]startgame_loop()intro=False.

任何帮助深表感谢 :)

def game_loop():
global bot_x1
global bot_x2
global bot_y1
global bot_y2
global x
global y  
global running
pygame.display.update()
clock.tick(60)
pygame.display.update()

if running:
    pygame.display.update()
    pygame.display.update()

    for event in pygame.event.get():
            #CLOSE
            if event.type==pygame.QUIT:
                pygame.quit()
                pygame.quit()
                quit()

                  #MOVEMENT

##                if pygame.key.get_pressed()[pygame.K_LEFT] and x > 0:
##                    x-= selfspeed
##                     
##                if keys [pygame.K_RIGHT] and x < 710 :
##                    x+= selfspeed
##
##                if keys [pygame.K_UP] and y > 0:
##                    y-= selfspeed
##
##                if keys [pygame.K_DOWN] and y < 400:
##                    y+= selfspeed

            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_LEFT and x > 0:
                    x-=selfspeed
                elif event.key == pygame.K_RIGHT and x < 710 :
                    x+=selfspeed
                elif event.key == pygame.K_UP and y > 0:
                    y-=selfspeed
                elif event.key == pygame.K_DOWN and y < 400 :
                    y+=selfspeed

#BOT MOVEMENT
            if bot_y2 > window_height:
                bot_y2 = 0
                bot_x2 = random.uniform(50,750) 

            if bot_y1 > window_height:
                bot_y1 = 0
                bot_x1 = random.uniform(50,750)                    

#SHOW PICTURES
    bot_y1+=botspeed
    bot_y2+=botspeed             
    window.fill(grey)
    bot_1(bot_x1,bot_y1)
    bot_2(bot_x2,bot_y2)
    plane(x,y)
    print("working")
    running=True

#UPDATE GAME DISPLAY+FPS
    keys=pygame.key.get_pressed()
    pygame.display.flip()
    clock.tick(30)

#GAME LOOP BROKEN CLOSE
game_intro()
game_loop()

标签: pythonpygame

解决方案


我的代表还不够高,无法发表评论,但有很多细节你没有足够澄清,例如game_intro()函数的作用或窗口是否在冻结后关闭。您还在解释中引用了一个从未在代码中显示的变量 ( intro = False)。但是根据您提供的代码,您似乎从未将其game_loop()放入实际循环中。代替...

...
if running:
     pygame.display.update()
...

在你里面game_loop()试试这个

...
while running:
     pygame.display.update()
....

如果这仍然不起作用,请尝试使用更新的问题或 pastebin 链接提供更多代码。


推荐阅读