Kendi “Uçan Kuş” Oyununu Kodla: Pygame Zero ile Maceraya Hazır Mısın?


Hiç merak ettiniz mi, telefonlarınızda veya bilgisayarlarınızda oynadığınız o eğlenceli oyunlar nasıl yapılıyor? Sadece birkaç satır kodla, ekranda hareket eden, zıplayan, engellerden kaçan bir karakter yaratabileceğinizi söylesem? Bugün, klavyelerimizi sihirli değneklere dönüştürüyor ve Python’un en eğlenceli kütüphanelerinden biri olan Pygame Zero ile kendi “Uçan Kuş” oyunumuzu yapıyoruz!

Hazırsanız, başlayalım!


Bölüm 1: Sahneyi ve Oyuncuyu Hazırlamak

Oyunla ilgili tüm dosyaları aşağıda bulabilirsin …

Her oyun, boş bir tuval gibi başlar. Önce sahnemizi, yani oyun penceremizi kurmalıyız. Kodumuzun en başında yer alan şu satırlar tam olarak bunu yapıyor:

WIDTH = 600
HEIGHT = 600

Bu komutlar, oyun ekranımızın genişliğini ve yüksekliğini belirliyor. Tıpkı bir ressamın tuval boyutunu seçmesi gibi!

Şimdi de başrol oyuncumuzu sahneye çağıralım:

bird = Actor("bird0")
bird.pos = (75, 300)

Actor, Pygame Zero’da “oyuncu” veya “karakter” demektir. Ona bir resim ("bird0") veriyoruz ve pos (pozisyon) ile ekranda nerede duracağını söylüyoruz. Artık bir kuşumuz var!


Bölüm 2: Dünyamıza Fizik Ekleyelim: Yerçekimi ve Zıplama!

Peki, bu kuş nasıl düşecek ve zıplayacak? İşte burada “algoritmik düşünme” devreye giriyor. Bir bilgisayara yerçekimini öğretmeliyiz!

# Her saniye (aslında her kare) kuşa ne olacağını söylediğimiz yer:
def update():
    # ...
    bird.vy += 0.5 # Kuşun aşağı doğru hızını sürekli artır (Yerçekimi!)
    bird.y += bird.vy  # Kuşu yeni hızına göre aşağı indir.

Buradaki sihirli değişkenimiz bird.vy (vertical velocity, yani dikey hız). Bu değişkeni sürekli artırarak, kuşun her an biraz daha hızlı düşmesini sağlıyoruz. Tıpkı gerçek dünyadaki gibi!

Peki zıplama? İşte o da on_key_down fonksiyonu ile oluyor:

def on_key_down(key):
    if key == keys.SPACE:
        # Zıplama!
        bird.vy = -8

Boşluk tuşuna bastığımızda, kuşun dikey hızını aniden negatif bir değere çeviriyoruz. Koordinat sisteminde eksi(-) yön yukarı demek olduğu için, kuşumuz anında yukarı fırlıyor! Yerçekimi (yani update fonksiyonu) onu tekrar aşağı çekmeye başlayana kadar…


Bölüm 3: Meydan Okuma: Rastgele Gelen Engeller!

Bir oyunun eğlenceli olması için bir zorluğa ihtiyacı vardır. İşte bizim engellerimiz: borular! Ama bu borular hep aynı yerden gelirse oyun sıkıcı olurdu. random kütüphanesi burada imdadımıza yetişiyor.

def reset_pipes():
    """Boruları rastgele bir yükseklikte sağ taraftan başlatır"""
    pipe_h = random.randint(100, HEIGHT - GAP - 100)
    top.pos = (WIDTH, pipe_h)
    bottom.pos = (WIDTH, pipe_h + GAP)

Bu fonksiyon, boruların yüksekliğini her seferinde rastgele belirleyip ekranın en sağından oyuna sokuyor. GAP değişkeni ise iki boru arasındaki boşluğu sabit tutarak oyunun adil olmasını sağlıyor.

Mühendislik Notu: Aslında borular hareket etmiyor! top.x -= SPEED kodu ile tüm dünyayı sola kaydırarak kuşun ileri gittiği illüzyonunu yaratıyoruz. Bu, oyun geliştirmenin en temel hilelerinden biridir!


Bölüm 4: Oyunun Kuralı: Çarpışma Anı ve Skor!

Oyun ne zaman biter? Kuş bir yere çarptığında! Pygame Zero bize bu konuda müthiş bir kolaylık sağlıyor: colliderect.

# update() fonksiyonunun içinde
if bird.colliderect(top) or bird.colliderect(bottom):
    bird.dead = True # Kuş artık "ölü"

Bu kod, bilgisayara şunu sorar: “Kuşun dikdörtgeni ile üst borunun veya alt borunun dikdörtgeni birbirine değdi mi?” Cevap evet ise, oyun biter. bird.dead = True değişkeni, bir bayrak gibidir. Bu bayrak kalktığında, update ve draw fonksiyonları farklı davranmaya başlar (Örneğin “OYUN BİTTİ” yazar).

Peki ya skor? O da çok basit!

# update() fonksiyonunun içinde
if top.right < 0: # Boru ekranın solundan tamamen çıktı mı?
    reset_pipes()   # Evet, o zaman yenisini getir.
    bird.score += 1 # Ve oyuncuya 1 puan ver!

Haydi, Kodu Kendin Dene ve Değiştir!

Aşağıda oyunun tam kodunu bulabilirsin. Kodu kopyala, bir Pygame Zero editörüne yapıştır ve çalıştır. Ama sadece oynamakla kalma, bir oyun tasarımcısı gibi düşün!

# Buraya yukarıda paylaşılan tam kodu yapıştırın.

Sana bir görev:

  1. SPEED = 3 satırını SPEED = 5 yaparsan ne olur?
  2. GAP = 150 satırını GAP = 200 yap. Oyun kolaylaştı mı, zorlaştı mı? Neden?
  3. bird.vy += 0.5 satırındaki 0.5‘i 0.2 yaparsan yerçekimi nasıl etkilenir?

Yaptığın değişiklikleri ve oyunun nasıl hissettirdiğini yorumlarda bizimle paylaş! Unutma, en iyi yazılımcılar, “Acaba bunu değiştirirsem ne olur?” diye sormaktan çekinmeyenlerdir.

İyi eğlenceler

Yorum yapın