Pourquoi mon application PyGame ne fonctionne-t-elle pas du tout?

Dec 12 2020

J'ai un programme Pygame simple:

#!/usr/bin/env python

import pygame
from pygame.locals import *

pygame.init()

win = pygame.display.set_mode((400,400))
pygame.display.set_caption("My first game")

Mais chaque fois que j'essaye de l'exécuter, j'obtiens ceci:

pygame 2.0.0 (SDL 2.0.12, python 3.8.3)
Hello from the pygame community. https://www.pygame.org/contribute.html

Et puis rien ne se passe. Pourquoi je ne peux pas exécuter ce programme?

Réponses

4 Rabbid76 Dec 12 2020 at 19:11

Votre application fonctionne bien. Cependant, vous n'avez pas implémenté de boucle d'application:

#!/usr/bin/env python

import pygame
from pygame.locals import *

pygame.init()

win = pygame.display.set_mode((400,400))
pygame.display.set_caption("My first game")
clock = pygame.time.Clock()

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

    # update game objects
    # [...]

    # clear display
    win.fill((0, 0, 0))

    # draw game objects
    # [...]

    # update display
    pygame.display.flip()

pygame.quit()

La boucle d'application typique de PyGame doit:

  • gérer les événements soit pygame.event.pump()ou pygame.event.get().
  • mettre à jour les états du jeu et les positions des objets en fonction des événements d'entrée et de l'heure (respectivement des cadres)
  • effacer tout l'affichage ou dessiner l'arrière-plan
  • dessiner toute la scène ( blittous les objets)
  • mettre à jour l'affichage soit pygame.display.update()soitpygame.display.flip()

Voir aussi Boucle d'événement et d'application