Pygame窗口在启动游戏\u loop()后冻结

2024-06-10 17:35:55 发布

您现在位置:Python中文网/ 问答频道 /正文

嘿,它的最大值我有一个问题,我的game_loop()运行约半秒,然后冻结,它没有说没有回应或任何东西只是完全没有反应,所有的按钮,有人知道我做错了什么吗?我正在定义game_intro(),并说如果我单击enter [RETURN]start game_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()

Tags: andkeyloopeventgameifbotdisplay
1条回答
网友
1楼 · 发布于 2024-06-10 17:35:55

我的代表还不足以发表评论,但是有很多细节您还没有足够的说明,例如game_intro()函数做什么,或者窗口是否在冻结后关闭。在解释中还引用了代码中从未显示的变量(intro = False)。但是根据您提供的代码,看起来您从未将game_loop()放入实际循环中。而不是。。。你知道吗

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

在你的game_loop()里试试这个

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

如果仍然不工作,请尝试提供更多的代码,要么更新问题或粘贴链接。你知道吗

相关问题 更多 >