Menu
CoddyTech

Ladrilhe o plano de fundo

Parte da seção Sprites e imagens do Journey de Pygame da Coddy. Lição 4 de 36.

Uma cor uniforme deixa o céu sem graça. assets/backgrounds/sky.png é uma imagem de 72 por 72 feita para se repetir: coloque cópias lado a lado, e as bordas se encaixam sem deixar emendas. Cobrir a janela com cópias de uma única imagem pequena é chamado de preenchimento em mosaico.

Dois loops percorrem cada canto superior esquerdo, uma linha da grade por vez:

for x in range(0, 640, 72):
    for y in range(0, 480, 72):
        screen.blit(tile, (x, y))

range(0, 640, 72) é 0, 72, 144 e assim por diante, até 576. A cópia em 576 chega a 648, passando da borda: o pygame desenha a parte que fica dentro da janela e ignora o restante, então a última coluna é cortada perfeitamente.

Os blocos cobrem a janela inteira, então eles substituem screen.fill: desenhe-os primeiro e depois desenhe todo o resto por cima. Esta imagem não tem pixels transparentes, então carregue-a com .convert(), a versão de convert_alpha() para imagens opacas.

challenge icon

Desafio

Fácil
  1. Depois de set_mode, carregue assets/backgrounds/sky.png com .convert() em uma variável chamada tile.
  2. Substitua screen.fill(...) pelos dois loops que desenham tile em cada (x, y), com x em range(0, 640, 72) e y em range(0, 480, 72).
  3. Continue desenhando a nave depois dos blocos.

Experimente você mesmo

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()

Todas as lições de Sprites e imagens

Pratique por conta própria: Playground de Pygame