Orijinalinden Döndür
Coddy'nin Pygame Journey'sinin Sprite'lar ve Görseller bölümünün bir parçası. Ders 9 / 36.
Sürekli dönen bir dikenli top, her karede biraz döner. Bunu yazmanın cazip bir yolu vardır ve bu yol sorun çıkarır:
ball = pygame.transform.rotate(ball, 2) # yanlışHer karede, bir önceki dönüşte elde edilen görüntü döndürülür. Her döndürme yarı saydam bir kenarlık ekler; bu yüzden Surface her karede yaklaşık yüzde 3 büyür: yarım saniye sonra boyutu iki katına çıkar, iki saniye sonra ise genişliği neredeyse 1.800 piksele ulaşır. Ayrıca pikseller, her döndürmede biraz daha bulanıklaşır. Oyun kısa sürede sürünerek ilerleyecek kadar yavaşlar.
Bunun yerine orijinali ve açıyı sakla, ardından her karede döndürülmüş görüntüyü orijinalinden oluştur:
angle += 2
spun = pygame.transform.rotate(ball, angle)
screen.blit(spun, spun.get_rect(center=(320, 240)))Artık spun, açı ne olursa olsun dosyanın yalnızca bir döndürme uzağındadır: boyutu hiçbir zaman 67'ye 67 pikselden büyük olmaz ve bir kez döndürülmüş hâlinden daha bulanık olmaz. Aynı kural her dönüşüm için geçerlidir: son kopyadan değil, orijinalden çalış.
Görev
Orta- Döngüden önce
angle = 0yap. - Her karede
angledeğerine 2 ekle. - Orijinal
ballnesnesinianglekadar döndür ve sonucu merkez noktası(320, 240)olacak şekilde çiz.ballnesnesinin kendisini asla değiştirme.
Kendin dene
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Spinning Spikes")
clock = pygame.time.Clock()
ball = pygame.image.load("assets/images/spike_ball.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(ball, ball.get_rect(center=(320, 240)))
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