Proje: Labirent Oyunu

Hareket, koşul ve çarpışmayı birleştirerek oynanabilir bir labirent oyunu yap.

PROJE PUSULASI

Bu sayfayı ne için kullanacaksın?

Ana fikir

Bu projede Scratch'te ok tuşlarıyla yönetilen bir karakter yaparız; karakter duvara değince başa döner, hedefe ulaşınca oyunu kazanırız.

Üretilecek kanıt

Kendi labirentini kur: Yeni bir Scratch projesi aç ve boş dekora tek renkte bir labirent çiz. Oyuncu ve hedef olmak üzere iki kukla ekle. Yukarıdaki dört ok tuşu bloğunu oyuncu kuklasına ekle. sürekli tekrarla içindeki iki koşulu (duvar ve hedef) ekle. Dört test senaryosunu sırayla çalıştır ve sonuçları bir kağıda not et. Bittiğinde kendine sor: Hangi…

Kontrol tuzağı

Ben bu oyunu ilk kurduğumda 2. senaryo çalışmadı. Karakteri duvara sürdüm ama başa dönmedi; duvarın içinden geçip gitti. Hatayı şöyle buldum: Amaç: Duvara değince karakter başa dönsün Sorun: Karakter duvara değince hiç tepki vermiyor Kontrol 1: Duvarlar gerçekten mavi mi? -> Evet Kontrol 2: Koşuldaki renk kutusu doğru…

Sonraki bağlantı

Proje: Basketbol Atış Oyunu

Modül kaynakları: Python Tutorial · Arduino Learn

SeviyeBaşlangıç
Yaş10–16
Süre45–75 dk
Ön koşulHata Ayıklama ve Test
İçerikProje rehberi · 1.645 kelime
Son güncelleme

Bir cümlelik özet

Bu projede Scratch'te ok tuşlarıyla yönetilen bir karakter yaparız; karakter duvara değince başa döner, hedefe ulaşınca oyunu kazanırız.

Neden önemli?

Şimdiye kadar sıralama, koşul, döngü, değişken ve hata ayıklamayı ayrı ayrı öğrendik. Bir oyun ise bu parçaların hepsini aynı anda kullanır. Labirent oyunu küçük ama gerçek bir projedir: bir problem tanımlarız, bir tasarım çizeriz, blokları birleştiririz ve sonucu test ederiz.

Bu ders bir "kopyala-yapıştır" tarifi değildir. Amaç, oyunun her parçasının neden orada olduğunu anlamandır. Böylece daha sonra kendi oyununu sıfırdan kurabilirsin. Ben de bu oyunu ilk yaptığımda her şey ilk denemede çalışmadı; nerede takıldığımı ve nasıl düzelttiğimi de birlikte göreceğiz.

Adım 1: Problemi ve tasarımı belirle

Koda başlamadan önce oyunun ne yapacağını yazmak, sonradan çıkacak birçok hatayı önler.

Problem tanımı

Gerekli kuklalar ve dekor

Scratch'te her nesne bir kukla (sprite), arka plan ise dekortur (backdrop).

Gerekli kuklalar ve dekor tablosu
ÖğeGörevi
Oyuncu kuklasıKüçük bir top veya ok. Ok tuşlarıyla hareket eder.
Hedef kuklasıLabirentin çıkışındaki yıldız veya bayrak.
Labirent dekoruDuvarları tek bir renkte (örneğin mavi) çizilmiş arka plan.

Önemli bir tasarım kararı: labirentin bütün duvarları aynı renk olmalı. Çünkü karakterin "duvara değdim mi?" sorusunu, o rengi kontrol ederek cevaplayacağız. Duvarları maviyle çizersek, kod "mavi renge değiyor mu?" diye soracak.

Adım 2: Karakteri ok tuşlarıyla hareket ettir

Karakter dört yönde hareket etmeli. Bunu Olaylar (Events) ve Hareket (Motion) bloklarıyla yaparız.

En basit yöntem, her ok tuşu için ayrı bir olay bloğu kullanmaktır. x konumu karakterin sağ-sol, y konumu ise yukarı-aşağı yerini gösterir.

