Ana Sayfa · Akademi · Robotik ve Kodlama · Scratch ile Programlama · Mesaj Yayınlama ve Sahne Yönetimi

Mesaj Yayınlama ve Sahne Yönetimi

Mesaj yayınlayarak kuklalar arası haberleş ve dekor/bölüm geçişlerini yönet.

DERS PUSULASI

Bu sayfayı ne için kullanacaksın?

Ana fikir

Scratch'te kuklalar birbirine doğrudan dokunmadan haberleşebilir; bir kukla "mesaj yayınlar", diğerleri "mesajı aldığında" harekete geçer ve sahnenin dekoru değişerek oyunun bölümleri arasında geçiş yaparız.

Üretilecek kanıt

Kendi "iki ekranlı" mini oyununu kur. Amaç: yeşil bayrakla açılan bir başlangıç ekranından, bir düğmeye tıklayınca oyun ekranına geçmek. Sahneye iki dekor ekle: giris ve oyun . Yeşil bayrakta sahne dekorunu giris yapsın. Bir kukla ekle ve üstüne "Başla" yaz. Bu kukla tıklandığında oyunu-baslat mesajını yayınlasın. Sahne bu mesajı aldığında dekoru oyun…

Kontrol tuzağı

Mesaj adlarının uyuşmaması Yayınlanan mesaj ile dinlenen mesaj tam olarak aynı olmalıdır. başla ile Başla Scratch için farklı olabilir; açılır menüden seçmek yazım hatasını önler. Elle yazma, menüden seç. Dinleyen kimse olmaması Mesaj yayınladın ama hiçbir kuklada "… aldığında" bloğu yok. Scratch hata vermez, sadece…

Sonraki bağlantı

Klonlar: Tek bir kukladan onlarca kopya üreterek yağmur damlası, mermi veya düşman sürüsü gibi çok sayıda nesneyi tek bir kodla yönetmek.

Modül kaynakları: Python Tutorial · Arduino Learn

SeviyeBaşlangıç
Yaş10–16
Süre25–35 dk
Ön koşulDeğişkenler ve Listeler
İçerikStandart ders · 1.363 kelime
Son güncelleme

Bir cümlelik özet

Scratch'te kuklalar birbirine doğrudan dokunmadan haberleşebilir; bir kukla "mesaj yayınlar", diğerleri "mesajı aldığında" harekete geçer ve sahnenin dekoru değişerek oyunun bölümleri arasında geçiş yaparız.

Neden önemli?

Bir oyun düşün: yeşil bayrağa tıklıyorsun, bir "Başla" ekranı çıkıyor, oyunu bitirdiğinde "Kazandın" ekranı beliriyor. Bu geçişleri kim yönetir? Şimdiye kadar her kuklaya kendi işini ayrı ayrı yazdık. Fakat gerçek bir oyunda kuklaların aynı anda ve birlikte hareket etmesi gerekir.

İşte mesaj yayınlama tam burada devreye girer. Bir kuklanın "hazırım" demesini ve diğerlerinin bunu duyup harekete geçmesini sağlar. Buna programlamada olay tabanlı iletişim denir: bir olay olur, ona abone olan herkes tepki verir.

Sahne yönetimi de bununla el ele gider. Bir oyunun menüsü, oynanış ekranı ve bitiş ekranı aslında farklı dekorlardır (backdrop). Dekoru değiştirerek tek bir projede birçok "ekran" oluşturabilirsin.

Kısa tanım: Mesaj (broadcast), bir kuklanın gönderdiği ve dinleyen tüm kuklaların duyduğu görünmez bir sinyaldir.

Mesajla haberleşme: "yayınla" ve "aldığında"

Scratch'te mesaj blokları Olaylar (Events) kategorisinde bulunur. İki temel blok vardır.

"… yayınla" bloğu

Bu blok bir sinyal gönderir. Sinyalin bir adı vardır; örneğin başla, kazandın veya düşman-değdi. Blok çalıştığı anda bu ismi tüm projeye duyurur.

yeşil bayrağa tıklandığında
"başla" yayınla

Yeni bir mesaj adı oluşturmak için blok üzerindeki açılır menüden "Yeni mesaj" seçersin ve ona anlamlı bir isim verirsin.

"… aldığında" bloğu

Bu blok bir dinleyicidir. Belirttiğin mesaj yayınlandığında altındaki kodu çalıştırır. Aynı mesajı birden fazla kukla dinleyebilir; hepsi aynı anda uyanır.

Örnek: Bir kedi kuklası oyunu başlatıyor, bir yıldız kuklası da bunu duyup görünür oluyor.

Kedi kuklasında:

yeşil bayrağa tıklandığında
"başla" yayınla

Yıldız kuklasında:

"başla" aldığında
göster
x: 100 y: 50 konumuna git

Gördüğün gibi iki kukla birbirine hiç dokunmadı; sadece aynı mesaj üzerinden anlaştılar. Bir tanesi seslendi, diğeri duydu.

"yayınla ve bekle" farkı

