Faire pivoter autour du centre
Fait partie de la section Sprites et images du Journey Pygame de Coddy. Leçon 6 sur 36.
Un vaisseau qui tourne a besoin d’une image tournée. pygame.transform.rotate(image, angle) te donne une nouvelle Surface : l’image tournée de angle degrés dans le sens antihoraire. Un angle négatif la tourne dans le sens horaire. L’image d’origine ne change pas.
Un carré tourné ne tient pas dans un carré de la même taille, donc la nouvelle Surface est plus grande : le vaisseau tourné de 45 degrés mesure 90 sur 90 pixels. Si tu l’affiches à l’ancien coin supérieur gauche, son milieu se déplace vers le bas et vers la droite ; la rotation fait tanguer le vaisseau dans la fenêtre.
Garde plutôt le milieu à la même place. Demande à l’image tournée un Rect centré sur le même point :
rotated = pygame.transform.rotate(ship, angle)
rotated_rect = rotated.get_rect(center=(320, 240))
screen.blit(rotated, rotated_rect)Tourne le ship d’origine de la valeur complète de angle à chaque image. La direction du vaisseau est le nombre contenu dans angle, et l’image est créée à partir de cette valeur.
Défi
Moyen- Avant la boucle, définis
angle = 0. - Maintenir la flèche gauche ajoute 3 à
angleà chaque image (dans le sens antihoraire) ; maintenir la flèche droite en soustrait 3. - À chaque image, fais pivoter
shipdeangleet dessine le résultat avec son centre en(320, 240).
Essayez vous-même
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Turn the Ship")
clock = pygame.time.Clock()
ship = pygame.image.load("assets/images/ship.png").convert_alpha()
ship_rect = ship.get_rect(center=(320, 240))
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
screen.fill((20, 22, 40))
screen.blit(ship, ship_rect)
pygame.display.flip()
clock.tick(60)
pygame.quit()
Toutes les leçons de Sprites et images
1Charger des images
Charger une imageLa placer avec un rectangleDéplacer l’imageRépéter un arrière-planPixels transparents2Tourner, retourner, redimensionner
Faire pivoter autour du centreRegarder dans la direction du volRedimensionner une imagePivoter à partir de l’original5Collisions au pixel près
Les rectangles semblent injustesMasquesSprites au pixel prèsZones de collision circulaires3Les classes pour les objets du jeu
Votre première classeLes méthodesSelf est l’objetUne liste d’objetsDes objets avec des imagesUne sous-classe6Animation à partir de feuilles de sprites
Découper une feuille de spritesUn compteur de framesAnimer avec le tempsUne explosion à déclenchement uniqueEntraînez-vous par vous-même : Playground Pygame