Ledakan Sekali Jalan
Termasuk bagian Sprite dan Gambar dalam perjalanan Pygame di Coddy. Pelajaran 28 dari 36.
Beberapa animasi diputar sekali lalu berakhir: sebuah ledakan menampilkan explosion_1.png hingga explosion_4.png, lalu menghilang. Sebagai sprite, animasi itu dapat menjalankan penghitungnya sendiri dan menghapus dirinya saat gambar habis:
def update(self):
self.timer += 1
if self.timer == 5:
self.timer = 0
self.index += 1
if self.index == len(explosion_frames):
self.kill()
else:
self.image = explosion_frames[self.index]Setiap ledakan memiliki timer dan index sendiri, sehingga sepuluh ledakan yang dimulai pada waktu berbeda masing-masing diputar dari awal. Cukup ubah self.image: grup akan menggambar gambar apa pun yang sedang dimiliki sprite.
Periksa apakah animasi sudah berakhir sebelum membaca list: explosion_frames[4] tidak ada, dan setelah gambar terakhir ditampilkan selama 5 frame, kill() mengeluarkan ledakan dari grup. Klik di mana saja pada jendela untuk memicu ledakan.
Tantangan
SedangBeri Explosion sebuah update method: setiap 5 frame, objek berpindah ke gambar berikutnya di explosion_frames, dan setelah gambar keempat ditampilkan selama 5 frame, objek memanggil self.kill().
Coba sendiri
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Explosions")
clock = pygame.time.Clock()
explosion_frames = []
for n in range(1, 5):
explosion_frames.append(pygame.image.load(f"assets/images/explosion_{n}.png").convert_alpha())
class Explosion(pygame.sprite.Sprite):
def __init__(self, center):
super().__init__()
self.index = 0
self.timer = 0
self.image = explosion_frames[0]
self.rect = self.image.get_rect(center=center)
explosions = pygame.sprite.Group()
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.MOUSEBUTTONDOWN:
explosions.add(Explosion(event.pos))
explosions.update()
screen.fill((20, 22, 40))
explosions.draw(screen)
pygame.display.flip()
clock.tick(60)
pygame.quit()
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Sprite dan Gambar
2Putar, Cerminkan, Ubah Skala
Putar Mengelilingi Titik TengahHadap ke Arah TerbangmuUbah Skala GambarPutar dari Gambar Asli3class untuk object game
class pertamamumethodself adalah objectlist berisi objectobject dengan gambarsubclass6Animasi dari Sprite Sheet
Memotong Sprite SheetPenghitung FrameMenganimasikan dengan WaktuLedakan Sekali JalanLatihan sendiri: Playground Pygame