Normal "yayınla" bloğu mesajı gönderir ve beklemeden devam eder. "… yayınla ve bekle" bloğu ise mesajı dinleyen tüm kodlar bitene kadar bekler. Sıralı bir anlatım (önce şu bitsin, sonra bu başlasın) istediğinde "ve bekle" işine yarar.

Sahne ve dekor yönetimi

Sahne (Stage), oyunun arka planıdır. Sahneye eklediğin her arka plan görüntüsüne dekor (backdrop) denir. Dekor blokları Görünüm (Looks) kategorisindedir.

Dekoru değiştirmek

Sahnenin kendi kod alanı da vardır. Sahne bir mesaj aldığında dekorunu değiştirebilir:

"kazandın" aldığında
dekoru "kazandin-ekrani" yap

Dekor değişince tetiklenen olay

Görünüm kategorisinde çok kullanışlı bir Olay bloğu daha var: dekor [menü] olduğunda. Bir dekor sahneye geldiğinde otomatik çalışır. Böylece "oyun-ekrani" belirdiğinde düşmanların hareket etmesini, "kazandin-ekrani" belirdiğinde alkış sesinin çalmasını sağlayabilirsin.

Örnek: Bitiş ekranı gelince kutlama.

Sahnede:

dekor "kazandin-ekrani" olduğunda
"Alkis" sesini çal

Örnek: Üç ekranlı bir oyun kurmak

Şimdi öğrendiklerimizi tek bir akışta birleştirelim. Üç dekorumuz olsun: menu-ekrani, oyun-ekrani, kazandin-ekrani.

1. Menüden oyuna geçiş

Sahnede oyun menü dekorunda başlar. Ekranda bir "Başlat" düğmesi kuklası duruyor. Ona tıklanınca oyun başlasın.

Sahnede:

yeşil bayrağa tıklandığında
dekoru "menu-ekrani" yap

Başlat düğmesi kuklasında:

bu kukla tıklandığında
"başla" yayınla

Sahnede:

"başla" aldığında
dekoru "oyun-ekrani" yap

2. Oyun sırasında puan toplama

Oyun ekranında bir oyuncu kuklası yıldızları topluyor. puan adında bir değişkenimiz var (bir önceki dersten hatırlıyorsun). Puan 10 olunca oyunu kazanıyoruz.

Oyuncu kuklasında:

"başla" aldığında
sürekli tekrarla
  eğer <"yildiz" kukla dokunuyor> ise
    "puan" değişkenini 1 artır
  eğer <puan = 10> ise
    "kazandın" yayınla
    dur [bu betik]

3. Kazanma ekranına geçiş

"kazandın" mesajı yayınlanınca sahne bitiş dekoruna geçer ve oyuncu kuklası gizlenir.

Sahnede:

"kazandın" aldığında
dekoru "kazandin-ekrani" yap

Oyuncu kuklasında:

"kazandın" aldığında
gizle

Bu üç parça birlikte tam bir oyun döngüsü oluşturur: menü → oynanış → kazanma. Hepsini birbirine bağlayan şey görünmez mesajlardır.

Mini uygulama

Kendi "iki ekranlı" mini oyununu kur. Amaç: yeşil bayrakla açılan bir başlangıç ekranından, bir düğmeye tıklayınca oyun ekranına geçmek.

  1. Sahneye iki dekor ekle: giris ve oyun.
  2. Yeşil bayrakta sahne dekorunu giris yapsın.
  3. Bir kukla ekle ve üstüne "Başla" yaz.
  4. Bu kukla tıklandığında oyunu-baslat mesajını yayınlasın.
  5. Sahne bu mesajı aldığında dekoru oyun yapsın.
  6. Ekstra: Oyun ekranı gelince (dekor "oyun" olduğunda) bir karakter "Hazır mısın?" desin.

Çalıştığında düğmeye tıkla ve ekranın değiştiğini gör. Sonra kendine sor: Mesajın adını değiştirsem hem yayınlayan hem de dinleyen bloğu güncellemem gerekir mi?

Uygulama laboratuvarı: Mesaj Yayınlama ve Sahne Yönetimi

Mesaj Yayınlama ve Sahne Yönetimi konusunu kalıcı hâle getirmenin en iyi yolu, kavramı küçük ve ölçülebilir bir göreve dönüştürmektir. Bu çalışmada Mesajla haberleşme: "yayınla" ve "aldığında" ile "… aldığında" bloğu arasındaki ilişkiyi kullanarak çalışan bir Scratch sahnesi, blok düzeni ve test listesi hazırlayacaksın. Amaç yalnız sonucun çalışması değil; hangi kararı neden verdiğini, neyi test ettiğini ve hangi durumda tasarımı değiştireceğini açıklayabilmektir.

Görev senaryosu

