Dokümanlar · ← Blog yazıları

Öğretmenler için

Scratch labirent oyunu nasıl yapılır? Adım adım kodlar ve hazır proje dosyası

Probot Studio

Kısa cevap: Scratch'te labirent oyunu üç parçadan oluşur. Önce dekora tek renkli duvarlar ve farklı renkte bir hedef çizilir. Sonra top kuklası "sürekli tekrarla" içinde ok tuşlarıyla hareket ettirilir. Son olarak "rengine değiyor mu?" bloğuyla duvara değince başa dönmesi, hedefe değince kazanması sağlanır. Aşağıdaki kodlar ve indirilebilir proje dosyası Scratch'in kendi motorunda denendi. Duvara çarpan top başa dönüyor, labirenti bitiren oyuncu süresini tam saniye olarak görüyor.

Bu oyun ortaokulda blok tabanlı kodlamaya giriş için iyi bir ilk proje. Tek projede koordinat, döngü, koşul ve algılama bir araya geliyor ve öğrenci hatayı ekranda hemen görüyor. Blok tabanlı kodlamanın derslerdeki yeri için Blok tabanlı kodlama nedir? yazımıza bakabilirsiniz.

Başlamadan önce

1. Labirenti dekora çizin

Scratch sahnesinde labirent: beyaz zemin, mavi duvarlar, sağ üstte yeşil hedef, sol altta turuncu top

Sahneyi seçin, Dekorlar sekmesine geçin ve yeni bir dekor çizin. Dikdörtgen aracını dolgu modunda kullanarak duvarları çizin.

Burada iki kural var:

  1. Bütün duvarlar tek renk olsun. Kod duvarı rengiyle tanıyacak. Bir duvar başka bir mavi tonundaysa top o duvardan geçer.
  2. Hedef ve top duvardan çok farklı renkte olsun, birbirlerinden de. Örnekte duvarlar mavi, hedef yeşil, top turuncu. Top da yeşil olursa oyun açılır açılmaz biter.

Labirentin dört kenarına da duvar çizin, yoksa top labirentten dışarı çıkıp dolaşarak hedefe gider. Topun rahat geçebileceği genişlikte koridorlar bırakın. Scratch sahnesi 480 x 360 boyutunda. Yatayda x -240 ile 240, dikeyde y -180 ile 180 arasında. Örnek labirentte top sol alttan (x: -200, y: -150) başlıyor ve yılan gibi kıvrılan koridorlardan sağ üstteki yeşil kutuya gidiyor.

Çizimle uğraşmak istemezseniz örnekteki dekoru labirent-dekor.svg olarak indirip Dekor Yükle ile ekleyebilirsiniz.

Top için Çizim ile küçük bir daire çizin ya da hazır bir kukla seçip Büyüklük değerini düşürün. Kukla büyük kalırsa koridorlara sığmaz.

2. Topu ok tuşlarıyla hareket ettirin

Scratch blokları: yeşil bayrağa tıklandığında, x: -200 y: -150 konumuna git, sürekli tekrarla içinde dört eğer bloğu: sağ ok tuşuna basıldı mı ise x konumunu 3 değiştir, sol okta -3, yukarı okta y konumunu 3, aşağı okta -3

Bu kodu top kuklasına yazın. Her tekrarda dört tuşa ayrı ayrı bakılır. Basılı olan tuş yönünde top 3 adım kayar. Sağ ve yukarı artı, sol ve aşağı eksi yönlerdir. Öğrenciye -3'ü "3 adım ters yöne" diye okuyun.

Neden "tuşuna basılınca" kullanmıyoruz? "sağ ok tuşuna basılınca" bloğuyla da top hareket eder, ama klavye tuşu basılı tutunca önce bir kez tepki verir, kısa bir an bekler, sonra devam eder. Top kesik kesik gider. "sürekli tekrarla" içindeki "tuşuna basıldı mı?" sorusu ise tuşu her an kontrol ettiği için hareket akıcı olur. Bu farkı öğrencilere iki yöntemi de deneyerek göstermek iyi bir tartışma başlatır.

Adım değerini büyütürseniz top hızlanır. Ama adım çok büyürse (örneğin 30) top tek hamlede ince bir duvarın öbür yanına geçebilir ve çarpma algılanmaz. Önce 3 ile başlayın.

3. Duvara değince başa dönsün

Scratch bloğu: eğer mavi rengine değiyor mu ise x: -200 y: -150 konumuna git

Bu bloğu "sürekli tekrarla" içine, dört hareket bloğunun altına ekleyin. Renk kutusuna tıklayınca açılan pencerenin altında bir damlalık var. Damlalıkla sahnedeki duvara tıklayın. Rengi göz kararı seçmeyin. Scratch renkleri yalnızca çok küçük bir farkla eşleştiriyor, bu yüzden "hemen hemen aynı mavi" çoğu zaman tutmaz.

4. Hedefe değince kazansın ve süresini görsün

