每次显示获胜者文本后游戏都会崩溃,而不是重新启动

问题描述

此 Pong 游戏的主要目标是在显示获胜者文本后重新开始游戏(如果任一玩家的得分达到 10 或更高)。问题是每次显示获胜者文本后游戏都会崩溃(如果任一玩家达到 10 分或更高),并且在我声明它应该重新调用 main() 函数时失败,正如您从下面的代码中看到的.因此,当它显示获胜者文本时,它应该暂停游戏 5 秒,然后退出 while 循环并调用 main()。

不确定是什么问题,因为我从一开始就初始化了所有 pygame 模块,如您所见。下图显示draw_text 变量的问题,但如您所见,我在程序顶部初始化了 WINNER_FONT 常量。我还确保我的缩进是正确的。任何帮助将不胜感激!

[pygame.error: 库未初始化1

请注意,下面我将只包含重要的代码行。

import pygame
pygame.init()

WIDTH,HEIGHT = 750,500
WINDOW = pygame.display.set_mode((WIDTH,HEIGHT))    
BACKGROUND = pygame.image.load("exoplanet.jpg")

pygame.display.set_caption("SPACE PONG") 

WINNER_FONT = pygame.font.SysFont('comicsans',100)


def draw_winner(text):
    draw_text = WINNER_FONT.render(text,1,WHITE)
    WINDOW.blit(draw_text,(WIDTH//2 - draw_text.get_width()/2,HEIGHT//2 - draw_text.get_height()/2))
    pygame.display.update()
    pygame.time.delay(5000)


def main():
    run = True

    while run:
        pygame.time.delay(15)   
   
        for event in pygame.event.get():    
            if event.type == pygame.QUIT:  
                run = False
                pygame.quit()


        winner_text = ""
        if paddle1.points >= 10:
            winner_text = "Blue Wins!"

        if paddle2.points >= 10:
            winner_text = "Red Wins!"

        if winner_text != "":
            draw_winner(winner_text)
            break
            

        key_pressed = pygame.key.get_pressed()
        
        paddle_movement(key_pressed,paddle1.rect)
        paddle_movement(key_pressed,paddle2.rect)
        collision_paddle_surface(paddle1.rect.y,paddle2.rect.y)
    
        ball_movement()   

        collision_ball_surface(ball.rect.y,ball.rect.x)
        ball_speed_increase(paddle1.points,paddle2.points)
        collision_ball_paddle(paddle1.rect,paddle2.rect)
   
        redraw()  

    main()

if __name__ == "__main__":
    main()

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)