Şu senaryoyu ele al: bir karakterin puana göre farklı tepki verdiği kısa oyun. Dersin ana hedefi “Mesaj yayınlayarak kuklalar arası haberleş ve dekor/bölüm geçişlerini yönet” olduğuna göre önce problemi tek cümleyle tanımla. Ardından sistemin alacağı girdiyi, uygulayacağı işlemi ve üreteceği çıktıyı ayrı ayrı yaz. Bilmediğin bir ayrıntı varsa onu varsayım olarak işaretle; varsayımı gerçek bilgi gibi kullanma.

  1. Planla: Başlangıç durumunu, beklenen sonucu ve kullanacağın kavramları yaz.
  2. En küçük sürümü kur: Yalnız temel davranışı çalıştır; süsleme ve ek özellikleri sonraya bırak.
  3. Üç test hazırla: Normal bir durum, sınırda bir durum ve hatalı ya da beklenmeyen bir durum seç.
  4. Sonucu kaydet: Beklenen ile gerçekleşeni yan yana yaz; fark varsa olası nedeni belirt.
  5. Tek değişiklik yap: Aynı anda birçok şeyi değiştirmek yerine bir kararı düzeltip testi yeniden çalıştır.

Başarı ölçütleri

“Mesaj Yayınlama ve Sahne Yönetimi” çalışmasını bitirdiğinde ürünü bir arkadaşına yalnız bölüm başlıklarıyla anlat. Arkadaşın bir karakterin puana göre farklı tepki verdiği kısa oyun senaryosundaki adımları ve karar nedenlerini takip edebiliyorsa anlatım yeterince açıktır. Anlaşılmayan noktayı daha fazla terim ekleyerek değil, Mesajla haberleşme: "yayınla" ve "aldığında" ve "… aldığında" bloğu ilişkisini daha küçük adımlara bölerek düzelt.

Sık yapılan hatalar

Mesaj adlarının uyuşmaması

Yayınlanan mesaj ile dinlenen mesaj tam olarak aynı olmalıdır. başla ile Başla Scratch için farklı olabilir; açılır menüden seçmek yazım hatasını önler. Elle yazma, menüden seç.

Dinleyen kimse olmaması

Mesaj yayınladın ama hiçbir kuklada "… aldığında" bloğu yok. Scratch hata vermez, sadece hiçbir şey olmaz. Yayınlayan kadar dinleyeni de yazmayı unutma.

Dekor ile kuklaları karıştırmak

Dekor sahneye aittir, kostüm ise kuklaya. sonraki dekor sahnenin arka planını değiştirir; kuklanın görüntüsünü değiştirmek için sonraki kostüm kullanılır.

"yayınla" yerine "yayınla ve bekle" gereken durum

Bir işin bitmesini beklemeden devam edersen ekranlar üst üste binebilir. Sıra önemliyse "… yayınla ve bekle" kullan.

Güvenlik notu

Bu ders tamamen ekran başında yapılır; fiziksel bir risk yoktur. Yine de iki şeye dikkat et. Ekran süreni dengede tut: her 20–30 dakikada bir kısa ara verip gözlerini dinlendir. Projeni Scratch'te paylaşmadan önce bir yetişkinle konuş; yorumlarda kişisel bilgilerini (okul adı, adres, telefon) paylaşma. İnternette güvenlik, tıpkı koddaki güvenlik gibi, önceden düşünmekle başlar.

Ders özeti

Kontrol soruları

  1. "… yayınla" ve "… aldığında" blokları hangi kategoridedir ve her biri ne işe yarar?
  2. Bir mesajı en fazla kaç kukla dinleyebilir?
  3. "yayınla" ile "yayınla ve bekle" arasındaki fark nedir?
  4. Sahnenin arka planına ne ad verilir ve hangi blokla değiştirilir?
  5. Bir mesaj yayınladın ama hiçbir şey olmuyor. İlk kontrol edeceğin iki şey nedir?

Cevaplar

  1. Her ikisi de Olaylar (Events) kategorisindedir. "… yayınla" bir sinyal gönderir; "… aldığında" o sinyal geldiğinde altındaki kodu çalıştırır.
  2. Sınır yoktur; istediğin kadar kukla aynı mesajı dinleyebilir ve hepsi aynı anda çalışır.
  3. "yayınla" mesajı gönderip beklemeden devam eder; "yayınla ve bekle" mesajı dinleyen tüm kodlar bitene kadar bekler.
  4. Buna dekor (backdrop) denir; dekoru … yap veya sonraki dekor blokuyla değiştirilir.
  5. Önce yayınlanan mesaj adı ile dinlenen mesaj adının birebir aynı olup olmadığını, sonra o mesajı dinleyen bir "… aldığında" bloğu bulunup bulunmadığını kontrol et.

Kaynak ve doğrulama notu

“Mesaj Yayınlama ve Sahne Yönetimi” dersi için doğrulama odağı Mesajla haberleşme: "yayınla" ve "aldığında" ile "… aldığında" bloğu 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

Klonlar: Tek bir kukladan onlarca kopya üreterek yağmur damlası, mermi veya düşman sürüsü gibi çok sayıda nesneyi tek bir kodla yönetmek.

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.