sağ ok tuşuna basıldığında
  x konumunu 10 değiştir

sol ok tuşuna basıldığında
  x konumunu -10 değiştir

yukarı ok tuşuna basıldığında
  y konumunu 10 değiştir

aşağı ok tuşuna basıldığında
  y konumunu -10 değiştir

Buradaki 10 sayısı karakterin her basışta kaç adım kayacağını belirler. Sayı büyükse karakter hızlı ama kaba hareket eder; küçükse yavaş ama hassas olur. Labirentin koridorları darsa küçük bir sayı seçmek daha iyidir.

Adım 3: Duvara ve hedefe tepki ver

Şimdi oyunun kalbine geliyoruz: karakter duvara değince başa dönmeli, hedefe değince kazanmalıyız. Bunun için Kontrol (Control), Algılama (Sensing) ve Görünüm (Looks) bloklarını birlikte kullanırız.

Duvara değince başa dön

Karakterin durumunu sürekli kontrol etmemiz gerekir, çünkü çarpışma her an olabilir. Bu yüzden bir sürekli tekrarla döngüsü içine bir koşul koyarız.

yeşil bayrağa tıklandığında
x konumunu -200, y konumunu -140 yap
sürekli tekrarla
  eğer <renge [mavi] değiyor mu?> ise
    x konumunu -200, y konumunu -140 yap

Burada başlangıçta karakteri labirentin girişine (-200, -140) yerleştiririz. Sonra döngü her an "mavi duvara değiyor mu?" diye sorar. Cevap evetse karakteri aynı başlangıç noktasına geri gönderir. Yani oyuncu duvara çarparsa en baştan başlamak zorunda kalır.

Hedefe ulaşınca kazan

Aynı sürekli döngüye ikinci bir koşul ekleriz. Bu sefer duvarı değil, hedef kuklasını kontrol ederiz.

yeşil bayrağa tıklandığında
x konumunu -200, y konumunu -140 yap
sürekli tekrarla
  eğer <renge [mavi] değiyor mu?> ise
    x konumunu -200, y konumunu -140 yap
  eğer <[Hedef] kuklasına değiyor mu?> ise
    "Kazandın!" de (2 saniye)
    dur [bu kukladaki diğerleri]

renge değiyor mu? bloğu Algılama kategorisindedir ve duvarın rengini kontrol eder. Hedef kuklasına değiyor mu? bloğu da aynı kategoridedir ama bu kez başka bir kuklaya dokunmayı ölçer. "Kazandın!" de bloğu Görünüm kategorisinden gelir ve ekranda bir balon gösterir.

Adım 4: Test senaryolarını çalıştır

Bir önceki derste öğrendiğimiz gibi, kod yazmak yeter değil; test etmek gerekir. Oyunu yeşil bayrakla başlat ve şu senaryoları tek tek dene:

  1. Normal yürüyüş: Ok tuşlarına bas. Karakter dört yönde de düzgün hareket ediyor mu?
  2. Duvara çarpma: Bilerek bir duvara doğru sür. Karakter başlangıç noktasına dönüyor mu?
  3. Hedefe ulaşma: Karakteri çıkışa götür. "Kazandın!" mesajı çıkıyor mu?
  4. Baştan başlama: Yeşil bayrağa tekrar bas. Karakter yine girişte mi başlıyor?

Her senaryoda beklediğin sonucu önceden yaz, sonra gerçekte ne olduğunu gözle. İkisi farklıysa bir hata bulmuşsun demektir.

Adım 5: Bir hata ve düzeltmesi

Ben bu oyunu ilk kurduğumda 2. senaryo çalışmadı. Karakteri duvara sürdüm ama başa dönmedi; duvarın içinden geçip gitti. Hatayı şöyle buldum:

Amaç: Duvara değince karakter başa dönsün
Sorun: Karakter duvara değince hiç tepki vermiyor
Kontrol 1: Duvarlar gerçekten mavi mi? -> Evet
Kontrol 2: Koşuldaki renk kutusu doğru maviyi mi gösteriyor? -> Hayır
Neden: Renk kutusuna yanlış bir mavi tonu seçmiştim
Düzeltme: Renk kutusuna tıklayıp damlalıkla duvarın rengini aldım

