Menu
CoddyTech

While ile Say

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

while döngüsü, koşulu doğru olduğu sürece yinelenir. Kaç kez döneceğini önceden bilmiyorsan bunu kullan:

radius = 200
rings = 0
while radius > 10:
    pygame.draw.circle(screen, (150, 190, 255), (320, 240), radius, 2)
    radius = radius // 2
    rings = rings + 1

Yarıçap her seferinde yarıya iner: 200, 100, 50, 25, 12. // böler ve ondalık noktadan sonrasını atar; bu yüzden 25 // 2, 12'dir. Sonra değer 6 olur, koşul yanlış hâle gelir ve döngü 5 halkadan sonra sona erer. rings bunları sayar. Daire çağrısındaki beşinci sayı olan 2, dolu bir daire yerine 2 piksel genişliğinde bir dış çizgi çizer.

Oyun döngüsü de bir while döngüsüdür; pencereyi kapatana kadar çalışır. Bir karenin içindeki while döngüsü hızlıca sona ermelidir, yoksa kare hiç bitmez. Yarıçapı yarıya indiren satırı çıkarırsan koşul sonsuza dek doğru kalır: oyun donar ve Check, oyunun ilk karesine hiç ulaşmadığını söyler.

challenge icon

Görev

Orta

Çizim bölümünde tek halkayı bir while döngüsüyle değiştir:

  1. radius = 200 ve rings = 0 ile başla.
  2. radius > 10 olduğu sürece: rengi (150, 190, 255) olan, genişliği 2 olan ve merkezi (320, 240) noktasında bulunan bir halka dış çizgisi çiz; yarıçapı // ile yarıya indir; rings değerini 1 artır.
  3. Döngüden sonra f"Rings: {rings}" metnini (20, 20) noktasında göster. Bu, Rings: 5 olarak okunur.

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 gerekli ayarları burada yap.
font = pygame.font.Font(None, 36)

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

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

    screen.fill((20, 24, 48))
    # Ekranı doldurduktan sonra burada çizim yap.
    pygame.draw.circle(screen, (150, 190, 255), (320, 240), 200, 2)
    text = font.render("Rings: 1", True, (230, 230, 240))
    screen.blit(text, (20, 20))

    pygame.display.flip()
    clock.tick(60)

pygame.quit()
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

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

Kendi başına pratik yap: Pygame playground