Redimensionner une image
Fait partie de la section Sprites et images du Journey Pygame de Coddy. Leçon 8 sur 36.
Le boss d’un niveau doit paraître imposant, et un compteur de vies a besoin de petits vaisseaux. Les mêmes fichiers peuvent servir aux deux : le redimensionnement crée une copie à une autre taille.
boss = pygame.transform.scale_by(boss, 2)
icon = pygame.transform.scale(ship, (32, 32))scale_by(image, 2) multiplie les deux côtés par 2 : le boss de 64 par 64 devient un boss de 128 par 128. scale(image, (w, h)) lui donne exactement w par h pixels, même si cela l’étire.
Le redimensionnement est lent par rapport à un blit, et chaque nouvelle copie rend les pixels un peu plus flous ou pixélisés. Redimensionne une seule fois, avant la boucle, à partir du fichier original, puis dessine la copie redimensionnée à chaque image.
Crée le Rect après le redimensionnement. Un Rect créé à partir de l’image de 64 par 64 aurait l’ancienne taille, et center=(320, 150) placerait le grand boss hors du centre.
Défi
Facile- Agrandis le boss par 2 avant la boucle, puis crée
boss_rectà partir de l’image agrandie, centrée en(320, 150). - Crée
icon: le vaisseau redimensionné en(32, 32). - Dessine
icontrois fois, avec son coin supérieur gauche en(10, 10),(50, 10)et(90, 10).
Essayez vous-même
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Boss Fight")
clock = pygame.time.Clock()
boss = pygame.image.load("assets/images/boss.png").convert_alpha()
boss_rect = boss.get_rect(center=(320, 150))
ship = pygame.image.load("assets/images/ship.png").convert_alpha()
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
screen.fill((20, 22, 40))
screen.blit(boss, boss_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