微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

此 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 举报,一经查实,本站将立刻删除。