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 | ||
isn:pygame03 [2019/11/14 10:38] techer.charles_educ-valadon-limoges.fr |
isn:pygame03 [2019/11/14 11:17] (Version actuelle) techer.charles_educ-valadon-limoges.fr [Les activités ...] |
||
---|---|---|---|
Ligne 7: | Ligne 7: | ||
<code python> | <code python> | ||
- | flip(Surface, | + | pygame.transform.flip(Surface, |
</ | </ | ||
La fonction **flip** permet de faire une **symétrie axiale**, **verticale** ou **horizontale** ou les **deux**. | La fonction **flip** permet de faire une **symétrie axiale**, **verticale** ou **horizontale** ou les **deux**. | ||
Ligne 17: | Ligne 17: | ||
Si les deux booléens sont à True, alors on procède aux deux symétries. | Si les deux booléens sont à True, alors on procède aux deux symétries. | ||
+ | === Exemple : === | ||
+ | |||
<code python> | <code python> | ||
IMG_FRAISE = pygame.image.load(" | IMG_FRAISE = pygame.image.load(" | ||
Ligne 22: | Ligne 24: | ||
</ | </ | ||
- | Choisissez une image png et téléchargez-là sur le site. Comme exemple, ce sera l' | + | ==== La fonction rotate ==== |
- | + | ||
- | 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> | <code python> | ||
- | # image FRAISE | + | pygame.transform.rotate(Surface, angle) |
- | 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> | + | La fonction **rotate** permet de faire faire une rotation à la surface |
- | 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> | + | Lien : https:// |
- | ECRAN.blit(IMG_FRAISE, | + | |
- | </code> | + | |
- | ===== Le programme complet ===== | + | |
- | <code python> | + | |
- | import | + | |
- | pygame.init() | + | |
- | HAUTEUR = 400 | + | |
- | LARGEUR = 400 | + | |
- | COULEUR_FOND = (255, 255, 255) | + | |
- | ECRAN = pygame.display.set_mode((LARGEUR, | + | |
- | ARRET = False | + | |
- | # image FRAISE | + | ==== La fonction scale ==== |
- | x_fraise | + | |
- | y_fraise | + | |
- | largeur_fraise | + | |
- | hauteur_fraise | + | |
- | IMG_FRAISE | + | |
- | + | ||
- | while not ARRET: | + | |
- | ECRAN.fill(COULEUR_FOND) | + | |
- | for event in pygame.event.get(): | + | |
- | if event.type | + | |
- | if event.key | + | |
- | 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> | <code python> | ||
- | ballonSpeed = [1, | + | pygame.transform.scale(Surface, (width, height), DestSurface = None) |
</ | </ | ||
- | 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 | + | La fonction scale permet de redimensionner une surface. |
- | <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 ===== | ===== Le programme complet ===== | ||
<code python> | <code python> | ||
Ligne 146: | Ligne 53: | ||
x_fraise = 50 | x_fraise = 50 | ||
y_fraise = 50 | y_fraise = 50 | ||
- | largeur_fraise = 40 | ||
- | hauteur_fraise = 40 | ||
- | IMG_FRAISE = pygame.image.load(" | ||
- | # image Ballon | + | IMG_FRAISE |
- | x_ballon = 10 | + | # |
- | y_ballon = 10 | + | |
- | largeur_ballon = 20 | + | |
- | hauteur_ballon = 20 | + | |
- | IMG_BALLON | + | |
- | ballonSpeed = [1, 0] | + | |
- | #IMG_BALLON.move(ballonSpeed) | + | |
- | ballonRect | + | |
while not ARRET: | while not ARRET: | ||
pygame.time.delay(100) | pygame.time.delay(100) | ||
Ligne 166: | Ligne 64: | ||
sys.exit() | sys.exit() | ||
elif event.type == pygame.KEYDOWN: | elif event.type == pygame.KEYDOWN: | ||
+ | # symétrie axiale | ||
if event.key == pygame.K_RIGHT: | if event.key == pygame.K_RIGHT: | ||
- | | + | |
+ | elif event.key == pygame.K_UP: | ||
+ | IMG_FRAISE = pygame.transform.flip(IMG_FRAISE, | ||
+ | # rotation | ||
elif event.key == pygame.K_LEFT: | elif event.key == pygame.K_LEFT: | ||
- | | + | |
- | + | # redimensionner | |
- | ECRAN.blit(IMG_FRAISE, | + | elif event.key == pygame.K_DOWN: |
- | + | | |
- | ECRAN.blit(IMG_BALLON, | + | |
- | ballonRect | + | |
- | if ballonRect.right > LARGEUR: | + | |
- | | + | |
- | | + | ECRAN.blit(IMG_FRAISE, |
+ | | ||
</ | </ | ||
==== Les activités ... ==== | ==== Les activités ... ==== | ||
Ligne 186: | Ligne 85: | ||
- | https:// | + | https:// |
< | < | ||
- | <iframe height=" | + | <iframe height=" |
</ | </ | ||