Répéter un arrière-plan
Fait partie de la section Sprites et images du Journey Pygame de Coddy. Leçon 4 sur 36.
Une couleur unie donne un ciel terne. assets/backgrounds/sky.png est une image de 72 sur 72 pixels conçue pour être répétée : placez des copies côte à côte et les bords s’assemblent sans laisser de joint. Recouvrir la fenêtre avec des copies d’une petite image s’appelle le pavage.
Deux boucles donnent chaque coin supérieur gauche, une rangée de la grille à la fois :
for x in range(0, 640, 72):
for y in range(0, 480, 72):
screen.blit(tile, (x, y))range(0, 640, 72) donne 0, 72, 144 et ainsi de suite jusqu’à 576. La copie à 576 atteint 648, au-delà du bord : pygame dessine la partie située dans la fenêtre et ignore le reste, de sorte que la dernière colonne est coupée proprement.
Les tuiles recouvrent toute la fenêtre, elles remplacent donc screen.fill : dessinez-les d’abord, puis dessinez tout le reste par-dessus. Cette image n’a pas de pixels transparents, chargez-la donc avec .convert(), la version de convert_alpha() destinée aux images opaques.
Défi
Facile- Après
set_mode, chargeassets/backgrounds/sky.pngavec.convert()dans une variable nomméetile. - Remplace
screen.fill(...)par les deux boucles qui affichenttileà chaque position(x, y), x dansrange(0, 640, 72)et y dansrange(0, 480, 72). - Continue à dessiner le vaisseau après les tuiles.
Essayez vous-même
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Sky Tiles")
clock = pygame.time.Clock()
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(ship, (288, 360))
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