Saydam Pikseller
Coddy'nin Pygame Journey'sinin Sprite'lar ve Görseller bölümünün bir parçası. Ders 5 / 36.
Bir görüntü dosyası her zaman bir dikdörtgendir, ancak bir düşman gemisi öyle değildir. Çevresindeki pikseller şeffaftır: PNG'deki her pikselin, 0'dan (şeffaf) 255'e (opak) kadar değer alan dördüncü bir sayısı, yani alfa değeri vardır.
Başlangıç dosyası, üç düşmanı alfa değerini atan convert() ile yükler: şeffaf her piksel siyaha dönüşür ve her düşman siyah bir kutunun içinde kalır. convert_alpha() alfa değerini korur; böylece pencereyi yalnızca opak pikseller kaplar. Düz bir dikdörtgen olmayan her şey için bunu kullan.
Rect hâlâ dikdörtgenin tamamını kapsar. Resmin kapladığı kutuyu görmek için dış çizgisini çiz:
rect = red.get_rect(topleft=(128, 200))
screen.blit(red, rect)
pygame.draw.rect(screen, (90, 90, 120), rect, 1)Son sayı olan 1, Rect'i doldurmak yerine 1 piksellik bir dış çizgi çizer. Dış çizgi ile gemi arasındaki boşluklara bak. İki Rect, içlerindeki resimler birbirine değmediği hâlde üst üste gelebilir ve Rect'lerle yapılan çarpışma testi yine de çarpıştıklarını söyler. 5. bölüm bunu çözüyor.
Görev
Kolay- Siyah kutuların kaybolması için üç düşmanı
.convert()yerine.convert_alpha()ile yükle. - Her düşmanın Rect'ini
(90, 90, 120)renginde, 1 piksel kalınlığında çerçevele. Düşmanlar(128, 200),(288, 200)ve(448, 200)konumlarında kalır.
Kendin dene
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Three Enemies")
clock = pygame.time.Clock()
red = pygame.image.load("assets/images/enemy_red.png").convert()
green = pygame.image.load("assets/images/enemy_green.png").convert()
yellow = pygame.image.load("assets/images/enemy_yellow.png").convert()
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
screen.fill((20, 22, 40))
screen.blit(red, (128, 200))
screen.blit(green, (288, 200))
screen.blit(yellow, (448, 200))
pygame.display.flip()
clock.tick(60)
pygame.quit()
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Sprite'lar ve Görseller bölümündeki tüm dersler
4Sprite'lar ve Gruplar
Sprite SınıfıGruplarkill() ile Kaldırmaspritecollide ile YakalamaGruba Karşı Grup2Döndür, Yansıt, Ölçekle
Merkez Etrafında DöndürUçtuğun Yöne DönBir Görseli ÖlçekleOrijinalinden Döndür5Piksel Hassasiyetinde Çarpışmalar
Dikdörtgenler Haksız HissettiriyorMaskelerPiksel Hassasiyetinde Sprite'larDaire Hitbox'ları3Oyun Nesneleri için Sınıflar
İlk SınıfınızMetotlarSelf Nesnenin KendisidirNesneler ListesiGörselli NesnelerBir Alt Sınıf6Sprite Sheet'lerden Animasyon
Bir Sprite Sheet'i KesmekBir Kare SayacıZamanla AnimasyonTek Seferlik Bir PatlamaKendi başına pratik yap: Pygame playground