Menu
CoddyTech

Ubah Skala Gambar

Termasuk bagian Sprite dan Gambar dalam perjalanan Pygame di Coddy. Pelajaran 8 dari 36.

Boss dalam suatu level sebaiknya terlihat besar, dan penghitung nyawa memerlukan kapal-kapal kecil. File yang sama bisa digunakan untuk keduanya: penskalaan membuat salinan dengan ukuran berbeda.

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

scale_by(image, 2) mengalikan kedua sisi dengan 2: boss berukuran 64 kali 64 menjadi 128 kali 128. scale(image, (w, h)) membuatnya tepat berukuran w kali h piksel, meskipun itu membuat gambarnya teregang.

Penskalaan lambat dibandingkan dengan blit, dan setiap salinan baru membuat piksel sedikit lebih buram atau kotak-kotak. Lakukan penskalaan sekali sebelum perulangan, dari file asli, lalu gambar salinan yang sudah diskalakan di setiap frame.

Buat Rect setelah melakukan penskalaan. Rect yang dibuat dari gambar berukuran 64 kali 64 akan memiliki ukuran lama, dan center=(320, 150) akan menempatkan boss besar tidak di tengah.

challenge icon

Tantangan

Mudah
  1. Ubah skala boss sebesar 2 sebelum perulangan, lalu buat boss_rect dari gambar yang sudah diubah skalanya, dengan titik tengah di (320, 150).
  2. Buat icon: ship yang diubah skalanya menjadi (32, 32).
  3. Gambar icon tiga kali, dengan sudut kiri atasnya di (10, 10), (50, 10), dan (90, 10).

Coba sendiri

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

Semua pelajaran di Sprite dan Gambar

Latihan sendiri: Playground Pygame