Hafta-2: İlk Adımımızı Atıyoruz! if ile Sağa Hareket


Merhaba genç kod sihirbazları!

Geçen hafta yarattığımız karakterimiz ekranda öylece duruyordu. Bugün ona ilk komutumuzu vererek canlandırmaya başlıyoruz. Tıpkı gerçek oyunlardaki gibi, bir tuşa bastığımızda bir şeyler olacak! Bugünkü sihirli kelimemiz: if (Eğer).

Oyunun Kalbi: update() Fonksiyonu

Oyunumuzun hiç durmadan çalışmasını sağlayan bir motoru vardır: def update():. Bu fonksiyonun içine yazdığımız her kod, saniyede onlarca kez tekrar edilir. Bu sayede oyunumuz her an “Şimdi ne yapmalıyım?” diye kontrol eder.

İlk Komutumuz: “Eğer Sağ Tuşa Basarsan…”

Hadi kodumuza update motorunu ve ilk komutumuzu ekleyelim. Amacımız, sağ ok tuşuna basıldığında karakteri sağa doğru hareket ettirmek.

# ... (WIDTH, HEIGHT ve oyuncu tanımlamaları burada) ...

def draw():
    screen.clear()
    oyuncu.draw()

# --- Yeni Kodlarımız ---
def update():
    # 'Eğer' sağ ok tuşuna basılıysa:
    if keyboard.right:
        # oyuncu'nun yatay (x) konumuna 5 ekle.
        oyuncu.x += 5

Kodu İnceleyelim:

  • if keyboard.right:: Bilgisayara diyoruz ki, “Eğer klavyeden sağ ok tuşuna basılıyorsa, alttaki satırı çalıştır.”
  • oyuncu.x += 5: Bu, oyuncu.x = oyuncu.x + 5 demenin havalı bir yoludur. Karakterimizin yatay konumunu 5 birim artırır ve onu sağa doğru kaydırır.

Sıra Sende!

  1. Yukarıdaki update fonksiyonunu kendi koduna ekle ve çalıştır. Sağ ok tuşuna bastığında karakterin hareket ettiğini gör!
  2. Meydan Okuma: Karakterimizi sola nasıl götürebiliriz? keyboard.left kullanarak ve oyuncu.x değerini artırmak yerine azaltarak (-=) sola hareketi eklemeyi dene!

Düşünme Köşesi: Kodumuzdaki 5 sayısı karakterin hızını belirliyor. Bu sayıyı daha büyük veya daha küçük yaparsan ne olur? Bu “sihirli sayı” hakkında yarın daha çok konuşacağız. Hazır ol!


Ders 2: Dört Yöne Hükmet ve “Hız” Kutusunu Keşfet!

Yayın Tarihi: Hafta 2, 2. Gün

Dün karakterimizi sağa ve sola hareket ettirmeyi başardık! Ama bir sorunumuz vardı: Hızı değiştirmek için iki ayrı yeri düzenlememiz gerekiyordu. Bugün kodumuzu daha zeki hale getireceğiz!

Değişkenler: Bilgiyi Saklayan Kutular

Tekrar eden değerleri her seferinde yazmak yerine, onları bir “kutuya” koyup o kutuya bir isim verebiliriz. Kodlamada bu kutulara değişken denir. Hadi hızımız için bir kutu oluşturalım!

# ...
oyuncu = Actor('uzayli')
hiz = 5  # <-- İşte hız kutumuz! Değeri 5.
# ...

def update():
    if keyboard.right:
        oyuncu.x += hiz # <-- Artık sayı yerine kutunun adını kullanıyoruz!
    if keyboard.left:
        oyuncu.x -= hiz

Artık karakterin hızını değiştirmek için sadece tek bir satırı, hiz = 5 satırını değiştirmemiz yeterli!

Yukarı ve Aşağı: Koordinat Sisteminin Sırrı

Yatay hareket için x‘i kullandık. Dikey hareket için ise y‘yi kullanacağız. Ama dikkat! Pygame Zero’da ekranın en üstü y=0‘dır. Yani yukarı gitmek için y değerini azaltmamız gerekir.

# ... (değişken ve yatay hareket kodları burada) ...

# Dikey hareket kodunu da ekleyelim
def update():
    # ... (sağ/sol if blokları) ...
    if keyboard.up:
        oyuncu.y -= hiz # Yukarı gitmek için Y AZALIR!
    if keyboard.down:
        oyuncu.y += hiz

