Menu
CoddyTech

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:.

challenge icon

Tantangan

Sedang

Tekan Space untuk mengambil kembali sebuah bintang:

  1. Di dalam event loop, saat event KEYDOWN untuk K_SPACE tiba, hapus bintang terbaru dengan stars.pop().
  2. 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