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.
Görev
OrtaBoşluk tuşuna basıldığında bir yıldızı geri al:
- Olay döngüsünde,
KEYDOWNolayı içinK_SPACEgeldiğinde,stars.pop()ile en yeni yıldızı kaldır. - 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
6Şeylerin Listeleri
Yıldızların ListesiEklemek için Tıklalen ile SayBir Yıldızı KaldırRastgele SayılarKendi başına pratik yap: Pygame playground