Scratch zıplama kodu, karakterin y yönündeki hareketini bir y hızı değişkeniyle yöneterek kurulur. Yukarı ok tuşuna basıldığında karaktere yukarı doğru bir itiş verilir, ardından bu hız her yenileme adımında azaltılır. Böylece kedi kuklası önce yükselir, yavaşlar ve sonra aşağı inmeye başlar.
Bu mantığı yeşil bir zemin üzerindeki kedi kuklasıyla uygulayabilirsin. İlk aşamada karakterin hareketini yöneten değişkeni ve yerçekiminin etkisini kuracağız. Zemine temas kontrolü daha sonra eklendiğinde, karakterin zeminin içinden geçmesi ve havada tekrar tekrar zıplaması gibi sorunlar da düzenlenebilir.
Scratch’te zıplama hangi mantıkla çalışır?
Scratch’te zıplama, karakterin y yönündeki hareketini bir y hızı değişkeni ile yönetme mantığına dayanır. Bu değişkeni, karakterin o anda ne kadar hızlı yukarı ya da aşağı hareket ettiğini saklayan küçük bir sayaç gibi düşünebilirsin.
Karakterin sahnedeki yüksekliğini y konumu gösterir. Y hızı ise bu konumun her yenileme adımında ne kadar değişeceğini belirler. Oyunun hareketleri yeniden hesapladığı her kısa adımı bir kare gibi düşün. Bir karede y hızını y konumuna eklersen karakter yukarı ya da aşağı hareket eder.
Örneğin y hızı 12 ise karakterin y konumu 12 birim artar ve kedi yukarı çıkar. Sonraki karede y hızı 11 olursa yine yukarı gider, ancak önceki kareye göre biraz daha yavaş hareket eder. Hız 0 olduğunda karakter en yüksek noktaya yaklaşır. Değer negatif olduğunda ise y konumu azalır ve karakter aşağı inmeye başlar.
Günlük hayattan bir örnek olarak yukarı doğru fırlattığın bir topu düşünebilirsin. Top ilk anda hızlı yükselir, yükseldikçe yavaşlar ve bir noktada aşağı doğru hareket eder. Scratch’te y hızı değişkenini her karede azaltmak, bu hareketin basit bir benzerini oluşturur.
Bu sistem için önce Değişkenler kategorisinden Bir Değişken Oluştur seçeneğine tıklayıp y hızı adında bir değişken oluştur. Scratch Türkçe arayüzünde karakterin yüksekliğini değiştiren blok y konumunu ... değiştir, konumu doğrudan belirleyen blok ise y konumunu ... yap şeklindedir.
Kedi kuklası için y hızı ve yerçekimi bloklarını kur

Kedi kuklasını yeşil zeminin biraz üstüne yerleştirdikten sonra aşağıdaki temel blok dizisini kedi kuklasına ekle:
yeşil bayrağa tıklandığında
y hızı değişkenini 0 yap
sürekli tekrarla
eğer <yukarı ok tuşuna basıldı mı?> ise
y hızı değişkenini 12 yap
y konumunu (y hızı) kadar değiştir
y hızı değişkenini -1 kadar değiştir
yeşil bayrağa tıklandığında bloğu, oyun başladığında bu kod dizisini çalıştırır. Hemen altındaki y hızı değişkenini 0 yap bloğu, önceki denemeden kalan hız değerini temizler ve karakterin başlangıçta hareket etmeden beklemesini sağlar.
sürekli tekrarla bloğu, zıplama hareketinin yalnızca bir kez değil, oyun devam ettiği sürece tekrar tekrar hesaplanmasını sağlar. Bu döngünün içindeki eğer yukarı ok tuşuna basıldı mı? ise koşulu, oyuncunun zıplama isteğini kontrol eder.
Yukarı ok tuşuna basıldığında y hızı değişkenini 12 yap bloğu çalışır. Buradaki 12, karaktere verilen ilk yukarı yönlü itiştir. Ardından y konumunu y hızı kadar değiştir bloğu, o karedeki hıza göre kedinin yüksekliğini günceller.
Son blok olan y hızı değişkenini -1 kadar değiştir, her tekrarda y hızını bir azaltır. Bu değer, yerçekiminin basitleştirilmiş etkisini temsil eder. Kedi önce yükselir, y hızı azaldıkça yükselişi yavaşlar, değer negatife döndüğünde aşağı inmeye başlar. 12 ve -1 değerleri hareketin yüksekliğini ve düşüş hızını belirleyen ayarlardır.
Bu temel dizide henüz zemine temas kontrolü bulunmadığı için kedi aşağı doğru hareket etmeyi sürdürebilir. Bir sonraki adımda yeşil zemine değdiğinde karakteri durdurmayı ve yalnızca yerdeyken zıplamasını sağlamayı ekleyeceğiz.
Zeminde durmayı ve yalnız yerde zıplamayı nasıl sağlarsın?

