Menu
CoddyTech

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ış.

challenge icon

Görev

Orta
  1. Döngüden önce angle = 0 yap.
  2. Her karede angle değerine 2 ekle.
  3. Orijinal ball nesnesini angle kadar döndür ve sonucu merkez noktası (320, 240) olacak şekilde çiz. ball nesnesinin 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()
quiz iconKendini test et

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

Kendi başına pratik yap: Pygame playground