Skaluj obraz
Część sekcji Sprite’y i obrazy ścieżki Pygame w Coddy. Lekcja 8 z 36.
Boss poziomu powinien wyglądać na dużego, a licznik żyć potrzebuje małych statków. Te same pliki mogą służyć do obu celów: skalowanie tworzy kopię o zmienionym rozmiarze.
boss = pygame.transform.scale_by(boss, 2)
icon = pygame.transform.scale(ship, (32, 32))scale_by(image, 2) mnoży oba wymiary przez 2: boss o wymiarach 64 na 64 staje się obrazem o wymiarach 128 na 128. scale(image, (w, h)) nadaje obrazowi dokładnie wymiary w na h pikseli, nawet jeśli go rozciąga.
Skalowanie jest powolne w porównaniu z blitowaniem, a każda kolejna kopia nieco bardziej rozmywa piksele lub sprawia, że stają się kanciaste. Skaluj obraz tylko raz, przed pętlą, na podstawie oryginalnego pliku, a następnie rysuj przeskalowaną kopię w każdej klatce.
Utwórz Rect po skalowaniu. Rect utworzony na podstawie obrazu o wymiarach 64 na 64 miałby stary rozmiar, a center=(320, 150) umieściłoby dużego bossa poza środkiem.
Wyzwanie
Łatwy- Powiększ bossa 2 razy przed pętlą, a następnie utwórz
boss_rectze przeskalowanego obrazu, wyśrodkowany w punkcie(320, 150). - Utwórz
icon: statek przeskalowany do(32, 32). - Narysuj
icontrzy razy, z lewym górnym rogiem w punktach(10, 10),(50, 10)i(90, 10).
Spróbuj swoich sił
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()
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