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 à :
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!