Python Pygame帮助:游戏文本一直卡在屏幕上(计时器不工作)

Python Pygame帮助:游戏文本一直卡在屏幕上(计时器不工作),python,pygame,Python,Pygame,我试图在Pygame中制作一个简单的潜水艇游戏,但每当玩家到达游戏窗口的边界时,我都无法显示一段名为“崩溃”的文本 当潜水艇与游戏边界发生碰撞(“你撞毁了!”)时,屏幕上就会出现该文本,然后是2秒的计时器,然后潜水艇重新启动,并清除屏幕上的文本 我遇到的问题是,“崩溃”文本直到2秒计时器结束后才出现在屏幕上(当潜艇重生时)-然后文本在重生后一直停留在屏幕上(即,文本不会在每次潜艇重生时重置) 我有一个名为“crash”的函数,其中包含消息,还有一个单独的函数来处理消息显示,名为“message\

我试图在Pygame中制作一个简单的潜水艇游戏,但每当玩家到达游戏窗口的边界时,我都无法显示一段名为“崩溃”的文本

当潜水艇与游戏边界发生碰撞(“你撞毁了!”)时,屏幕上就会出现该文本,然后是2秒的计时器,然后潜水艇重新启动,并清除屏幕上的文本

我遇到的问题是,“崩溃”文本直到2秒计时器结束后才出现在屏幕上(当潜艇重生时)-然后文本在重生后一直停留在屏幕上(即,文本不会在每次潜艇重生时重置)

我有一个名为“crash”的函数,其中包含消息,还有一个单独的函数来处理消息显示,名为“message\u display”。我正在关注YouTube上的一个教程,但与视频中的项目不同,我有一个文本重叠的背景图像,但我无法在潜艇首次坠毁时显示它,也无法在潜艇重生时让它消失

以下是我的完整代码:

**import pygame
import time
pygame.init()
display_width = 1280
display_height = 720
sound = pygame.mixer.Sound('YellowSubmarine.wav')
sound.play()
black = (0,0,0)
white = (255,255,255)
red = (255,0,0)
gameDisplay = pygame.display.set_mode((display_width,display_height))

bg = pygame.image.load("bg.jpg") <<<<<<<< THE BACKGROUND IMAGE

pygame.display.set_caption('The Amazing Yellow Submarine!')
clock = pygame.time.Clock()

SubImage = pygame.image.load('sub.png')<<<< <<<<< SUB IMAGE

SubImage = pygame.transform.scale(SubImage,(160,100)) <<< SCALE SUB IMAGE

def submarine(x,y): <<<<<<<<<< THE SUBMARINE OBJECT

    gameDisplay.blit(bg,(0,0)) <<<<<< BLITTING THE BACKGROUND IMAGE

    gameDisplay.blit(SubImage,(x,y)) <<<< BLITTING THE SUB IMAGE

def text_objects(text, font): <<<<< CREATING THE TEXT OBJECT 

    textSurface = font.render(text, True, white)

    return textSurface, textSurface.get_rect()

def message_display(text): <<<< DISPLAYING THE TEXT TO THE SCREEN

    largeText = pygame.font.Font('freesansbold.ttf',80)
    TextSurf, TextRect = text_objects(text, largeText)
    TextRect.center = ((display_width/2),(display_height/2))

    bg.blit(TextSurf, TextRect) <<< MAKING SURE THE TEXT OVERLAPS THE BACKROUND IMAGE

    time.sleep(2) <<<<< TWO SECOND TIMER 

    game_loop() <<<< RUN THE MAIN GAME LOOP


def crash():

    message_display('You Crashed!') <<<<< DISPLAYS THE CRASH MESSAGE

def game_loop(): <<<< RUNS UNLESS THE GAME IS QUIT

    x = (display_width * 0.02)
    y = (display_height * 0.4)
    y_change = 0
    x_change = 0
    gameExit = False
    while not gameExit:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                quit()
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_LEFT:
                    x_change = -5
                    y_change = 0
                if event.key == pygame.K_RIGHT:
                    x_change = 5               <<<<<< CONTROLS
                    y_change = 0
                if event.key == pygame.K_UP:
                    y_change = -2
                if event.key == pygame.K_DOWN:
                    y_change = 2                    
            if event.type == pygame.KEYUP:
                if event.key == pygame.K_LEFT: 
                    x_change = -1
                if event.key == pygame.K_RIGHT:
                    x_change = 1
                if event.key == pygame.K_DOWN:
                    y_change = 2
        x += x_change
        y += y_change

        submarine(x,y) 

        if x > 1125 or x < -25 or y > 650 or y < -25: <<<<<< IF BOUNDARY IS HIT

            crash() <<<<< RUNS CRASH FUNCTION (WHICH DISPLAYS THE MESSAGE)

            pygame.mixer.Sound.stop()

        clock.tick(60)
        pygame.display.update() <<<<<<<< UPDATING THE DISPLAY
game_loop()
pygame.quit()
**导入pygame
导入时间
pygame.init()
显示宽度=1280
显示高度=720
sound=pygame.mixer.sound('yellowsubin.wav'))
播放
黑色=(0,0,0)
白色=(255255)
红色=(255,0,0)
gameDisplay=pygame.display.set_模式((显示宽度、显示高度))

bg=pygame.image.load(“bg.jpg”)文本会在两秒钟后出现,因为在将文本点显到屏幕后,您会在更新屏幕之前暂停游戏两秒钟:

bg.blit(TextSurf, TextRect) <<< MAKING SURE THE TEXT OVERLAPS THE BACKROUND IMAGE

time.sleep(2) <<<<< TWO SECOND TIMER 

game_loop() <<<< RUN THE MAIN GAME LOOP
bg.blit(TextSurf, TextRect) <<< MAKING SURE THE TEXT OVERLAPS THE BACKROUND IMAGE
因此,不要将文本绘制到背景
表面
,而是直接将其绘制到屏幕
表面



您的代码还存在一些其他问题,但这超出了本答案的范围,但您应该了解如何解决主要问题。

python中的注释由
\
表示,而不是由