Sıra Sende!

  1. Koduna hiz değişkenini ekle.
  2. Yukarı ve aşağı hareket kodlarını yazarak karakterini dört yöne de özgürce hareket ettir!
  3. hiz değerini 10 yapıp “Süper Hız Modu”nu, 2 yapıp “Yavaş Mod”u dene.

Düşünme Köşesi: Harika! Peki, klavyede aynı anda hem sağ hem de yukarı ok tuşlarına basarsan ne olduğunu fark ettin mi? Karakterin normalden daha hızlı gidiyor gibi mi? Bunun nedenini yarın bir dedektif gibi araştıracağız!


Ders 3: Dedektiflik Zamanı – Çapraz Hareketin Gizemi

Yayın Tarihi: Hafta 2, 3. Gün

Merhaba kod dedektifleri!

Dünkü gizemli sorumuz şuydu: Neden iki tuşa aynı anda basınca karakterimiz bir roket gibi hızlanıyor? Cevap, bilgisayarın kodumuzu nasıl okuduğunda saklı.

Bilgisayar Nasıl Düşünür?

update() fonksiyonumuzdaki dört if koşulu birbirinden tamamen bağımsızdır. Bilgisayar her bir karede şöyle düşünür:

  1. if keyboard.right: doğru mu?” -> “Evet.” -> “Tamam, karakteri 5 birim sağa kaydırdım.”
  2. if keyboard.left: doğru mu?” -> “Hayır.” -> “Geçiyorum.”
  3. if keyboard.up: doğru mu?” -> “Evet.” -> “Tamam, karakteri 5 birim yukarı kaydırdım.”
  4. if keyboard.down: doğru mu?” -> “Hayır.” -> “Geçiyorum.”

Yani tek bir karede, karakterimiz hem sağa, hem de yukarı hareket etmiş oldu! Bu da onu normalden daha hızlı yapan bir çapraz hareket yaratıyor. Bir üçgenin en uzun kenarı gibi düşünebilirsiniz.

Bu Bir Hata mı, Özellik mi?

Bugün kod yazmıyoruz, oyun tasarımı düşünüyoruz!

  • Avantajı: Bir kaçış oyununda çapraz kaçabilmek harika bir özellik olabilir.
  • Dezavantajı: Hassas kontrol gerektiren bir labirent oyununda bu “haksız hız” sinir bozucu olabilir.

Gördüğünüz gibi, bazen kodda “yanlış” görünen bir şey, oyunun eğlencesini artıran bir “özellik” olabilir.

Sıra Sende!

Arkadaşlarınla tartış: Senin oyunun için bu çapraz hızlanma bir hata mı, yoksa bir özellik mi olurdu? Neden?

Düşünme Köşesi: Bu hız sorununu çözmek isteseydik ne yapardık? Bilgisayara “Eğer sağa gidiyorsan, başka bir yöne bakma!” gibi bir komut verebilir miydik? Bu sorunun cevabı, yarın öğreneceğimiz süper güçlü bir komutta gizli: elif!


Ders 4: Daha Akıllı Kod – if‘in Yardımcısı elif ile Tanışın!

Yayın Tarihi: Hafta 2, 4. Gün

Dün bir yol ayrımından bahsetmiştik. Bilgisayara, bir yolu seçtiğinde diğerlerine bakmamasını nasıl söyleyebilirdik? İşte cevabı: elif!

elif, “değilse eğer” (else if) anlamına gelir ve if ile bir zincir oluşturur.

if-elif Zinciri Nasıl Çalışır?

  • Bilgisayar ilk if koşuluna bakar.
  • Eğer if doğruysa, içindeki kodu çalıştırır ve zincirin geri kalan tüm elif‘lerini atlar.
  • Eğer if yanlışsa, o zaman bir sonraki elif koşulunu kontrol eder.

Bu yöntemle, bir bloğun içindeki koşullardan sadece bir tanesinin çalışmasını garantileriz. Bu, karakterimizin aynı anda hem sağa hem sola gitmeye çalışmasını engeller!

# Eski Hali (Bağımsız 'if'ler)
# if keyboard.right: ...
# if keyboard.left: ...

