isn:pygame02
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Prochaine révision | Révision précédente | ||
| isn:pygame02 [2019/11/07 15:20] – créée techer.charles_educ-valadon-limoges.fr | isn:pygame02 [2019/11/14 10:31] (Version actuelle) – [Les activités ...] techer.charles_educ-valadon-limoges.fr | ||
|---|---|---|---|
| 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: | ||
| + | | ||
| + | |||
| + | 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) | ||
| + | </ | ||
| + | |||
| + | Une autre solution consiste à définir le nombre maximum d' | ||
| + | <code python> | ||
| + | clock = pygame.time.Clock() | ||
| + | |||
| + | # dans la boucle de jeu définir un maximum de 20 images par seconde | ||
| + | clock.tick(20) | ||
| + | </ | ||
| + | ===== 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 ... ==== | ||
| + | <WRAP center round info > | ||
| + | [[.: | ||
| + | </ | ||
| + | |||
| + | |||
| + | https:// | ||
| + | < | ||
| + | <iframe height=" | ||
| + | </ | ||
| + | |||
| + | ==== Les activités ... ==== | ||
| + | <WRAP center round info > | ||
| + | [[.: | ||
| + | </ | ||
| + | |||
isn/pygame02.1573136416.txt.gz · Dernière modification : 2019/11/07 15:20 de techer.charles_educ-valadon-limoges.fr
