Maison > développement back-end > Tutoriel Python > Pourquoi mon code PyGame ne dessine-t-il rien ?

Pourquoi mon code PyGame ne dessine-t-il rien ?

DDD
Libérer: 2024-12-26 00:37:13
original
602 Les gens l'ont consulté

Why Doesn't My PyGame Code Draw Anything?

Pourquoi PyGame ne parvient pas à dessiner quoi que ce soit

Votre projet PyGame vise à créer un arrière-plan avec un fond gris et un haut noir, en utilisant pygame.draw.rect() fonction. Malgré de précédentes expériences réussies avec cette fonction, vous rencontrez des résultats de dessin incohérents. Parfois, vous obtenez un écran noir, tandis que d'autres fois, un rectangle gris apparaît partiellement sur l'écran.

La confusion vient du fait que le dessin seul ne produit pas de sortie visible dans PyGame. Après avoir modifié la surface associée, vous devez mettre à jour l'affichage pour rendre ces modifications visibles.

Mise à jour de l'affichage

Le dessin se produit sur un objet Surface associé à l'affichage PyGame. Cependant, ces modifications ne sont pas automatiquement reflétées sur l'écran. Pour les rendre visibles, vous devez explicitement mettre à jour l'affichage à l'aide de pygame.display.update() ou pygame.display.flip().

pygame.display.flip() met à jour l'intégralité de l'affichage. display, tandis que pygame.display.update() fournit des mises à jour plus sélectives pour des zones spécifiques de l'écran. Il est généralement plus optimisé pour les affichages logiciels, mais n'est pas pris en charge pour les affichages à accélération matérielle.

Boucle d'application PyGame

Une boucle d'application PyGame typique se compose de plusieurs étapes :

  1. Gestion des événements : Gérez les événements en utilisant pygame.event.pump() ou pygame.event.get().
  2. Mises à jour d'état : mettez à jour les états du jeu et les positions des objets en fonction des événements d'entrée et de l'heure (images).
  3. Effacement de l'affichage  : effacez l'affichage ou dessinez un arrière-plan.
  4. Dessin de scène : dessinez tous les objets dans la scène.
  5. Mise à jour de l'affichage : appelez pygame.display.update() ou pygame.display.flip() pour rendre les modifications visibles.
  6. Frame rate limiting : Limitez les images par seconde pour éviter une utilisation excessive du processeur avec pygame.time.Clock.tick.

Exemple de code

Voici un code modifié qui inclut les mises à jour d'affichage :

import pygame
from pygame.locals import *
pygame.init()

DISPLAY = pygame.display.set_mode((800,800))
pygame.display.set_caption("thing")
clock = pygame.time.Clock()

run = True
while run:
    # handle events
    for event in pygame.event.get():
        if event.type == QUIT:
            run = False

    # clear display
    DISPLAY.fill(0)

    # draw scene
    pygame.draw.rect(DISPLAY, (200,200,200), pygame.Rect(0,400,800,400))

    # update display
    pygame.display.flip()

    # limit frames per second
    clock.tick(60)

pygame.quit()
exit()
Copier après la connexion

En incorporant les mises à jour d'affichage nécessaires , vous devriez maintenant voir l'arrière-plan attendu avec un fond gris et un haut noir.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal