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.
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 anelse
and render your text there.