Indique le type de boîte d'un élément devrait générer
Tutoriel pour apprendre comment manipuler des image en, pygame en utilisant les touches du clavier
Pour utiliser les touches du clavier pour déplacer une image dans Pygame, vous pouvez ajouter une gestion des événements clavier à votre boucle principale. Voici comment vous pourriez le faire en modifiant votre code existant :
Exemple : Copier le code
import pygame from pygame.locals import * # Entrée des couleurs JAUNE = (255, 255, 0) BLEU = (0, 0, 255) # Initialiser le jeu GUI pygame.init() # Définir les dimensions de l'interface graphique du jeu largeur, hauteur = 640, 350 écran = pygame.display.set_mode((largeur, hauteur)) # Entrée de l'image img = pygame.image.load('old-logo.png') img.convert() # Dessiner un rectangle autour de l'image rect = img.get_rect() rect.center = largeur // 2, hauteur // 2 # Définir les valeurs de fonctionnement et de déplacement en_cours = True en_mouvement = False # Définir la vitesse de déplacement de l'image vitesse = 5 # Définir ce qui se passe lorsque le jeu est en cours d'exécution while en_cours: for event in pygame.event.get(): if event.type == QUIT: en_cours = False elif event.type == MOUSEBUTTONDOWN: if rect.collidepoint(event.pos): en_mouvement = True elif event.type == MOUSEBUTTONUP: en_mouvement = False elif event.type == MOUSEMOTION and en_mouvement: rect.move_ip(event.rel) # Gestion des événements clavier elif event.type == KEYDOWN: if event.key == K_LEFT: rect.move_ip(-vitesse, 0) elif event.key == K_RIGHT: rect.move_ip(vitesse, 0) elif event.key == K_UP: rect.move_ip(0, -vitesse) elif event.key == K_DOWN: rect.move_ip(0, vitesse) # Définir la couleur de l'écran et afficher l'image sur l'écran écran.fill(JAUNE) écran.blit(img, rect) # Construire la bordure autour de l'image pygame.draw.rect(écran, BLEU, rect, 2) # Mettre à jour l'interface graphique pygame pygame.display.update() # Quitter le jeu GUI pygame.quit()
Dans ce code, j'ai repris le code du chapitre précédent et j'ai ajouté une section pour gérer les événements clavier (`KEYDOWN`). Les touches fléchées (gauche, droite, haut, bas) sont utilisées pour déplacer l'image dans la direction correspondante. Vous pouvez ajuster la vitesse de déplacement en modifiant la valeur de la variable `vitesse`.
Voici une autre version du code précédent, il s'agit de modifier le code de manière à ce que l'image continue de bouger tant que la touche fléchée est enfoncée et s'arrête lorsque la touche est relâchée, vous pouvez utiliser un dictionnaire pour suivre l'état actuel des touches du clavier. Voici le code modifié :
Exemple : Copier le code
import pygame from pygame.locals import * # Entrée des couleurs JAUNE = (255, 255, 0) BLEU = (0, 0, 255) # Initialiser le jeu GUI pygame.init() # Définir les dimensions de l'interface graphique du jeu largeur, hauteur = 640, 350 écran = pygame.display.set_mode((largeur, hauteur)) # Entrée de l'image img = pygame.image.load('old-logo.png') img.convert() # Dessiner un rectangle autour de l'image rect = img.get_rect() rect.center = largeur // 2, hauteur // 2 # Définir les valeurs de fonctionnement et de déplacement en_cours = True en_mouvement = False # Définir la vitesse de déplacement de l'image vitesse = 1 # Dictionnaire pour suivre l'état des touches du clavier touches = {K_LEFT: False, K_RIGHT: False, K_UP: False, K_DOWN: False} # Définir ce qui se passe lorsque le jeu est en cours d'exécution while en_cours: for event in pygame.event.get(): if event.type == QUIT: en_cours = False elif event.type == MOUSEBUTTONDOWN: if rect.collidepoint(event.pos): en_mouvement = True elif event.type == MOUSEBUTTONUP: en_mouvement = False elif event.type == MOUSEMOTION and en_mouvement: rect.move_ip(event.rel) # Gestion des événements clavier elif event.type == KEYDOWN: if event.key in touches: touches[event.key] = True elif event.type == KEYUP: if event.key in touches: touches[event.key] = False # Déplacer l'image en fonction des touches enfoncées if touches[K_LEFT] and rect.left > 0: rect.move_ip(-vitesse, 0) if touches[K_RIGHT] and rect.right < largeur: rect.move_ip(vitesse, 0) if touches[K_UP] and rect.top > 0: rect.move_ip(0, -vitesse) if touches[K_DOWN] and rect.bottom < hauteur: rect.move_ip(0, vitesse) # Définir la couleur de l'écran et afficher l'image sur l'écran écran.fill(JAUNE) écran.blit(img, rect) # Construire la bordure autour de l'image pygame.draw.rect(écran, BLEU, rect, 1) # Mettre à jour l'interface graphique pygame pygame.display.update() # Quitter le jeu GUI pygame.quit()
Dans ce code, le dictionnaire touches est utilisé pour suivre l'état des touches du clavier. Lorsque la touche est enfoncée, la valeur correspondante dans le dictionnaire est définie sur True, et lorsque la touche est relâchée, la valeur est définie sur False. Ensuite, le déplacement de l'image est effectué en fonction de l'état actuel de ces touches.
Pour ralentir le mouvement de l'image lorsque la touche est enfoncée, vous pouvez ajuster la vitesse de déplacement. Vous pouvez également utiliser la fonction pygame.time.Clock() pour contrôler la vitesse de la boucle principale du jeu.
Procéder comme suit :
1. definir la variable Clock en modifiant le code comme suit:
# Définir les valeurs de fonctionnement et de déplacement en_cours = True en_mouvement = False clock = pygame.time.Clock()
Puis ajouter l'horloge (clock) pour contrôler la vitesse dans la boucle principale du jeu après pygame.display.update() comme suit :
pygame.display.update() # Contrôler la vitesse de la boucle principale clock.tick(60) # Limiter à 60 images par seconde (FPS).
La fonction clock.tick(60) limite le jeu à 60 images par seconde, ce qui permet de contrôler la vitesse globale du mouvement.