Menu
CoddyTech

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.

challenge icon

Défi

Facile
  1. Après set_mode, charge assets/backgrounds/sky.png avec .convert() dans une variable nommée tile.
  2. Remplace screen.fill(...) par les deux boucles qui affichent tile à chaque position (x, y), x dans range(0, 640, 72) et y dans range(0, 480, 72).
  3. 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

Entraînez-vous par vous-même : Playground Pygame