Scratch oyununda iki karakterin çarpışmasını algılamak için karakterlerden birine değiyor mu? bloğunu ekleyip diğer karakteri hedef olarak seçebilirsin. Bu kontrolü oyun boyunca tekrarladığında, karakterler temas ettiği anda puan artırma veya bir mesaj gösterme gibi işlemler başlatabilirsin.
Scratch’te çarpışma kontrolü hangi bloklarla yapılır?
İki karakter arasındaki teması, açık mavi renkli Algılama kategorisindeki değiyor mu? bloğuyla kontrol edebilirsin. Duvar ya da zemin gibi belirli bir renkle çizilmiş alanlar için aynı kategorideki rengine değiyor mu? bloğunu kullanabilirsin.
Örneğin sahnede bir kedi ve Elma adlı bir kukla bulunsun. Kedinin elmaya değip değmediğini kontrol etmek için şu adımları izle:
- Kukla listesinden kediyi seç ve onun kod alanını aç.
- Algılama kategorisinden değiyor mu? bloğunu kod alanına sürükle.
- Bloğun üzerindeki açılır listeyi aç ve hedef olarak Elma kuklasını seç.
- Turuncu renkli Kontrol kategorisinden eğer... ise bloğunu al ve algılama bloğunu bu bloğun altıgen koşul boşluğuna yerleştir.
- Temas gerçekleştiğinde yapılacak işlemi eğer... ise bloğunun içine ekle.
Değiyor mu? bloğu tek başına puanı değiştirmez veya karakteri hareket ettirmez. Kedinin seçilen kuklaya değip değmediğini bildirir; eğer... ise bloğu da temas varsa içine yerleştirdiğin komutları çalıştırır.
Kukla seçimini kontrol eden karaktere dikkat et. Kedi seçiliyken hedef olarak Elma'yı seçersen soru, kedinin elmaya değip değmediği olur.
Değme kontrolü neden sürekli tekrarla içinde yapılır?

Değme kontrolünü sürekli tekrarla içine koyduğunda Scratch, temas durumunu oyun devam ederken tekrar tekrar değerlendirir. Böylece kedi başlangıçta elmadan uzakta olsa bile daha sonra elmaya ulaştığında temas algılanabilir.
Eğer... ise bloğu bir döngünün dışında çalıştırılırsa koşul o noktada bir kez kontrol edilir. O sırada temas yoksa içine yerleştirilen komutlar çalışmaz ve aynı kontrol kendiliğinden tekrarlanmaz.
Aşağıdaki gösterim, Scratch bloklarının kedinin kod alanında nasıl iç içe yerleştirileceğini anlatır. Köşeli ayraçlar bloklardaki seçim veya giriş alanlarını gösterir:
yeşil bayrağa tıklandığında
sürekli tekrarla
eğer <[Elma] e değiyor mu?> ise
[Değdim!] de
Yeşil bayrak kod dizisini başlatır, sürekli tekrarla içindeki kontrolü yineler ve eğer... ise temas varsa konuşma balonunu gösterir. Kediyi hareket ettiren ayrı bir kodun varsa kediyi elmaya götürerek deneyebilirsin: Temas oluştuğunda kedi “Değdim!” der.
Rengine değiyor mu? bloğunu da aynı koşul boşluğuna yerleştirebilirsin. Örneğin zemini yeşile boyadıysan bloktaki renk kutusundan zeminin rengini seçerek kedinin o alana değmesini kontrol edebilirsin.
Kontrol etmek istediğin renk dekorun başka yerlerinde de kullanılıyorsa kedi o alanlara değdiğinde de koşul sağlanabilir. Duvar veya zemin için ayırt edilebilir bir renk seçmek ve renk seçme aracıyla doğrudan ilgili alandan örnek almak kontrolü daha anlaşılır hâle getirir.
Elma toplama oyununu blok blok nasıl kurarsın?

