Maison  >  Article  >  développement back-end  >  Pourquoi ma boucle d’application Pygame ne se met-elle pas à jour correctement ?

Pourquoi ma boucle d’application Pygame ne se met-elle pas à jour correctement ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-17 17:44:02634parcourir

Why is my Pygame application loop not updating correctly?

Pourquoi la boucle de mon application Pygame ne fonctionne-t-elle pas correctement ?

En examinant le code fourni, il semble que la disposition de la boucle soit le problème principal . Dans votre application principale, vous essayez d'effacer des parties de l'écran et de les redessiner pour chaque entité, tout en redessinant uniquement l'entité spécifique dans sa position mise à jour. Cette approche n'est pas nécessaire et peut entraîner des incohérences visuelles.

En général, la meilleure pratique consiste à :

  1. Effacer tout l'affichage ou dessiner l'arrière-plan.
  2. Redessinez toutes les entités dessus.
  3. Mettez à jour l'affichage.

Dans cet extrait de code révisé, nous avons réorganisé la boucle comme mentionné ci-dessus :

while 1:

    # handle events
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()

    # update objects (depends on input events and frames)
    keys = pygame.key.get_pressed()
    if keys[pygame.K_LEFT]:
        objects[0].move_left()    
    if keys[pygame.K_RIGHT]:
        objects[0].move_right()
    if keys[pygame.K_UP]:
        objects[0].move_up()
    if keys[pygame.K_DOWN]:
        objects[0].move_down()

    for num in range(num_objects - 1):
        objects[num + 1].rand_move()

    # draw background
    screen.blit(background, (0, 0))

    # draw scene
    for o in objects:
        screen.blit(o.image, o.pos)

    # update dispaly
    pygame.display.update()
    pygame.time.delay(100)

Cette boucle efface désormais efficacement l'écran, dessine toutes les entités, puis met à jour l'affichage à chaque image.

Référez-vous à cet exemple minimal pour plus de précisions :

[Exemple de lien]

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn