Scratch'te değişken kullanmak için sol panelde Değişkenler kategorisine girip yeni bir değişken oluşturur, ona başlangıç değeri verir ve olaylarla (bir sprite'a tıklama, çarpışma gibi) değerini artırıp azaltırsın. Skor ve seviye sistemi de tam olarak bu mantıkla çalışır: "Puan" adında bir değişken oluşturup her doğru harekette değerini bir artırırsın, belirli bir eşiğe ulaştığında da "Seviye" değişkenini değiştirirsin.
Bu makalede bu işlemi sıfırdan, gerçek bir mini oyun akışı üzerinden adım adım göreceksin. Değişken oluşturma, oyun başında sıfırlama, puan artırma bloklarını bağlama ve seviye koşulunu kurmayı tek tek uygulayacağız.
Değişken Aslında Ne İşe Yarar?
Değişkeni kağıda not aldığın bir bilgi gibi düşünebilirsin. Oyunda skor değiştikçe bunu elle güncellemek yerine, değişken bu işi otomatik yapar: bir olay gerçekleştiğinde değeri değişir, sahnedeki kutucuk da anında yeni değeri gösterir. Scratch'te her değişkenin bir adı ve bir değeri vardır; bu değer sayı, yazı veya boş olabilir.
Bir skor/seviye sistemi kurarken aslında üç şeyi birbirine bağlıyorsun:
- Bilginin saklandığı yer: değişkenin kendisi (Puan, Seviye gibi)
- Değiştiği an: bir olay veya koşul (çarpışma, tıklama, süre dolması)
- Oyuncuya gösterilme şekli: sahnedeki kutucuk veya bir "söyle" mesajı
Bu üç parça yerine oturduğunda, oyunun "canlı" hissettiren geri bildirim mekanizması ortaya çıkar.
Adım 1: Değişken Oluşturma
Sol taraftaki blok kategorilerinden Değişkenler sekmesine gir ve Değişken Oluştur butonuna bas. Açılan pencerede değişkene "Puan" adını ver ve "Tüm spritelar için" seçeneğini işaretli bırak; bu sayede değişken projedeki her sprite'tan erişilebilir olur.
Aynı adımı tekrarlayıp bu kez "Seviye" adında ikinci bir değişken oluştur. Değişkenleri oluşturduktan sonra sahnenin sol üst köşesinde iki küçük kutucuk belirir; bunlar oyuncuya anlık puan ve seviye bilgisini gösterir. İstersen kutucukların yanındaki onay kutusunu kapatıp gizleyebilirsin, ama öğrenme aşamasında görünür bırakmak değişkenlerin nasıl değiştiğini takip etmeni kolaylaştırır.
Adım 2: Başlangıç Değerlerini Sıfırlama
Bir oyun yeniden başlatıldığında Puan ve Seviye değerleri kendiliğinden başlangıç değerlerine dönmez. Bu bloklar eklenmezse yeni oyun, önceki oyunda kalmış puan ve seviyeden devam eder. Bu nedenle değişkenleri sıfırlama kodunu, oyunu başlatan Bayrak tıklandığında olay bloğunun hemen altına yerleştirmelisin.
Bayrak tıklandığında
Puan'ı (0) yap
Seviye'yi (1) yap
Burada Puan 0, Seviye ise 1 olur. Bu, yeni başlayanların en sık atladığı adımlardan biridir. Oyun çalışırken değerleri değiştirmek yeterli değildir; her yeni başlangıçta aynı temiz başlangıcı kurmak gerekir.
Adım 3: Puan Artırma Mantığı
Toplanabilir nesne olarak bir elma kuklası kullanalım. Elmanın kodu bayrakla başlamalı ve sürekli tekrarla döngüsü içinde ana karaktere dokunup dokunmadığını kontrol etmelidir:
Bayrak tıklandığında
sürekli tekrarla
eğer ana karaktere dokunuyor ise
Puan'ı (1) artır
gizle
(0.5) saniye bekle
rastgele konuma git
göster
Dokunma koşulu sağlandığında önce puan artar, elma gizlenir, kısa bir beklemeden sonra yeni bir konuma taşınır ve yeniden gösterilir. Gizle bloğunu unutursan karakter elmanın üzerinde kalırken koşul döngünün her tekrarında yeniden doğru olabilir. Böylece tek bir dokunuşta Puan birden fazla artabilir. Gizleme, aynı temasın tekrar tekrar sayılmasını önleyen basit bir korumadır.
Adım 4: Seviye Koşulu ve Yayın Mesajı
İlk seviye eşiğini 10 puan olarak belirleyebilirsin. Koşulu yalnızca Puan 10'a eşit olduğunda çalıştırmak yerine, Seviye ile eşik çarpımını kullanmak tekrarları önler:
Bayrak tıklandığında
sürekli tekrarla
eğer Puan ≥ Seviye × 10 ise
Seviye'yi (1) artır
[seviye_atla] yayınını gönder
Böylece Puan 10 olduğunda Seviye 2 olur, sonraki eşik 20 puana taşınır. seviye_atla mesajı gönderildiğinde, bu mesajı dinleyen başka kuklalar kendi kodlarını çalıştırabilir. Arka planı temsil eden bir kuklaya şu tepkiyi ekleyebilirsin:
seviye_atla mesajını aldığımda
sonraki kostüm
"Seviye atladın!" de (2) saniye
Scratch'in güncel Türkçe blok çevirisinde bu görünüm bloğu sonraki kostüm adıyla yer alır. Yayın mesajı, puan kuklası ile arka plan kuklasını tek bir uzun kod dizisine bağlamadan, aynı olayda bağımsız ve senkronize biçimde tepki vermelerini sağlar.
Adım 5: Hata Kontrolü - Değişken Neden Beklenmedik Davranıyor?
Skor sistemi çalışırken ortaya çıkan sorunlar çoğunlukla değişkenin yanlış yerde değiştirilmesinden veya aynı temasın döngü boyunca tekrar tekrar algılanmasından kaynaklanır. Şu üç kontrol, sorunun kaynağını bulmayı kolaylaştırır:
- Puan sürekli sıfırlanıyorsa:
Puan'ı 0 yapbloğu yalnızca yeşil bayrak tıklanınca bölümünün başlangıcında bulunmalıdır. Bu bloksürekli tekrarlaiçine girerse her döngüde yeniden çalışır ve alınan puan silinir. Sıfırlama bloklarını döngünün dışına taşı. - Bir dokunuşta Puan birden fazla artıyorsa: Nesneye dokunan karakter, döngünün birkaç turu boyunca teması sürdürebilir. Puan artırmadan sonra nesneyi
gizlen, kısa sürebekleve ardındangösterbloklarını kullan. Böylece aynı temasın art arda sayılması önlenebilir. - Seviye hiç değişmiyorsa: Koşulda
Puan = 10kullanmak yerinePuan > 9kontrolünü tercih et. Puan bir temas sırasında birden fazla artarsa 10 değerini atlayabilir. Eşik aşıldığında seviye değişir ve mesaj gönderilir.
eğer <<(Puan) > (9)> ve <(Seviye) = (1)>> ise
(Seviye)'yi (2) yap
[Seviye 2] haberini sal
Buradaki ek Seviye = 1 kontrolü, koşul döngü içinde tekrar çalışsa bile aynı mesajın sürekli gönderilmesini önlemeye yardımcı olur.
Beklenen Oyun Davranışı (Özet Liste)
Bloklar doğru kurulduğunda oyun akışı şu şekilde görünür:
- Oyun başlarken
Puan0,Seviye1 olur. - Her geçerli dokunuşta
Puantam 1 artar. - Toplanan nesne kaybolur, kısa beklemenin ardından yeniden belirir.
Puan10'a ulaştığında veya bu değeri geçtiğindeSeviye2 olur ve mesaj gösterilir.- Oyun yeniden başlatıldığında
Puan0'a,Seviye1'e ve diğer başlangıç değerlerine döner.
Beklenmeyen bir sonuç görürsen blokları tek tek tıklayarak test et. Özellikle puan artırma, gizleme, bekleme ve seviye koşulunu ayrı ayrı denemek, hangi bloğun farklı davrandığını görmeyi kolaylaştırır.
Sonraki Adım
Değişkenler yalnızca veri saklamaz; oyunun hangi kararı vereceğini de belirler. Aynı mantık can sayısı, zaman sayacı veya envanter sistemi kurarken uygulanabilir.
Yeni Scratch proje fikirleri ve liste kullanımıyla ilgili anlatımlar için Berk Akademi blogundaki ilgili yazılara göz atabilirsin. Görsel programlamaya ilgisinin hangi problem çözme ve algoritmik düşünme becerileriyle örtüştüğünü değerlendirmek isteyenler ücretsiz kariyer testini inceleyebilir. ([berkakademi.com](ücretsiz kariyer testi))
Bu proje, değişkenlerle düşünmenin ve oyun akışını adım adım kurmanın temelini gösterir.