Kedi ve elma kuklalarını sahneye ekleyerek başlayabilirsin. Aşağıdaki oyunda kediyi ok tuşlarıyla hareket ettirirsin; kedi elmaya değdiğinde puanın artar ve elma başka bir konuma gider.
Puanı oluştur ve oyunun başında sıfırla
Değişkenler kategorisinden puan adında, tüm kuklalar için geçerli bir değişken oluştur. Ardından elma kuklasını seç ve şu blokları birleştir:
yeşil bayrağa tıklandığında
puan değişkenini 0 yap
rastgele konuma git
Yeşil bayrak bloğu oyunu başlatır. Değişken bloğu puanı sıfırlar, hareket bloğu ise elmayı rastgele bir başlangıç konumuna taşır.
Kediyi ok tuşlarıyla hareket ettir
Kedi kuklasını seç ve aşağıdaki blokları birleştir. Her eğer bloğunu sürekli tekrarla bloğunun içine yerleştir:
yeşil bayrağa tıklandığında
sürekli tekrarla
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
eğer yukarı ok tuşuna basıldı mı? ise
y konumunu 5 değiştir
eğer aşağı ok tuşuna basıldı mı? ise
y konumunu -5 değiştir
Sürekli tekrarla tuş kontrollerini oyun boyunca yineler. Her eğer bloğu ilgili tuşa basılıp basılmadığını sınar; x konumunu değiştir kediyi yatay, y konumunu değiştir ise dikey yönde hareket ettirir. Negatif değerler sola veya aşağıya hareket sağlar.
Elmanın kediyi algılamasını sağla
Elma kuklasının Sesler sekmesine kısa bir ses ekle ve adını toplama yap. Sonra elmanın başlangıç bloklarının altına şu döngüyü ekle:
sürekli tekrarla
eğer Kedi'ye değiyor mu? ise
puan'ı 1 kadar değiştir
toplama sesini başlat
<Kedi'ye değiyor mu? değil> olana kadar tekrarla
rastgele konuma git
Değiyor mu? bloğunun listesinden kediyi seç. Koşul doğru olduğunda değişken bloğu puanı artırır, ses bloğu toplama sesini başlatır. Değil işleci değme koşulunu tersine çevirir; içteki döngü, elma kediye değmeyen bir konum bulana kadar rastgele konum seçer.
Bu yöntem elmanın kediyle üst üste kalmasını önler, ancak yeni konumun önceki konumdan belirli bir uzaklıkta olmasını garanti etmez. Kedinin elmaya değmesiyle puanın bir artmasını, sesin çalmasını ve elmanın yeni bir konuma geçmesini gözlemleyebilirsin.
Çarpışma anında puan, can ve ses nasıl yönetilir?
Çarpışma gerçekleştiğinde yapılacak işlemleri, değme koşulunu kontrol eden eğer bloğunun içine yerleştirirsin. Toplanabilir bir nesne puanı artırırken, tehlikeli bir nesneyle temas canı azaltabilir.
Değişkenler kategorisindeki puan'ı 1 kadar değiştir puana bir ekler. Oluşturduğun can değişkenini aynı blokla -1 kadar değiştirirsen can bir azalır; yeni oyun başladığında can için uygun bir başlangıç değeri atamayı da unutma.
Ses kategorisindeki sesini başlat bloğu sesi başlatıp sonraki bloğa geçer. Sesini bitene kadar çal ise ses tamamlanana kadar o kod dizisini bekletir; bu sırada elmanın taşınması da gecikir.
Aynı temasın tekrar tekrar sayılmasını azaltmak için kısa bir bekleme ekleyebilirsin. Ancak bekleme bittiğinde kuklalar hâlâ birbirine değiyorsa temas yeniden sayılabilir. Bunun yerine elmayı örnekteki gibi taşıyabilir veya tekrar saymadan önce değiyor mu? koşulunun sona ermesini bekleyebilirsin.
Scratch çarpışma algılamada hangi hatalar yapılır?
Çarpışma kontrolünde sık karşılaşılan sorunlar, kontrolün yanlış yerde çalışmasından, temasın tekrar tekrar sayılmasından veya yanlış rengin seçilmesinden kaynaklanabilir. Aşağıdaki kontrol listesiyle her durumu ayrı ayrı inceleyebilirsin.
Değme kontrolü yalnızca bir kez çalışıyor
- Belirti: Oyun başladıktan sonra kedi elmaya değse de puan değişmiyor.
- Olası neden: Değme kontrolünü içeren
eğer isebloğu,sürekli tekrarlabloğunun dışında kalmış olabilir. Bu durumda kontrol, kod akışı o noktaya ulaştığında yapılır; kedi daha sonra elmaya değdiğinde yeniden çalışmaz. - Düzeltme: Değme kontrolünü ve ona bağlı puan artırma işlemini
sürekli tekrarlabloğunun içine yerleştir. Böylece oyun sürerken temas tekrar kontrol edilir.
Tek temasta puan hızla artıyor
- Belirti: Kedi elmaya bir kez dokunduğunda puan birden fazla artıyor.
- Olası neden: Kedi ile elma temas hâlinde kalırken döngü koşulu tekrar tekrar doğru buluyor.
- Düzeltme: Puanı artırdıktan hemen sonra elmayı kediden uzak, temas etmeyeceği bir konuma taşı. Yeni konum da kedinin üzerindeyse tekrar puan kazanılabileceği için bunu kontrol et. Bir bekleme bloğu da tekrarları yavaşlatabilir, ancak temas bekleme sonunda sürüyorsa tek başına her temas için tek puan sağlamaz.
Duvara değmeden renk kontrolü çalışıyor
- Belirti: Kedi duvar dışında bir yere geldiğinde de duvara değmiş gibi davranıyor.
- Olası neden: Duvar için seçtiğin renk, dekorun başka bir bölümünde de kullanılmış olabilir.
- Düzeltme: Duvara dekorda kullanmadığın bir renk ver. Ardından
rengine değiyor mu?bloğundaki renk seçiciyi kullanarak duvarın üzerinden doğru tonu seç ve kontrolü yeniden dene.
Oyununu kısa bir senaryoyla test et
- Yeşil bayrağa tıklayıp oyunu başlat. Kedinin ve elmanın başlangıç konumlarını, puanın başlangıç değerini kontrol et.
- Kediyi elmaya doğru hareket ettir. Elmaya değmeden puanın değişmediğinden emin ol.
- Elmaya bir kez dokun. Puanın bir arttığını ve elmanın kediden uzak bir konuma taşındığını kontrol et.
- Kediyi duvar rengine götür ve beklediğin duvar tepkisinin oluşup oluşmadığına bak. Ardından dekorun diğer bölümlerinde aynı tepkinin yanlışlıkla oluşmadığını dene.
Sık Sorulan Sorular
Scratch’te “değiyor mu?” bloğu neden sürekli tekrarla döngüsünün içinde kullanılmalıdır?
Oyun boyunca teması izlemek için değiyor mu? kontrolünün düzenli olarak yeniden çalışması gerekir. Kontrolü sürekli tekrarla içine yerleştirdiğinde, kuklalar oyun başladıktan sonra birbirine değdiğinde de bu durum algılanabilir.
Scratch’te karakter yerine renge değme kontrolü ne zaman tercih edilir?
Sahnedeki duvar veya zemin gibi bir alanı rengine göre tanımak istediğinde renk kontrolünü tercih edebilirsin. Aynı renk dekorun başka yerlerinde de bulunuyorsa o alanların da algılanabileceğini hesaba kat.
Çarpışma olduğunda puan neden art arda birçok kez artar?
Kuklalar temas hâlinde kalırken döngü değme koşulunu tekrar tekrar doğru bulduğu için puan birden fazla artabilir. Puanı artırdıktan sonra elmayı temas etmeyen bir konuma taşımak bunu önlemeye yardımcı olur.
Elma, kediye değdikten sonra neden yeni bir konuma taşınmalıdır?
Elmayı kediden uzak bir konuma taşımak, aynı temasın yeniden sayılmasını önlemeye ve oyunda yeni bir toplama fırsatı oluşturmaya yardımcı olur. Yeni konumun kedinin üzerinde kalmadığını kontrol etmelisin.
Kontrolleri tamamladıktan sonra oyunu birkaç farklı hareketle yeniden dene ve beklemediğin bir davranış görürsen ilgili blokları bu listeyle karşılaştır.