# Yeni Akıllı Hali ('if-elif' zinciri)
def update():
    if keyboard.right:
        oyuncu.x += hiz
    elif keyboard.left:
        oyuncu.x -= hiz

    if keyboard.up:
        oyuncu.y -= hiz
    elif keyboard.down:
        oyuncu.y += hiz

Not: Bu yöntem çapraz hız sorununu çözmez, çünkü yatay ve dikey hareket blokları hala ayrı zincirler. Ama kodumuzu daha mantıklı ve hatasız hale getirir.

Sıra Sende!

  1. Kendi update() fonksiyonunu yukarıdaki gibi if-elif zincirleri kullanacak şekilde düzenle.
  2. Şimdi sağ ve sol ok tuşlarına aynı anda basmayı dene. Ne oluyor? if koşulu (keyboard.right) daha önce geldiği için, bilgisayar elif‘i kontrol bile etmiyor! elif‘in gücünü canlı canlı gördün!

Düşünme Köşesi: Kodumuz artık çok daha profesyonel. Peki, tek başına oynamak sıkıcı değil mi? Ekrana ikinci bir oyuncu ekleyip onu W, A, S, D tuşlarıyla hareket ettirmek için ne yapmamız gerekirdi? Haftanın final görevine hazır ol!


Ders 5: Meydan Okuma Günü – İki Kişilik Yarış Başlasın!

Yayın Tarihi: Hafta 2, 5. Gün

Bu hafta karakter kontrolünün temellerini attık ve kodumuzu geliştirdik. Şimdi öğrendiğimiz her şeyi birleştirip haftayı en eğlenceli şekilde bitirme zamanı: İki kişilik bir oyun yapacağız!

Görev: Arkadaşına Meydan Oku!

Amacımız, ekrana ikinci bir karakter eklemek ve onu W,A,S,D tuşlarıyla kontrol etmek. İlk oyuncu ok tuşlarını, ikinci oyuncu ise W,A,S,D’yi kullanacak.

Nasıl Yapılır?

  1. İkinci Oyuncuyu Yarat: Kodun en başına, ilk oyuncuyu yarattığın yerin altına ikinci bir oyuncu ekle. Ona farklı bir resim ve başlangıç konumu ver. oyuncu1 = Actor('uzayli', pos=(100, 300)) oyuncu2 = Actor('roket', pos=(700, 300)) # Yeni oyuncu!
  2. İkinci Oyuncuyu Çizdir: draw() fonksiyonuna oyuncu2.draw() satırını eklemeyi unutma, yoksa onu göremeyiz!
  3. İkinci Oyuncuya Kontrol Ekle: update() fonksiyonunun içine, ilk oyuncunun kontrol bloğundan sonra, ikinci oyuncu için yepyeni bir kontrol bloğu ekle. def update(): # --- OYUNCU 1 KONTROLÜ (OK TUŞLARI) --- if keyboard.right: oyuncu1.x += 5 elif keyboard.left: oyuncu1.x -= 5 # ... (oyuncu1 için yukarı/aşağı) ...# --- OYUNCU 2 KONTROLÜ (W,A,S,D) --- if keyboard.d: # D tuşu sağ demek oyuncu2.x += 5 elif keyboard.a: # A tuşu sol demek oyuncu2.x -= 5 # ... (oyuncu2 için w/s tuşları) ...</code></pre></li>

Sıra Sende: Büyük Final!

Hafta boyunca yazdığın kodu aç ve onu iki kişilik bir arenaya dönüştür!

  1. Yukarıdaki adımları takip ederek ikinci oyuncuyu ve kontrollerini ekle.
  2. Bonus: Her oyuncu için farklı hızlar tanımla (hiz1 = 5, hiz2 = 7 gibi). Bakalım hangisi daha avantajlı olacak?
  3. Bir arkadaşını yanına çağır ve aynı klavyede karakterlerinizi hareket ettirin!

Tebrikler! Bu hafta sadece karakter hareket ettirmeyi öğrenmedin; değişkenleri, koşulları ve problem çözmeyi öğrendin. En önemlisi, bir fikri koda dönüştürmenin ne kadar eğlenceli olduğunu keşfettin. Gelecek hafta, karakterlerimizin ekranın kenarlarından kaçmasını engelleyerek oyun dünyamızın sınırlarını çizeceğiz

Yorum yapın