list berisi musuh
Termasuk bagian Sprite dan Gambar dalam perjalanan Pygame di Coddy. Pelajaran 15 dari 39.
Satu musuh kini berupa object. Dua musuh lainnya masih memerlukan Rect dan blit masing-masing. Masukkan ketiganya ke dalam list, seperti bidang bintang yang menyimpan bintang-bintangnya, lalu dua perulangan singkat akan menjalankan semuanya:
enemies = [Enemy(red, 100, 50), Enemy(green, 300, 50)]
for enemy in enemies:
enemy.update()list dapat ditulis satu per satu di dalam tanda kurung siku, seperti di sini, atau dibuat dengan append dalam perulangan. Setiap musuh di dalamnya bergerak menggunakan Rect-nya sendiri.
Masukkan setiap musuh ke dalam list hanya sekali. Musuh yang juga diperbarui sendiri, di luar perulangan, bergerak dua kali setiap frame.
Tantangan
SedangMasukkan ketiga musuh ke dalam satu list.
- Buat
enemies, sebuah list yang berisi tiga objek Enemy: merah di tengah pada(160, 100), hijau pada(320, 100), dan kuning pada(480, 100). - Perbarui setiap musuh dalam list di dalam perulangan, lalu gambar semuanya setelah pengisian.
- Hapus
red_enemy, Rect hijau dan kuning, serta baris-barisnya.
Tekan tombol “Main”: tiga musuh jatuh seperti sebelumnya. Lalu tekan tombol “Periksa”.
Coba sendiri
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Enemy Rain")
clock = pygame.time.Clock()
red = pygame.image.load("assets/images/enemy_red.png").convert_alpha()
green = pygame.image.load("assets/images/enemy_green.png").convert_alpha()
yellow = pygame.image.load("assets/images/enemy_yellow.png").convert_alpha()
class Enemy:
def __init__(self, image, x, y):
self.image = image
self.rect = image.get_rect(center=(x, y))
self.speed = 2
def update(self):
self.rect.y += self.speed
if self.rect.top > 480:
self.rect.bottom = 0
def draw(self, screen):
screen.blit(self.image, self.rect)
red_enemy = Enemy(red, 160, 100)
green_rect = green.get_rect(center=(320, 100))
yellow_rect = yellow.get_rect(center=(480, 100))
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
red_enemy.update()
for rect in (green_rect, yellow_rect):
rect.y += 2
if rect.top > 480:
rect.bottom = 0
screen.fill((20, 22, 40))
red_enemy.draw(screen)
screen.blit(green, green_rect)
screen.blit(yellow, yellow_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 gambarlist berisi musuhsubclass6Animasi dari Sprite Sheet
Memotong Sprite SheetPenghitung FrameMenganimasikan dengan WaktuLedakan Sekali JalanLatihan sendiri: Playground Pygame