Outils pour utilisateurs

Outils du site


isn:pygame03

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
isn:pygame03 [2019/11/14 10:37]
techer.charles_educ-valadon-limoges.fr créée
isn:pygame03 [2019/11/14 11:17] (Version actuelle)
techer.charles_educ-valadon-limoges.fr [Les activités ...]
Ligne 6: Ligne 6:
 ==== La fonction flip ==== ==== La fonction flip ====
  
-flip(Surface, xbool, ybool) -Surface +<code python> 
-La fonction flip permet de faire une **symétrie axiale**, **verticale** ou **horizontale** ou les **deux**. +pygame.transform.flip(Surface, xbool, ybool) 
 +</code
 +La fonction **flip** permet de faire une **symétrie axiale**, **verticale** ou **horizontale** ou les **deux**. 
  
 Elle prend en **paramètre** : Elle prend en **paramètre** :
Ligne 15: 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("fraise.png") IMG_FRAISE = pygame.image.load("fraise.png")
Ligne 20: Ligne 24:
 </code> </code>
  
-Choisissez une image png et téléchargez-là sur le site. Comme exemple, ce sera l'image **fraise.png** qui sera utilisée. +==== La fonction rotate ====
-  +
-Pour ce projet l'image +
-  * 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("fraise.png")+
 </code> </code>
-===== Déplacement de l'image avec le clavier ===== 
-  
-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()  +  * l’angle passé en paramètre est exprimé selon le sens antihoraire, en degrés, et non en radians comme c’est parfois le cas pour d’autres fonctions Pygame (le tracé d’arcs d’ellipse notamment).
-   if 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    +
-</code> +
-Pour indiquer à Pygame d'afficher l'image en fonction des coordonnées :+
  
-<code python>  +Lien : https://stackoverflow.com/questions/4183208/how-do-i-rotate-an-image-around-its-center-using-pygame
-ECRAN.blit(IMG_FRAISE, (x_fraise, y_fraise)) +
-</code> +
-===== Le programme complet ===== +
-<code python> +
-import pygame +
-pygame.init() +
-HAUTEUR = 400 +
-LARGEUR = 400 +
-COULEUR_FOND = (255, 255, 255) +
-ECRAN = pygame.display.set_mode((LARGEUR, HAUTEUR)) +
-ARRET = False+
  