Scratch blokları: eğer yeşil rengine değiyor mu ise 2 saniye boyunca Süren: i ve zamanlayıcı i yuvarla ile birleştir de, durdur tümü

Bu bloğu da "sürekli tekrarla" içine ekleyin. Yeşil rengi yine damlalıkla hedeften seçin. "zamanlayıcı" Algılama bloklarında, "birleştir" ve "yuvarla" Operatörler bloklarında. Zamanlayıcı saniyeyi 10.494 gibi ondalıklı ve virgül yerine noktayla gösterir. 5. sınıf öğrencisi bunu on bin gibi okuyabilir, ondalık gösterim okulda daha sonra geliyor. "yuvarla" ekranda 10 yazdırır, sınıftaki süre karşılaştırması da tam sayıyla yapılır. Son olarak bayrak bloğunun hemen altına "zamanlayıcıyı sıfırla" bloğunu koyun.

Yeşil bayrağa tıklamak zamanlayıcıyı zaten sıfırlıyor. Bu blok yine de oyunu ileride başka bir yoldan yeniden başlattığınızda, örneğin bir sonraki seviyeye geçtiğinizde, sürenin sıfırdan sayılmasını garantiliyor.

Kodun tamamı

Labirent oyununun tüm kodu: bayrak, başlangıç konumu, zamanlayıcıyı sıfırla ve sürekli tekrarla içinde dört yön tuşu, duvar ve hedef kontrolleri, süre yuvarlanmış

Hazır proje dosyası: labirent-oyunu.sb3. Scratch'te Dosya menüsünden bilgisayardan yükleme seçeneğiyle açabilirsiniz. Bu seçeneğin Türkçe çevirisi henüz yok, menüde İngilizce "Load from your computer" yazısını görebilirsiniz. Dosya, bu yazıdaki kodun aynısını ve örnek dekoru içeriyor. Biz bu dosyayı Scratch'in proje motorunda çalıştırıp iki durumu denedik. Sağ ok basılı tutulunca top ilk duvara çarpıp başa döndü. Labirent baştan sona yürününce top hiçbir duvara değmeden hedefe vardı, ekranda "Süren: 11" yazdı ve oyun durdu.

Öğrencilere hazır dosyayı başta vermeyin. Önce kendileri yapsın, takılan öğrenci kendi koduyla hazır dosyayı yan yana karşılaştırsın.

Sık yapılan hatalar

Belirti Olası sebep Çözüm
Ok tuşları hiçbir şey yapmıyor Bayrağa tıklanmamış ya da bloklar "yeşil bayrağa tıklandığında" bloğundan kopmuş Bayrağa tıklayın. Kopuk blokları sürükleyip bayrak bloğunun altına yapıştırın
Bayrak tıklı ama ok tuşları çalışmıyor Klavye bir blok kutusunda kalmış. Bir sayı yazdıktan sonra ok tuşları o kutunun içinde kalıyor Sahneye bir kez tıklayın, sonra ok tuşlarına basın
Top hiç kıpırdamıyor Kod başka bir kuklaya yazılmış ya da bloklar "sürekli tekrarla"nın dışında kalmış Kuklalar listesinde topu seçip koda bakın. Hareket blokları döngünün içinde olmalı
Top bir kez kayıp duruyor "sürekli tekrarla" yerine tek seferlik bir blok kullanılmış Dört "eğer" bloğunu "sürekli tekrarla"nın içine alın
Top duvarın içinden geçiyor Duvar rengi göz kararı seçilmiş, duvarlar farklı tonlarda ya da "rengine değiyor mu?" yerine yanındaki "rengi ... rengine değiyor mu?" bloğu alınmış Rengi damlalıkla duvardan seçin, tüm duvarları aynı renkle çizin, blok adını kontrol edin
Top bazı duvarlardan geçiyor, bazılarından geçmiyor Adım değeri büyütülmüş, top ince duvarın üstünden atlıyor Adımı 3'e indirin ya da ince duvarı kalınlaştırın
Top labirentin dışına çıkıyor Dış kenarlara duvar çizilmemiş Labirentin dört kenarına da duvar çizin
Hedefe varınca hiçbir şey olmuyor Hedef rengi göz kararı seçilmiş ya da hedef kontrolü döngünün dışında Rengi damlalıkla hedeften seçin, "eğer" bloğunu "sürekli tekrarla"nın içine alın
Top bayrağa basınca hemen başa dönüp titriyor Başlangıç noktası bir duvarın üstünde Başlangıç koordinatını koridorun ortasına alın
"Süren" yazısı hiç görünmüyor "2 saniye boyunca ... de" yerine "... de" kullanılmış "durdur tümü" konuşma balonunu da siler. Süreli "de" bloğunu kullanın ya da araya bekleme koyun
Süre bayrağa basmadan önce başlamış gibi "zamanlayıcıyı sıfırla" yok ve oyun bayrak dışında bir yolla başlatılmış Bayrak bloğunun altına "zamanlayıcıyı sıfırla" ekleyin
Top koridora sığmıyor Kukla çok büyük Kukla bilgisinden Büyüklük değerini düşürün

