如何在 true 时显示文本

How to show text when true

我想在变量更改为 True 时在屏幕上显示文本。使用此代码时文本“游戏结束”显示的时间很短,但不到一秒后我就消失了。

import pygame
import random
import time
import math

# Initialize pygame
pygame.init()

# Create window (width, height)
screen1 = pygame.display.set_mode(((800, 600)))
ScreenHeight = screen1.get_height()
ScreenWidth = screen1.get_width()

#Game Over text
go_font = pygame.font.Font('freesansbold.ttf', 128)
go_text = "GAME OVER"
go_textX = 300
go_textY = 300

def show_gameover(go_textX, go_textY):
    gameover_text = font.render(go_text, True, (105, 105, 105))
    screen1.blit(gameover_text, (go_textY,go_textY))

# Variable to track gameover
gameover = False

while running:

    if gameover:
        show_gameover(go_textX, go_textY)


    # Insert Background
    screen1.blit(background, (0, 0))


    i = 0

    for obs in obstacle_list:
        obs.spawn_obstacle()
        obs.update_y()

        outOfBounds = obs.out_of_bounds(playerX, playerY)
        if outOfBounds:
            obstacle_list.pop(i)

        collision = obs.collision_detection(playerX, playerY)
        if collision:

            gameover = True
            show_gameover(go_textX, go_textY)     #Show Gameover-text

        i += 1


    # Update after each iteration of the while-loop
    pygame.display.update()

你必须在背景之后绘制文字。如果在绘制背景之前绘制文本,它会从背景中隐藏。在更新显示之前绘制它。所以它被绘制在场景中的所有其他对象上。

while running:

    # Insert Background
    screen1.blit(background, (0, 0))

    # [...]

    if gameover:
        show_gameover(go_textX, go_textY)

    # Update after each iteration of the while-loop
    pygame.display.update()