Avez-vous déjà voulu créer un jeu passionnant en utilisant la bibliothèque PyGame de Python, mais vous vous êtes senti dépassé par le concept de gestion du temps ? Si c’est le cas, vous n’êtes pas seul.
Le temps est l’un des composants les plus critiques du développement de jeux, et il est essentiel de comprendre comment le temps fonctionne dans PyGame pour créer des jeux attrayants et réussis. PyGame fournit plusieurs fonctions et modules utiles qui vous permettent de contrôler le temps dans vos jeux.
Création d’un jeu simple
Commencez par créer un jeu simple où un rectangle se déplace vers la droite. Pour commencer, installez pip sur votre appareil et utilisez la commande ci-dessous pour installer le module PyGame :
pip install pygame
Vous pouvez trouver tous les exemples de code dans ce repo GitHub.
Une fois installé, importez le module PyGame. Créez ensuite un écran d’une taille de 800×600 et d’une couleur de fond blanche, et ajoutez un objet rect. Le code devrait ressembler à quelque chose comme ceci :
import pygame
pygame.init()
screen = pygame.display.set_mode((800, 600))
background = pygame.Surface(screen.get_size())
background.fill((255, 255, 255))
rect = pygame.Rect(0, 0, 20, 20)
Après cela, utilisez une boucle while pour faire tourner le jeu et faire bouger l’objet rect jusqu’à ce qu’il atteigne la fin de l’écran.
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
rect.x += 1
if rect.x > 780:
rect.x = 0
screen.blit(background, (0, 0))
pygame.draw.rect(screen, (0, 0, 0), rect)
pygame.display.update()
Vous pouvez également ajouter des entrées utilisateur et des collisions dans le jeu. Voici le résultat :
Aperçu du module de temps de PyGame
Pour contrôler le temps dans ce jeu, vous pouvez utiliser la fonction pygame.time module. Ce module fournit diverses fonctionnalités utiles, notamment un Horloge avec des méthodes comme get_ticks(), attendre()et delay(). Grâce à ces fonctions, vous pouvez facilement contrôler le temps dans votre jeu.
Créer un objet horloge pour suivre le temps
Dans PyGame, vous pouvez utiliser un objet Horloge pour suivre le temps. Pour créer une horloge, il suffit d’utiliser la ligne de code suivante :
clock = pygame.time.Clock()
Avec cet objet Clock, vous pouvez maintenant suivre l’heure dans votre jeu. Il existe également plusieurs autres fonctions utiles associées à l’objet Clock, telles que :
- get_time() : Avec l’aide de cette fonction, vous pouvez récupérer le temps pris pour chaque image du jeu. Pour utiliser cette fonction, il suffit d’ajouter la ligne de code suivante après la boucle while :
time = clock.get_time()
Ajouter un objet texte pour afficher le temps pris :
font = pygame.font.SysFont('Arial', 18)
text = font.render('Time taken: {} ms'.format(time), True, (0, 0, 0))
screen.blit(text, (0, 0)) - tick() : Utilisez cette fonction pour définir la fréquence d’images du jeu. Par défaut, la fréquence d’images est fixée à 60 FPS. Pour le régler sur 30 FPS, il suffit d’ajouter la ligne de code suivante :
clock.tick(30)
- get_fps(): Vous pouvez récupérer le taux de rafraîchissement actuel du jeu en utilisant get_fps. Pour utiliser cette fonction, il suffit d’ajouter la ligne de code suivante :
fps = clock.get_fps()
Vous pouvez ajouter un objet texte pour afficher le taux de rafraîchissement :
font = pygame.font.SysFont('Arial', 18)
text = font.render('FPS: {}'.format(fps), True, (0, 0, 0))
screen.blit(text, (0, 20)) - tick_busy_loop() : Cette fonction vous permet de calculer combien de millisecondes se sont écoulées depuis le dernier appel à la fonction tick() fonction. Pour l’utiliser, il suffit d’ajouter la ligne de code suivante :
clock.tick_busy_loop(30)
Obtenir l’heure avec get_ticks
Le site get_ticks() retourne le temps en millisecondes depuis l’initialisation de PyGame. Pour utiliser cette fonction, ajoutez la ligne de code suivante :
time_elapsed = pygame.time.get_ticks()
Ajouter un objet texte pour afficher le temps pris :
font = pygame.font.SysFont('Arial', 18)
text = font.render('Time Elapsed: {} ms'.format(time_elapsed), True, (0, 0, 0))
screen.blit(text, (0, 40))
Vous pouvez utiliser le temps écoulé pour implémenter des éléments de jeu basés sur le temps, tels que des bonus qui durent un temps spécifique. Par exemple, vous pouvez implémenter un bonus qui augmente la vitesse de l’objet rect pendant 5 secondes :
if time_elapsed / 5000 > 0:
rect.x += 5
Voici le résultat :
Mise en pause du jeu à l’aide des fonctions d’attente et de retardement
PyGame fournit également deux fonctions que vous pouvez utiliser pour mettre le jeu en pause pendant un laps de temps spécifique : la fonction wait et la fonction délai fonction.
Pour utiliser la fonction attendre il suffit d’ajouter la ligne de code suivante dans la boucle while :
pygame.time.wait(1000)
Cela mettra le jeu en pause pendant 1000 millisecondes (1 seconde). Pour utiliser la fonction délai il suffit d’ajouter la ligne de code suivante dans la boucle while :
pygame.time.delay(1000)
Cela retardera la prochaine image du jeu de 1000 millisecondes (1 seconde).
Différences entre wait et delay
Il existe quelques différences entre les termes attendre et retarder fonctions. Le site attendre met en veille le processus pour qu’il partage le processeur avec d’autres programmes. Le site délai utilisera le processeur pour rendre le délai plus précis. Cela signifie que la fonction délai exige plus de puissance de processeur que la fonction attendre et convient aux jeux qui nécessitent un timing précis.
Création d’un événement à l’aide de set_timer
Vous pouvez utiliser la fonction set_timer() pour créer un événement qui se déclenche après un laps de temps déterminé.
Les événements dans PyGame sont des objets qui contiennent des informations sur les entrées de l’utilisateur ou des messages générés par le programme. Pour utiliser cette fonction, créez un événement personnalisé et ajoutez la ligne de code suivante :
pygame.time.set_timer(CUSTOM_EVENT, 1000)
Cela créera un événement qui se déclenchera après 1 000 millisecondes – 1 seconde. Il existe différents types d’événements que vous pouvez déclencher, tels que les mouvements de la souris, les entrées au clavier et les événements de la fenêtre. Votre code peut ensuite réagir à ces événements de la manière la plus appropriée.
Par exemple, si vous voulez modifier l’axe des y de l’objet rect après 1 seconde, ou lorsque l’événement personnalisé se déclenche, vous pouvez ajouter la ligne de code suivante :
if event.type == CUSTOM_EVENT:
rect.y += 20
De cette façon, vous pouvez facilement créer des événements temporels dans votre jeu, ce qui vous permettra de créer un gameplay intéressant et stimulant.
Améliorer les contrôles de jeu avec le temps
Avec l’aide du contrôle du temps, vous pouvez améliorer les contrôles du jeu. Vous pouvez utiliser le temps pour mettre en œuvre l’accélération, la décélération, et même les conditions de game-over. De nombreux jeux introduisent le concept de bullet time où l’action est ralentie pendant une courte période.
En utilisant les fonctions de contrôle du temps de PyGame, vous pouvez facilement implémenter de telles caractéristiques, et plus encore, dans vos propres jeux.