Pygame 文本未呈现 [英] Pygame text not rendering
本文介绍了Pygame 文本未呈现的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
好的,所以我正在使用 python 和 pygame 制作一个多项选择测验游戏.但是,我已经完成了开始屏幕并尝试制作问题屏幕.我根本无法弄清楚为什么文本不呈现.这是我的代码:
Okay, so I am making a multiple choice quiz game with python and pygame. However, I am done with the start screen and trying to make the question screen. I simply can't figure out why the text doesn't render. Here's my code:
enter_pressed = False
random_question = random.randrange(1, 3)
question_number = 0
# Sets the height and width of the screen
size = [720, 575]
screen = pygame.display.set_mode((size),pygame.FULLSCREEN)
# The Caption for the display
pygame.display.set_caption("Quiz")
# Function that automatically renders text
def render_text(word, x, y, font, size, color):
# Itinitialize font
my_font = pygame.font.SysFont(font, size)
# Renders font
label = my_font.render(word, 1, (color))
screen.blit(label, (x, y))
# Loops until the user clicks the close button
done = False
clock = pygame.time.Clock()
# While loop
while not done:
# Leaves the fps at 30
clock.tick(30)
for event in pygame.event.get(): # If user did something
if event.type == pygame.QUIT: # If user clicked close
done = True
elif event.type == pygame.KEYDOWN: # If user pressed a key
if event.key == pygame.K_RETURN: # If user pressed enter
# Makes the start screen go away
enter_pressed = True
# Increments question_number
question_number += 1
**#This is what won't render!!!
render_text("Stud", 200, 200, "Arial", 30, BLACK)**
# Set the screen background
screen.fill(BACKGROUND)
# Removes start screen
if enter_pressed == False:
# Where drawing happens
pygame.draw.rect(screen, WHITE, [285, 237, 150, 100])
# Renders START
render_text("START", 287, 260, "Arial", 45, BLACK)
# Renders Celebrity Car Museum:
render_text("Quiz", 165, 80, "Cooper std", 50, BLACK)
# Renders Car Quiz
render_text("Quiz", 285, 150, "Cooper std", 50, BLACK)
# Renders Press ENTER to start
render_text("Press ENTER to start", 282, 350, "Impact", 20, BLACK)
# Update the screen
pygame.display.flip()
推荐答案
您正在渲染文本并立即清理屏幕.
You are rendering the text and immediately cleaning the screen.
在处理事件时不要绘制,只需更新游戏状态,然后绘制该状态.就像你对 enter_pressed == False
所做的那样,你应该放一个 else
并在那里渲染你的文本.
Never draw while processing events, just update the game state, then draw that state. Just like you did with enter_pressed == False
, you should put an else
and render your text there.
这篇关于Pygame 文本未呈现的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文