Scratch'te renge değiyor mu? bloğundaki renk, duvarın rengiyle tam olarak aynı olmalıdır. Damlalık (renk seçici) aracıyla doğrudan duvardan renk almak en güvenli yöntemdir. Bu küçük ayrıntı, oyunun çalışıp çalışmamasını belirledi.

Adım 6: Geliştirme fikirleri

Temel oyun çalıştıktan sonra, önceki derslerde öğrendiğin araçlarla onu büyütebilirsin:

Bu fikirlerin hiçbiri zorunlu değil. Amaç, çalışan basit bir oyunu adım adım büyütmenin keyfini görmen.

Mini uygulama

Kendi labirentini kur:

  1. Yeni bir Scratch projesi aç ve boş dekora tek renkte bir labirent çiz.
  2. Oyuncu ve hedef olmak üzere iki kukla ekle.
  3. Yukarıdaki dört ok tuşu bloğunu oyuncu kuklasına ekle.
  4. sürekli tekrarla içindeki iki koşulu (duvar ve hedef) ekle.
  5. Dört test senaryosunu sırayla çalıştır ve sonuçları bir kağıda not et.

Bittiğinde kendine sor: Hangi senaryoda takıldın ve nasıl çözdün?

Projeyi güçlendirme planı

Proje: Labirent Oyunu için yalnız çalışan bir gösterim hazırlamak yeterli değildir. İyi bir proje; hedefi, kullanıcıyı, sınırları, test koşullarını ve başarısız denemeleri de görünür kılar. Bu genişletme çalışmasında labirentte duvara değince başlangıca dönen karakter bağlamını kullanarak çalışan bir Scratch sahnesi, blok düzeni ve test listesi oluştur. Dersin hedefi “Hareket, koşul ve çarpışmayı birleştirerek oynanabilir bir labirent oyunu yap” olsa da proje sayfasında ölçülmemiş bir sonucu kesin başarı gibi yazma.

1. Proje özeti ve kapsam

Önce üç cümle yaz: Çözmek istediğin sorun nedir, bu sorun kimin için önemlidir ve ilk sürüm özellikle neyi yapmayacaktır? Kapsam dışını belirtmek projeyi küçültmez; tamamlanabilir hâle getirir. Adım 1: Problemi ve tasarımı belirle ile Gerekli kuklalar ve dekor arasındaki ilişkiyi projenin temel varsayımı olarak yaz ve bu varsayımı hangi testin doğrulayacağını belirt.

2. Kabul ölçütleri

“Proje: Labirent Oyunu” için kabul ölçütlerini “çalışıyor” gibi belirsiz sözcüklerle bırakma. Süre, mesafe, doğru deneme sayısı, ekran genişliği veya kullanıcı adımı gibi gözlenebilir bir ölçü seç. Ölçüm mümkün değilse en azından üç ardışık denemede aynı davranışın görülüp görülmediğini kaydet.

3. Test matrisi

3. Test matrisi tablosu
TestKoşulBeklenenGerçek sonuçSonraki karar
NormalStandart giriş ve tam bağlantıTemel görev tamamlanırTest sırasında doldurKoru veya küçük iyileştirme yap
SınırEn düşük ya da en yüksek kabul edilen değerSistem kararlı kalırTest sırasında doldurEşiği veya kuralı gözden geçir
HataEksik, yanlış ya da beklenmeyen girişGüvenli ve anlaşılır tepkiTest sırasında doldurHata yönetimi ekle
TekrarAynı koşulda en az üç denemeBenzer sonuçlarTest sırasında doldurTutarsızlığın kaynağını araştır

4. Sürüm günlüğü

“Proje: Labirent Oyunu” projesinin her sürümü için tarih, değiştirdiğin tek ana karar, değişikliğin nedeni ve test sonucu yaz. İlk sürümün çalışmaması başarısızlık değildir; Adım 1: Problemi ve tasarımı belirle veya Gerekli kuklalar ve dekor ile ilgili hangi varsayımın yeniden düşünülmesi gerektiğini gösteren veridir. Görsel kullanırken kişisel bilgi ve özel arka plan ayrıntılarını paylaşma.

