Menu
CoddyTech

Bir Yıldızı Kaldır

Coddy'nin Pygame Journey'sinin Oyun Penceresinde Python bölümünün bir parçası. Ders 27 / 32.

Listeler de küçülür. stars.pop() son öğeyi, yani en yeni olanı kaldırır. stars.pop(0) ilk öğeyi kaldırır. stars.remove(item), item ile eşit olan ilk öğeyi kaldırır.

Boş bir listeden öğe çıkarmak hataya yol açar: IndexError: pop from empty list ve program durur. Önce uzunluğu kontrol et:

if event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE:
    if len(stars) > 0:
        stars.pop()

İki if olduğuna dikkat et. Dıştaki, olaylar arasından Boşluk tuşuna basılma olayını seçer; içteki ise kaldırılacak bir yıldız olduğundan emin olur.

Bir if içinde boş bir liste False, öğe içeren bir liste ise True olarak değerlendirilir; bu nedenle if stars:, if len(stars) > 0: ile aynı anlama gelir.

challenge icon

Görev

Orta

Boşluk tuşuna basıldığında bir yıldızı geri al:

  1. Olay döngüsünde, KEYDOWN olayı için K_SPACE geldiğinde, stars.pop() ile en yeni yıldızı kaldır.
  2. Yalnızca liste boş değilse pop işlemini yap; böylece yıldız yokken Boşluk tuşuna basmak hiçbir şey yapmaz.

Kendin dene

import pygame

pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Night Sky")
clock = pygame.time.Clock()

# Oyun döngüsünden önce, başlangıç ayarlarını burada yapın.
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)

    # Her karede bir kez, değişiklikleri burada yapın.

    screen.fill((20, 24, 48))
    # Ekranı doldurduktan sonra çizimi burada yapın.
    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()

Oyun Penceresinde Python bölümündeki tüm dersler

Kendi başına pratik yap: Pygame playground