Hapus Satu Bintang
Termasuk bagian Python di Jendela Game dalam perjalanan Pygame di Coddy. Pelajaran 27 dari 32.
List juga bisa mengecil. stars.pop() menghapus item terakhir, yaitu item terbaru. stars.pop(0) menghapus item pertama. stars.remove(item) menghapus item pertama yang nilainya sama dengan item.
Menghapus item dari list kosong akan menghasilkan error, IndexError: pop from empty list, dan program berhenti. Periksa panjangnya terlebih dahulu:
if event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE:
if len(stars) > 0:
stars.pop()Perhatikan dua if. if bagian luar memilih penekanan tombol Spasi dari berbagai peristiwa, sedangkan if bagian dalam memastikan ada bintang yang bisa dihapus.
Dalam if, list kosong dianggap False dan list yang berisi item dianggap True, jadi if stars: memiliki arti yang sama dengan if len(stars) > 0:.
Tantangan
SedangTekan Space untuk mengambil kembali sebuah bintang:
- Di dalam event loop, saat event
KEYDOWNuntukK_SPACEtiba, hapus bintang terbaru denganstars.pop(). - Lakukan pop hanya jika list tidak kosong, sehingga menekan Space saat tidak ada bintang tidak melakukan apa-apa.
Coba sendiri
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Night Sky")
clock = pygame.time.Clock()
# Siapkan semuanya di sini, sebelum perulangan game.
stars = []
font = pygame.font.Font(None, 36)
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if event.type == pygame.MOUSEBUTTONDOWN and len(stars) < 10:
stars.append(event.pos)
# Ubah hal-hal di sini, sekali setiap frame.
screen.fill((20, 24, 48))
# Gambar di sini, setelah mengisi layar.
for star in stars:
pygame.draw.circle(screen, (255, 255, 255), star, 5)
text = font.render(f"Stars: {len(stars)}", True, (230, 230, 240))
screen.blit(text, (20, 20))
pygame.display.flip()
clock.tick(60)
pygame.quit()
Semua pelajaran di Python di Jendela Game
Latihan sendiri: Playground Pygame