Class Sprite
Termasuk bagian Sprite dan Gambar dalam perjalanan Pygame di Coddy. Pelajaran 16 dari 36.
Setiap object game sejauh ini memiliki gambar, Rect, update, dan cara untuk menggambarnya. pygame memiliki class yang dibuat khusus untuk itu: pygame.sprite.Sprite. Object game-mu menjadi subclass darinya:
class Player(pygame.sprite.Sprite):
def __init__(self):
super().__init__()
self.image = ship_image
self.rect = self.image.get_rect(midbottom=(320, 470))
def update(self):
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
self.rect.x -= 6Ada tiga aturan. Panggil super().__init__() terlebih dahulu: ini menyiapkan hal-hal yang dibutuhkan class Sprite di dalamnya. Namai gambarnya self.image dan posisinya self.rect, persis seperti itu: kode pygame sendiri membaca kedua nama tersebut. Letakkan aturan untuk setiap frame di dalam update.
Gambar kapal dimuat sekali di bagian atas sebagai ship_image, lalu class menggunakannya. Untuk saat ini, gambar sprite dengan blit: screen.blit(player.image, player.rect). Pelajaran berikutnya akan membuat pygame menggambarnya.
Tantangan
Sedang- Tulis
class Player(pygame.sprite.Sprite)seperti di atas:self.imageadalahship_image,self.rectmemiliki titik tengah bawah di(320, 470). update-nya menggerakkan Rect 6 piksel ke kiri atau kanan dengan tombol panah dan membatasinya agar tetap di dalam jendela: pindahkan baris-baris kode awal ke dalamnya.- Buat
player = Player(), panggilplayer.update()setiap frame, lalu blitplayer.imagepadaplayer.rect.
Coba sendiri
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Sprite Ship")
clock = pygame.time.Clock()
ship_image = pygame.image.load("assets/images/ship.png").convert_alpha()
ship_rect = ship_image.get_rect(midbottom=(320, 470))
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
ship_rect.x -= 6
if keys[pygame.K_RIGHT]:
ship_rect.x += 6
ship_rect.clamp_ip(screen.get_rect())
screen.fill((20, 22, 40))
screen.blit(ship_image, ship_rect)
pygame.display.flip()
clock.tick(60)
pygame.quit()
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