5. Sunum ve öz değerlendirme

“Proje: Labirent Oyunu” projesini iki dakikada anlatacak şekilde hazırlan: sorun, çözüm yaklaşımı, labirentte duvara değince başlangıca dönen karakter için en önemli test sonucu ve bir sonraki adım. “Tamamlandı” demek yerine hangi kısmın doğrulandığını ve hangi kısmın hâlâ geliştirilmesi gerektiğini açıkla.

Sık yapılan hatalar

Duvarları farklı renklerde çizmek

Duvarların bir kısmı mavi, bir kısmı lacivertse renge değiyor mu? bloğu sadece bir tonu yakalar. Bütün duvarları tek renk tut.

Başlangıç konumunu unutmak

Yeşil bayrağa basınca karakteri girişe koymazsan, oyun her seferinde farklı bir yerden başlar. x/y konumunu … yap bloğunu döngüden önce eklemeyi unutma.

Kontrolleri döngüye koymamak

Duvar kontrolünü sürekli tekrarla içine koymazsan, program çarpışmayı yalnızca bir kez bakar ve kaçırır. Kontrol her an çalışmalı.

Adım sayısını çok büyük seçmek

x konumunu 50 değiştir dersen karakter duvarların içinden atlayabilir. Dar koridorlarda küçük bir sayı (5–10) daha güvenlidir.

Güvenlik notu

Bu ders tamamen ekran başında yapılır. Uzun süre ekrana bakmak gözleri yorar; her 20 dakikada bir kısa bir mola verip uzağa bakmak iyi gelir. Scratch'te projeni paylaşırken gerçek adını, okulunu veya adresini yazma; sadece takma bir kullanıcı adı kullan. Yorumları açık bir projede bir yetişkinle birlikte incelemek daha güvenlidir.

Ders özeti

Kontrol soruları

  1. Labirentin bütün duvarlarının aynı renkte olması neden gereklidir?
  2. Karakteri sağa hareket ettirmek için hangi blok ve değer kullanılır?
  3. Duvar kontrolünü neden sürekli tekrarla döngüsünün içine koyarız?
  4. Yeşil bayrağa basınca karakteri başlangıç noktasına koymayı unutursak ne olur?
  5. renge değiyor mu? bloğundaki renk duvarın rengiyle tam eşleşmezse ne olur?

Cevaplar

  1. Çünkü karakterin duvara değip değmediğini o rengi kontrol ederek anlarız. Renkler farklı olursa blok bazı duvarları göremez.
  2. sağ ok tuşuna basıldığında olayının içinde x konumunu 10 değiştir bloğu kullanılır (pozitif değer sağa taşır).
  3. Çünkü çarpışma her an olabilir. Döngü kontrolü sürekli tekrarlar; tek seferlik kontrol çarpışmayı kaçırır.
  4. Oyun her seferinde karakterin en son bulunduğu yerden başlar; oyuncu adil bir başlangıç noktasından oynayamaz.
  5. Blok duvarı algılamaz, karakter duvarın içinden geçer. Damlalıkla rengi doğrudan duvardan almak sorunu çözer.

Kaynak ve doğrulama notu

“Proje: Labirent Oyunu” dersi için doğrulama odağı Adım 1: Problemi ve tasarımı belirle ile Gerekli kuklalar ve dekor arasındaki ilişkinin örnekler üzerinde tutarlı çalışmasıdır. Blok adları Scratch’in güncel temel kategorileriyle uyumlu tutulmuştur. Proje davranışı; başlangıç, normal oyun, hata ve yeniden başlatma durumlarında ayrı ayrı denenmelidir.

Sonraki ders

Proje: Basketbol Atış Oyunu

Quiz’i BaşlatScratch ile Programlama bölümüne dön
SORU HAVUZU

Bu dersi 10 soruyla pekiştir

Bu ders için 20 soruluk bir havuz hazırlandı. Her başlangıçta 10 soru ve seçenekler yeniden karıştırılır.