Powiel tło
Część sekcji Sprite’y i obrazy ścieżki Pygame w Coddy. Lekcja 4 z 36.
Jednolity kolor daje nudne niebo. assets/backgrounds/sky.png to obraz o wymiarach 72 na 72 piksele, przygotowany do powielania: umieść kopie obok siebie, a ich krawędzie połączą się bez widocznego szwu. Pokrywanie okna kopiami jednego małego obrazu nazywa się kafelkowaniem.
Dwie pętle wyznaczają każdy lewy górny róg, po jednym wierszu siatki naraz:
for x in range(0, 640, 72):
for y in range(0, 480, 72):
screen.blit(tile, (x, y))range(0, 640, 72) oznacza 0, 72, 144 i tak dalej aż do 576. Kopia zaczynająca się przy 576 sięga do 648, poza krawędź: pygame rysuje część znajdującą się w oknie i pomija resztę, więc ostatnia kolumna jest równo przycięta.
Kafelki pokrywają całe okno, więc zastępują screen.fill: narysuj je najpierw, a potem wszystko inne na wierzchu. Ten obraz nie ma przezroczystych pikseli, więc wczytaj go za pomocą .convert() — wersji convert_alpha() przeznaczonej dla nieprzezroczystych obrazów.
Wyzwanie
Łatwy- Po
set_modewczytajassets/backgrounds/sky.pngza pomocą.convert()do zmiennej o nazwietile. - Zastąp
screen.fill(...)dwiema pętlami, które rysujątilew każdym punkcie(x, y), gdzie x należy dorange(0, 640, 72), a y dorange(0, 480, 72). - Rysuj statek po kafelkach.
Spróbuj swoich sił
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()
Wszystkie lekcje w sekcji Sprite’y i obrazy
1Wczytywanie obrazów
Wczytaj obrazUmieść go za pomocą RectPrzesuń obrazPowiel tłoPrzezroczyste piksele2Obracaj, odbijaj, skaluj
Obracaj wokół środkaKieruj się w stronę lotuSkaluj obrazObracaj względem oryginału5Kolizje z dokładnością do piksela
Prostokąty wydają się niesprawiedliweMaskiSprite’y z dokładnością do pikselaKołowe hitboxy6Animacja z arkuszy sprite’ów
Przytnij arkusz sprite’ówLicznik klatekAnimacja w czasieJednorazowa eksplozjaPoćwicz samodzielnie: Edytor online Pygame