-# image FRAISE +==== La fonction scale ====
-x_fraise 50 +
-y_fraise 50 +
-largeur_fraise 40 +
-hauteur_fraise 40 +
-IMG_FRAISE pygame.image.load("fraise.png"+
- +
-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: +
-           x_fraise = x_fraise + 4 +
-        elif event.key == pygame.K_LEFT: +
-           x_fraise = x_fraise - 4  +
- +
-  ECRAN.blit(IMG_FRAISE, (x_fraise, y_fraise)) +
-  pygame.display.update() +
-</code> +
-===== Déplacement automatique d'une image ===== +
-  +
-Cette fois -ci c'est image d'un ballon qui va se déplacer de gauche à droite. N'oubliez pas de télécharger cette image ballon.png +
- +
-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("ballon.png"+
-</code> +
-Précisons la vitesse de déplacement du ballon sur les axes x et y .+
 <code python> <code python>
-ballonSpeed = [1 0] +pygame.transform.scale(Surface(width, height), DestSurface = None)
 </code> </code>
-Création d'une surface invisible qui correspond aux dimensions du ballon 
-<code python> 
-ballonRect = IMG_BALLON.get_rect() 
-</code> 
-En Pygame, la notion de surface est fondamentale, car la manipulation de cet élément de géométrie est un aspect important et conséquent du développement du jeu vidéo. Une surface correspond à une ligne affichée sur l’écran ou à un polygone affiché sur l’écran ; ce polygone peut être rempli de couleur, ou non. Une part importante de la gestion graphique consistera donc à créer et à manipuler les surfaces Pygame.  
  
-Pour déplacer le ballon à chaque itération, on inclut  l'image du ballon dans la surface rectangle et on déplace cette surface : +La fonction scale permet de redimensionner une surface. On passe en paramètre la hauteur et la largeur de la surface cible.
-<code python> +
-ECRAN.blit(IMG_BALLON, ballonRect) +
-ballonRect = ballonRect.move(ballonSpeed) +
-</code> +
-Quand le ballon quitte la fenêtre, on inverse la vitesse de déplacement : +
-<code python> +
- if ballonRect.right > LARGEUR:  +
-    ballonSpeed[0] = - ballonSpeed[0] +
-</code> +
- +
-Pour gérer la vitesse de rafraîchissement de l'écran, on peut introduite un délai en millisecondes. Par exemple un délai de 100 millisecondes fera exécuter la boucle 10 fois par seconde :   +
-<code python> +
-pygame.time.delay(100) +
-</code> +
- +
-Une autre solution consiste à définir le nombre maximum d'images par seconde avec la fonction **tick** de l'objet **Clock** de Pygame :  +
-<code python> +
-clock = pygame.time.Clock() +
- +
-# dans la boucle de jeu définir un maximum de 20 images par seconde +
-clock.tick(20) +
-</code>+
 ===== Le programme complet ===== ===== Le programme complet =====
 <code python> <code python>
Ligne 144: 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("fraise.png") 
  
-# image Ballon +IMG_FRAISE = pygame.image.load("fraise.png").convert_alpha() 
-x_ballon = 10 +#IMG_FRAISE pygame.transform.flip(IMG_FRAISE, True, True) 
-y_ballon = 10 +
-largeur_ballon = 20 +
-hauteur_ballon = 20 +
-IMG_BALLON = pygame.image.load("ballon.png") +
-ballonSpeed = [1,  0] +
-#IMG_BALLON.move(ballonSpeed+
-ballonRect IMG_BALLON.get_rect()+
 while not ARRET: while not ARRET:
   pygame.time.delay(100)   pygame.time.delay(100)
Ligne 164: 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:
-        x_fraise x_fraise + 4+        IMG_FRAISE pygame.transform.flip(IMG_FRAISE, True, False) 
 +      elif event.key == pygame.K_UP: 
 +        IMG_FRAISE = pygame.transform.flip(IMG_FRAISE, False, True) 
 +      # rotation
       elif event.key == pygame.K_LEFT:       elif event.key == pygame.K_LEFT:
-        x_fraise x_fraise - 4   +        IMG_FRAISE pygame.transform.rotate(IMG_FRAISE, 10
- +      # redimensionner 
-  ECRAN.blit(IMG_FRAISE, (x_fraise, y_fraise)+      elif event.key == pygame.K_DOWN
- +        IMG_FRAISE pygame.transform.scale(IMG_FRAISE, (40,40))
-  ECRAN.blit(IMG_BALLON, ballonRect) +
-  ballonRect ballonRect.move(ballonSpeed) +
-  if ballonRect.right > LARGEUR:  +
-    ballonSpeed[0] - ballonSpeed[0]+
  
-  pygame.display.update()+    ECRAN.blit(IMG_FRAISE, (x_fraise, y_fraise)) 
 +    pygame.display.update()
 </code> </code>
 ==== Les activités ... ==== ==== Les activités ... ====
Ligne 184: Ligne 85:
  
  
-https://repl.it/@charlestecher/Gerer-une-image+https://repl.it/@charlestecher/Transformations-geometriques
 <html> <html>
-<iframe height="400px" width="100%" src="https://repl.it/@charlestecher/Gerer-une-image?lite=true" scrolling="no" frameborder="no" allowtransparency="true" allowfullscreen="true" sandbox="allow-forms allow-pointer-lock allow-popups allow-same-origin allow-scripts allow-modals"></iframe>+<iframe height="400px" width="100%" src="https://repl.it/@charlestecher/Transformations-geometriques?lite=true" scrolling="no" frameborder="no" allowtransparency="true" allowfullscreen="true" sandbox="allow-forms allow-pointer-lock allow-popups allow-same-origin allow-scripts allow-modals"></iframe>
 </html> </html>
  
isn/pygame03.1573724264.txt.gz · Dernière modification: 2019/11/14 10:37 de techer.charles_educ-valadon-limoges.fr