Menu
CoddyTech

Bir Görseli Ölçekle

Coddy'nin Pygame Journey'sinin Sprite'lar ve Görseller bölümünün bir parçası. Ders 8 / 36.

Bir seviyenin bölüm sonu canavarı büyük görünmeli, bir can sayacı içinse küçük gemiler gerekir. Aynı dosyalar ikisini de yapabilir: ölçeklendirme, yeniden boyutlandırılmış bir kopya oluşturur.

boss = pygame.transform.scale_by(boss, 2)
icon = pygame.transform.scale(ship, (32, 32))

scale_by(image, 2), her iki kenarı da 2 ile çarpar: 64'e 64 boyutundaki bölüm sonu canavarı 128'e 128 boyutuna dönüşür. scale(image, (w, h)), görüntüyü uzatsa bile onu tam olarak w'ye h piksel boyutuna getirir.

Ölçeklendirme, blit işlemine kıyasla yavaştır ve her yeni kopya pikselleri biraz daha bulanıklaştırır veya bloklu hâle getirir. Orijinal dosyadan, döngüden önce bir kez ölçeklendirme yap ve her karede ölçeklendirilmiş kopyayı çiz.

Ölçeklendirmeden sonra Rect oluştur. 64'e 64 boyutundaki resimden oluşturulan bir Rect eski boyutta kalır ve center=(320, 150) büyük bölüm sonu canavarını merkezden kaydırır.

challenge icon

Görev

Kolay
  1. Döngüden önce boss’u 2 kat ölçeklendir, ardından ölçeklendirilmiş görüntüyü boss_rect nesnesine dönüştür ve merkezini (320, 150) konumuna ayarla.
  2. Gemi (32, 32) boyutuna ölçeklendirilerek icon oluştur.
  3. icon öğesini sol üst köşeleri (10, 10), (50, 10) ve (90, 10) konumlarında olacak şekilde üç kez çiz.

Kendin dene

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()

Sprite'lar ve Görseller bölümündeki tüm dersler

Kendi başına pratik yap: Pygame playground