Hata ayıklarken öğrenciye "top ne yapıyor, sen ne yapmasını istiyordun?" diye sorun. Belirtiyi kendi cümlesiyle söyleyen öğrenci sebebi çoğu zaman kendisi buluyor.

Oyunu geliştirme fikirleri

Temel oyunu bitiren öğrenciler için zorluk sırasıyla. İlk üçünde değişken yok, son ikisinde var:

  1. Duvara değince ses çalsın. Topun Sesler sekmesinden bir ses seçin. Duvar kontrolündeki "eğer" bloğunun içine "sesini başlat" bloğunu ekleyin.
  2. İkinci seviye yapın. İkinci bir labirent dekoru çizin. Hedefe değince "durdur tümü" yerine "sonraki dekor" ve başlangıç noktasına git blokları çalışsın. İkinci dekorda hedef rengini aynı yeşil tutun ki kod iki seviyede de çalışsın. Bayrak bloğunun altına da "(birinci labirent) dekoruna geç" ekleyin. Yoksa bayrağa yeniden basınca oyun ikinci seviyeden başlar.
  3. Hareketli engel koyun. Koridorlardan birinde gidip gelen ikinci bir kukla ekleyin. Engelin kendi kodunda "sürekli tekrarla" içinde "10 adım git" ve "kenara geldiyse sek" yeterli. Top bu kuklaya değince de başa dönsün. Burada "rengine değiyor mu?" yerine "(kukla adı) e değiyor mu?" bloğu kullanılır. İki algılama yönteminin farkını konuşmak için iyi bir fırsat.
  4. Can hakkı ekleyin. "can" adında bir değişken oluşturun ve oyun başında 3 yapın. Duvara her değişte "can i -1 kadar değiştir" çalışsın. Öğrenciye bunu "canı bir azalt" diye anlatın. Can 0 olunca oyun bitsin.
  5. Rekor tutun. "rekor" değişkeni ile en kısa süreyi saklayın. Dikkat: rekor 0 ile başlarsa hiçbir süre 0'dan küçük olmaz ve rekor hiç değişmez. Kural şöyle olsun: "rekor 0 ise ya da süre rekordan küçükse rekoru süre yap." Rekoru bayrak bloğunda sıfırlamayın, yoksa her oyunda silinir. Scratch değişkenin son değerini projeyle birlikte kaydeder, proje yeniden açıldığında rekor yerinde durur.

Sınıfta nasıl kullanılır?

Ders başlamadan bilgisayarlar açık ve Scratch yüklü olsun. Laboratuvarda açılış 5-10 dakika sürebiliyor ve bu süre plandan gider.

Birinci ders (40 dk):

İkinci ders (40 dk):

Okul laboratuvarlarının çoğunda bilgisayar kapanınca masaüstü ve indirilen dosyalar silinir. İki ders arasında proje kaybolmasın diye birinci dersin sonunda Dosya menüsünden Bilgisayarına kaydet ile kaydettirin. Dosya adı öğrencinin adı olsun (örneğin labirent-ayse.sb3), yeri sizin gösterdiğiniz klasör ya da bir USB bellek.

Kâğıda çizme adımını atlamayın. Koordinat fikri ilk kez burada anlam kazanıyor. Öğrenci "topum sol altta, yani iki sayı da eksi tarafta" diye düşünmeye kâğıtta başlıyor. Bilgisayar sayısı yetersizse ikili çalışma da işe yarar. Biri sürer, öteki kodu okur, beş dakikada bir yer değiştirirler. Değişim zamanını siz söyleyin, yoksa çoğu ikili hiç değişmez.

Sıkça sorulan sorular

Scratch labirent oyunu hangi sınıfa uygun? Ortaokul 5-6. sınıf için iki ders saatlik bir proje. Koordinatı ve eksi sayıyı okulda henüz görmemiş olmaları sorun değil. x'i sağ-sol, y'yi yukarı-aşağı diye anlatın, eksiyi "ters yön" diye okuyun. Daha küçük yaşta dekoru hazır verip yalnızca hareket kodunu yazdırabilirsiniz.

Bu oyunu Scratch Jr ile yapabilir miyim? Bu yazıdaki kod Scratch 3 için. Scratch Jr'da renk algılama bloğu olmadığı için duvara çarpma başka yoldan kurulur.

Proje dosyası neden açılmıyor? Dosya Scratch 3 biçiminde (.sb3). Scratch'in eski 2.0 sürümünde açılmaz. Güncel Scratch sitesinde ya da Scratch uygulamasında Dosya menüsünden açın.

Öğrencilerin hesap açması gerekiyor mu? Hayır. Projeyi Bilgisayarına kaydet ile dosya olarak saklamak hesap gerektirmiyor. Hesap yalnızca projeyi Scratch sitesinde kaydetmek ve paylaşmak için gerekiyor.

Kaynaklar

Kaynaklara erişim: 8 Ekim 2026.