Karakteri yerde tutmak için yeşil zemine temas edip etmediğini sürekli kontrol etmelisin. Kedi kuklası yeşil renge değdiğinde düşüşü durdurulur, y hızı sıfırlanır ve yukarı ok yalnızca yerde mi değişkeni 1 olduğunda yeni bir zıplama başlatır.
Değişkenler bölümünden y hızı ve yerde mi adında iki değişken oluştur. yerde mi değişkeni bir cevap kartı gibi çalışır. Değeri 1 ise kedi zemindedir, 0 ise havadadır.
Yeşil bayrak tıklandığında
y hızı değişkenini 0 yap
yerde mi değişkenini 0 yap
sürekli tekrarla
y hızı değişkenini -1 kadar değiştir
y konumunu (y hızı) kadar değiştir
yerde mi değişkenini 0 yap
y konumunu -1 değiştir
eğer <[yeşil] rengine değiyor mu?> ise
yerde mi değişkenini 1 yap
y hızı değişkenini 0 yap
değil <[yeşil] rengine değiyor mu?> olana kadar tekrarla
y konumunu 1 değiştir
eğer <<yukarı ok tuşuna basıldı mı?> ve <yerde mi = 1>> ise
y hızı değişkenini 12 yap
y hızı değişkenini -1 kadar değiştir bloğu yerçekimini taklit eder. Her döngüde dikey hız biraz azalır; böylece kedi önce yükselir, sonra yavaşlar ve aşağı düşer. y konumunu (y hızı) kadar değiştir bloğu da bu hızın kedinin sahnedeki dikey konumuna uygulanmasını sağlar.
[yeşil] rengine değiyor mu? bloğu, kedinin görünen ve saydam olmayan kısmıyla seçilen yeşil rengin aynı noktada örtüşüp örtüşmediğini kontrol eder. Rengi seçerken damlalığı zeminin iç kısmında kullan. Kenar piksellerinde saydamlık veya renk geçişi varsa temas beklediğin noktadan biraz farklı algılanabilir.
Kedi zeminin içine birkaç piksel gömülürse, değil... olana kadar tekrarla döngüsü çalışır ve kedi zeminden ayrılana kadar y konumunu 1 değiştir bloğu ile yukarı taşınır. Buradaki -1 aşağı yönde kısa yoklamayı, 1 ise zeminden çıkmak için yapılan küçük düzeltmeyi temsil eder. 12 değeri de yukarı yönlü başlangıç hızıdır.
Yukarı ok tuşunu havada basılı tutsan bile yerde mi değeri 0 olduğu için zıplama koşulu çalışmaz. Kedi zemine indikten sonra değişken 1 yapılır ve sonraki yukarı ok kontrolünde yeniden zıplayabilir.
Sağ ve sol hareketi ekleyerek platform oyunu oluştur
Sağ ve sol hareket için aynı sürekli tekrarla döngüsüne iki koşul ekleyebilirsin. x konumu yatay hareketi, y konumu ise dikey hareketi temsil eder.
eğer <sağ ok tuşuna basıldı mı?> ise
x konumunu 5 değiştir
eğer <sol ok tuşuna basıldı mı?> ise
x konumunu -5 değiştir
x konumunu 5 değiştir kediyi sağa, x konumunu -5 değiştir kediyi sola götürür. Bu yatay hareket blokları, zıplama ve yerçekimi bloklarından ayrı çalışır; hepsini aynı ana döngüde tutmak ise hareketlerin sırasını takip etmeyi kolaylaştırır.
Test için başlangıç platformunu yeşil renkle çiz ve biraz ilerisine daha alçak ya da daha yüksek platformlar ekle. Kedi sağ oka basınca başlangıç platformundan ilerlemeli, kenardan düştüğünde y hızıyla aşağı inmeli, yeşil yüzeye değdiğinde durmalı ve zemine indikten sonra yukarı ok ile yeniden zıplayabilmelidir.
Scratch zıplama kodundaki hataları nasıl bulursun?
Scratch zıplama kodu çalışmıyorsa blokları rastgele değiştirmek yerine sorunu dört kontrol noktasına ayırabilirsin. Kedi kuklasının doğru rengi algıladığını, zıplama koşulunun yalnızca zemindeyken çalıştığını ve y konumuyla y hızının birbirine karıştırılmadığını kontrol et.
| Sorun | Kontrol edilecek blok | Beklenen sonuç |
|---|---|---|
| Kedi ekranın altına düşüyor | <rengine değiyor mu?> ve eğer ... ise |
Renk seçicisiyle doğrudan yeşil zeminden alınan renk kullanılmalı ve koşul kedi kuklasının kodunda bulunmalı. Kedi zemine değdiğinde y hızı sıfırlanmalı. |
| Kedi havadayken tekrar tekrar zıplıyor | Yukarı ok koşulu ile yerde olma koşulunun sırası | Yukarı ok kontrolü, yeşil zemine değme koşulunun içinde çalışmalı. Böylece kedi yalnızca zemindeyken yeni bir zıplama başlatır. |
| Kedi konumda takılıyor veya hareket etmiyor | y'yi 0 yap ve y'yi y hızı kadar değiştir |
y'yi 0 yap kediyi belirli bir yüksekliğe taşır. y'yi y hızı kadar değiştir ise mevcut konuma dikey hareket ekler. |
| Zıplama her denemede farklı başlıyor | yeşil bayrak tıklandığında altında y hızı'nı 0 yap |
Oyun başladığında dikey hız sıfırlanır ve kedi önceki çalışmadan kalan hareketle başlamaz. |
Yeşil zemin açıkça görünse bile renk algılama bloğundaki renk seçimini zeminin düz bir bölümünden yeniden yapmayı deneyebilirsin. Kedinin ayağı zemine değmeden önce ya da kedi başka bir kuklanın kodunda kontrol ediliyorsa koşul beklediğin gibi çalışmayabilir.
İlk denemede zıplama gücü için 12, yerçekimi için -1 değerlerini değiştirmeden kullan. Kedi çok yükseğe çıkıyor, kısa zıplıyor ya da zemine sert iniyorsa aynı anda iki değeri değiştirmek yerine yalnızca birini ayarla ve sonucu tekrar gözlemle.
Sık Sorulan Sorular
Scratch’te karakter havadayken neden tekrar tekrar zıplıyor?
Karakter havadayken tekrar tekrar zıplıyorsa yukarı ok koşulu büyük olasılıkla yerde olma kontrolünün dışında çalışıyordur. Yukarı ok kontrolünü, karakterin yeşil zemine değdiğini denetleyen eğer ... ise bloğunun içine yerleştir.
Scratch karakteri yeşil zemine değdiği hâlde neden aşağı düşmeye devam ediyor?
Karakter yeşil zemine değdiği hâlde düşüyorsa rengine değiyor mu? bloğunda seçilen renk zeminin gerçek rengiyle eşleşmiyor olabilir. Bloğun kedi kuklasında bulunduğunu ve zemin renginin renk seçicisiyle doğrudan zeminden alındığını kontrol et.
Scratch’te “y’yi 0 yap” ile “y’yi y hızı kadar değiştir” arasındaki fark nedir?
y’yi 0 yap karakteri doğrudan y konumu 0 olan noktaya taşır. y’yi y hızı kadar değiştir ise y hızının değerini mevcut konuma ekleyerek karakteri yukarı veya aşağı hareket ettirir.
Y hızı için 12 ve yerçekimi için -1 değerleri nasıl ayarlanır?
Önce y hızını 12, yerçekimini -1 yaparak hareketi dene. Zıplama yüksekliği veya düşüş hızı uygun değilse yalnızca bir değeri değiştirip yeniden test et.
Bu kontroller, Scratch’te zıplama kodunu parça parça inceleyerek hatanın renk algılamada mı, koşul sıralamasında mı yoksa hareket değerlerinde mi olduğunu bulmana yardımcı olur.