I have having trouble with a basic game/animation loop.
It seems like the final frame doesn't show up until after the game loop is done and pygame.quit() is called. An example is below - if it is run, I see the "Out of loop" output, then a pause, then the final frame, then the final pause.
Am I doing something wrong?
Is this specific to my setup/machine?
import pygame, sys
def main():
pygame.init()
screen = pygame.display.set_mode((600, 400))
frame_count = 0
# The clock helps us manage the frames per second of the animation
clock = pygame.time.Clock()
square = pygame.Rect((0,100),(50,50))
done = False
while not done:
# Erase the screen
screen.fill((50, 50, 50))
# Process events
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True
# The main snake code
square.move_ip((50,0))
pygame.draw.rect(screen, (200,50,50), square)
print(square)
frame_count += 1
if frame_count >= 5:
done = True
print(done)
# set fps
clock.tick(1)
# Bring drawn changes to the front
pygame.display.update()
print("Out of loop")
pygame.time.delay(2000)
# This also works to bring up the last frame.
# pygame.event.clear()
# pygame.event.wait()
pygame.quit()
print("After quit")
pygame.time.delay(2000)
sys.exit()
main()