Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
isn:pygame02 [2019/11/07 15:20] techer.charles_educ-valadon-limoges.fr |
isn:pygame02 [2019/11/13 11:59] techer.charles_educ-valadon-limoges.fr [Le programme complet] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== Pygame : gérer une image ====== | ====== Pygame : gérer une image ====== | ||
+ | ===== Utiliser des images ===== | ||
+ | Choisissez une image png et téléchargez-là sur le site. Comme exemple, ce sera l' | ||
+ | |||
+ | Pour ce projet l' | ||
+ | * doit avoir les dimensions de 40x40 pixels, | ||
+ | * a le coin supérieur gauche positionné aux coordonnées (50, 50). | ||
+ | |||
+ | Voici les variables à définir : | ||
+ | <code python> | ||
+ | # image FRAISE | ||
+ | x_fraise = 50 | ||
+ | y_fraise = 50 | ||
+ | largeur_fraise = 40 | ||
+ | hauteur_fraise = 40 | ||
+ | IMG_FRAISE = pygame.image.load(" | ||
+ | </ | ||
+ | ===== Déplacement de l' | ||
+ | |||
+ | Voici les déplacement à gérer : | ||
+ | * Quand on appuie sur la touche [Flèche à droite] du clavier, la fraise de déplace à droite. | ||
+ | * Quand on appuie sur la touche [Flèche à gauche] du clavier, la fraise de déplace à gauche | ||
+ | |||
+ | <code python> | ||
+ | for event in pygame.event.get(): | ||
+ | if event.type == pygame.KEYDOWN: | ||
+ | if event.key == pygame.K_RIGHT: | ||
+ | | ||
+ | elif event.key == pygame.K_LEFT: | ||
+ | x_fraise = x_fraise - 4 | ||
+ | </ | ||
+ | Pour indiquer à Pygame d' | ||
+ | |||
+ | <code python> | ||
+ | ECRAN.blit(IMG_FRAISE, | ||
+ | </ | ||
+ | ===== Le programme complet ===== | ||
+ | <code python> | ||
+ | import pygame | ||
+ | pygame.init() | ||
+ | HAUTEUR = 400 | ||
+ | LARGEUR = 400 | ||
+ | COULEUR_FOND = (255, 255, 255) | ||
+ | ECRAN = pygame.display.set_mode((LARGEUR, | ||
+ | ARRET = False | ||
+ | |||
+ | # image FRAISE | ||
+ | x_fraise = 50 | ||
+ | y_fraise = 50 | ||
+ | largeur_fraise = 40 | ||
+ | hauteur_fraise = 40 | ||
+ | IMG_FRAISE = pygame.image.load(" | ||
+ | |||
+ | while not ARRET: | ||
+ | ECRAN.fill(COULEUR_FOND) | ||
+ | for event in pygame.event.get(): | ||
+ | if event.type == pygame.KEYDOWN: | ||
+ | if event.key == pygame.K_ESCAPE: | ||
+ | ARRET = True | ||
+ | elif event.key == pygame.K_RIGHT: | ||
+ | | ||
+ | elif event.key == pygame.K_LEFT: | ||
+ | x_fraise = x_fraise - 4 | ||
+ | |||
+ | ECRAN.blit(IMG_FRAISE, | ||
+ | pygame.display.update() | ||
+ | </ | ||
+ | ===== Déplacement automatique d'une image ===== | ||
+ | |||
+ | Cette fois -ci c'est image d'un ballon qui va se déplacer de gauche à droite. N' | ||
+ | |||
+ | Voici les variables à définir : | ||
+ | <code python> | ||
+ | # image Ballon | ||
+ | x_ballon = 10 | ||
+ | y_ballon = 10 | ||
+ | largeur_ballon = 20 | ||
+ | hauteur_ballon = 20 | ||
+ | IMG_BALLON = pygame.image.load(" | ||
+ | </ | ||
+ | Précisons la vitesse de déplacement du ballon sur les axes x et y . | ||
+ | <code python> | ||
+ | ballonSpeed = [1, 0] | ||
+ | </ | ||
+ | Création d'une surface invisible qui correspond aux dimensions du ballon | ||
+ | <code python> | ||
+ | ballonRect = IMG_BALLON.get_rect() | ||
+ | </ | ||
+ | En Pygame, la notion de surface est fondamentale, | ||
+ | |||
+ | Pour déplacer le ballon à chaque itération, on inclut | ||
+ | <code python> | ||
+ | ECRAN.blit(IMG_BALLON, | ||
+ | ballonRect = ballonRect.move(ballonSpeed) | ||
+ | </ | ||
+ | Quand le ballon quitte la fenêtre, on inverse la vitesse de déplacement : | ||
+ | <code python> | ||
+ | if ballonRect.right > LARGEUR: | ||
+ | ballonSpeed[0] = - ballonSpeed[0] | ||
+ | </ | ||
+ | |||
+ | Pour gérer la vitesse de rafraîchissement de l' | ||
+ | <code python> | ||
+ | pygame.time.delay(100) | ||
+ | </ | ||
+ | ===== Le programme complet ===== | ||
+ | <code python> | ||
+ | import pygame | ||
+ | pygame.init() | ||
+ | HAUTEUR = 400 | ||
+ | LARGEUR = 400 | ||
+ | COULEUR_FOND = (255, 255, 255) | ||
+ | ECRAN = pygame.display.set_mode((LARGEUR, | ||
+ | ARRET = False | ||
+ | |||
+ | # image FRAISE | ||
+ | x_fraise = 50 | ||
+ | y_fraise = 50 | ||
+ | largeur_fraise = 40 | ||
+ | hauteur_fraise = 40 | ||
+ | IMG_FRAISE = pygame.image.load(" | ||
+ | |||
+ | # image Ballon | ||
+ | x_ballon = 10 | ||
+ | y_ballon = 10 | ||
+ | largeur_ballon = 20 | ||
+ | hauteur_ballon = 20 | ||
+ | IMG_BALLON = pygame.image.load(" | ||
+ | ballonSpeed = [1, 0] | ||
+ | # | ||
+ | ballonRect = IMG_BALLON.get_rect() | ||
+ | while not ARRET: | ||
+ | pygame.time.delay(100) | ||
+ | ECRAN.fill(COULEUR_FOND) | ||
+ | for event in pygame.event.get(): | ||
+ | if event.type == pygame.QUIT: | ||
+ | sys.exit() | ||
+ | elif event.type == pygame.KEYDOWN: | ||
+ | if event.key == pygame.K_RIGHT: | ||
+ | x_fraise = x_fraise + 4 | ||
+ | elif event.key == pygame.K_LEFT: | ||
+ | x_fraise = x_fraise - 4 | ||
+ | |||
+ | ECRAN.blit(IMG_FRAISE, | ||
+ | |||
+ | ECRAN.blit(IMG_BALLON, | ||
+ | ballonRect = ballonRect.move(ballonSpeed) | ||
+ | if ballonRect.right > LARGEUR: | ||
+ | ballonSpeed[0] = - ballonSpeed[0] | ||
+ | |||
+ | pygame.display.update() | ||
+ | </ | ||
==== Les activités ... ==== | ==== Les activités ... ==== | ||
<WRAP center round info > | <WRAP center round info > | ||
Ligne 7: | Ligne 158: | ||
+ | https:// | ||
+ | < | ||
+ | <iframe height=" | ||
+ | </ |