Menu
CoddyTech

Putar dari Gambar Asli

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

Bola berduri yang terus berputar berubah sedikit setiap frame. Ada cara yang tampak menggoda untuk menulisnya, tetapi cara itu menyebabkan masalah:

ball = pygame.transform.rotate(ball, 2)  # salah

Setiap frame memutar gambar yang sudah diputar sebelumnya. Setiap rotasi menambahkan tepian tembus pandang, sehingga Surface membesar sekitar 3 persen setiap frame: ukurannya menjadi dua kali lipat setelah setengah detik, dan lebarnya hampir 1.800 piksel setelah dua detik. Pikselnya juga sedikit lebih buram setiap kali diputar. Game pun segera melambat hingga hampir tidak berjalan.

Simpan gambar asli dan sudutnya, lalu buat gambar yang diputar dari gambar asli pada setiap frame:

angle += 2
spun = pygame.transform.rotate(ball, angle)
screen.blit(spun, spun.get_rect(center=(320, 240)))

Sekarang spun hanya berjarak satu rotasi dari file aslinya, berapa pun sudutnya: ukurannya tidak pernah lebih dari 67 kali 67 piksel dan tidak pernah lebih buram daripada setelah satu kali diputar. Aturan yang sama berlaku untuk setiap transformasi: gunakan gambar asli, bukan salinan terakhir.

challenge icon

Tantangan

Sedang
  1. Sebelum perulangan, buat angle = 0.
  2. Setiap frame, tambahkan 2 ke angle.
  3. Putar ball asli sebesar angle dan gambar hasilnya dengan titik pusat di (320, 240). Jangan pernah mengubah ball itu sendiri.

Coba sendiri

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 iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Sprite dan Gambar

Latihan sendiri: Playground Pygame