Bir cümlelik özet
Bu derste Scratch'te Kontrol bloklarındaki "eğer" yapısını ve Algılama bloklarını kullanarak, ekranda olup bitene göre karar veren kuklalar yapmayı öğreniyorum.
Neden önemli?
Bir önceki derste kuklaya "yeşil bayrağa tıklandığında şunu yap" demeyi öğrendik. Ama gerçek oyunlar bundan daha akıllıdır. Bir topun kenara çarpınca geri sekmesini, bir karakterin engele değince durmasını isteriz.
Bunun için programın karar vermesi gerekir. Karar, "eğer şu doğruysa şunu yap" biçiminde bir cümledir. Scratch'te bu cümleyi Kontrol kategorisindeki turuncu bloklarla kurarız.
Peki program "şu doğru mu?" sorusunun cevabını nereden bilir? İşte burada Algılama kategorisindeki açık mavi bloklar devreye girer. Onlar kuklanın gözü ve kulağı gibidir: bir şeye değiyor muyuz, fareye tıklandı mı, bir tuşa basıldı mı diye bakarlar.
Koşul ve algılamayı birlikte kullanınca kuklalar çevrelerine tepki vermeye başlar. Oyun yapmanın kalbi tam olarak budur.
Koşul nedir? "eğer ... ise" bloğu
Koşul, yalnızca belirli bir durum doğru olduğunda çalışan bir adımdır. Türkçesi basit: "eğer şu olursa, şunu yap."
Scratch'te bunu Kontrol kategorisindeki "eğer ... ise" bloğuyla yaparız. Bu blok C harfi gibi açılır; içine koyduğun bloklar yalnızca koşul doğruysa çalışır.
Bloğun altıgen boşluğuna bir Algılama bloğu yerleştiririz. Altıgen boşluk her zaman "evet" ya da "hayır" (doğru/yanlış) cevabı bekler.
Örnek 1: Kenara değince renk değiştir
Bir balık ekranda yüzsün. Kenara her değdiğinde rengini değiştirsin.
yeşil bayrağa tıklandığında
sürekli tekrarla
10 adım git
eğer <kenara değiyor mu?> ise
rengi 25 değiştir
kenara gelince sek
Burada kenara değiyor mu? bir Algılama bloğudur ve altıgen şeklindedir. rengi 25 değiştir ise Görünüm bloğudur. Balık kenara değmediği sürece "eğer" içindeki adımlar hiç çalışmaz.
Örnek 2: Tuşa basınca zıpla
Bir kediyi boşluk tuşuyla zıplatalım.
yeşil bayrağa tıklandığında
sürekli tekrarla
eğer <boşluk tuşu basılı mı?> ise
y konumunu 50 değiştir
0.3 saniye bekle
y konumunu -50 değiştir
boşluk tuşu basılı mı? yine bir Algılama bloğudur. y konumunu değiştir blokları Hareket kategorisindedir ve kuklayı yukarı-aşağı taşır.
İki yol: "eğer ... ise ... değilse" bloğu
Bazen sadece "koşul doğruysa şunu yap" yetmez. "Doğruysa şunu, değilse başka bir şeyi yap" demek isteriz. Bunun için "eğer ... ise ... değilse" bloğunu kullanırız. Bu bloğun iki ağzı vardır: üst bölüm koşul doğruyken, alt bölüm koşul yanlışken çalışır.
Örnek 1: Fareyle takip et ya da dur
yeşil bayrağa tıklandığında
sürekli tekrarla
eğer <fare tıklandı mı?> ise
fare imlecine doğru dön
5 adım git
değilse
"Beni tıkla!" de
Fareye basılıysa kukla imleci takip eder; basılı değilse ekranda "Beni tıkla!" yazar. fare tıklandı mı? ve fare imlecine doğru dön blokları farenin nerede olduğunu algılar.
Örnek 2: Renge değince kazandın, değilse devam
Bir labirentte hedef çizgisi yeşil olsun.
yeşil bayrağa tıklandığında
sürekli tekrarla
eğer <renge [yeşil] değiyor mu?> ise
"Kazandın!" de
dur [bu kuklada]
değilse
ok tuşlarıyla hareket et
renge [yeşil] değiyor mu? bloğu, kuklanın seçtiğin renge dokunup dokunmadığına bakar. Rengi bloğun üzerindeki küçük kareye tıklayıp ekrandan seçebilirsin. Değiyorsa oyun biter; değmiyorsa oyuncu hareket etmeye devam eder.
Algılama bloklarını tanıyalım
Algılama kategorisi (açık mavi) programın "duyu organlarıdır". En çok kullandıklarımız:
... değiyor mu?— Kukla başka bir kuklaya, fare imlecine veya kenara dokunuyor mu?renge ... değiyor mu?— Kukla belirli bir renge dokunuyor mu?fare tıklandı mı?— Fare düğmesine basılı mı?... tuşu basılı mı?— Seçtiğin tuş (boşluk, ok tuşları, harfler) basılı mı?
Bunların hepsi altıgen şeklindedir. Altıgen bloklar bir soru sorar ve cevabı "doğru" ya da "yanlış" olur. Bu yüzden tam olarak "eğer" bloğunun altıgen boşluğuna otururlar.
İpucu: Bir Algılama bloğuna tek başına tıklarsan Scratch sana o an "doğru" mu "yanlış" mı olduğunu küçük bir baloncukla gösterir. Bu, blokları denemek için çok pratiktir.
Mini uygulama
Bir "sıcak zemin" oyunu yap. Kedi ok tuşlarıyla hareket etsin. Zeminde kırmızı bir bölge çiz. Kedi kırmızıya değerse "Ah!" desin ve başlangıç noktasına geri dönsün.
Şu adımları dene:
- Olaylar'dan
yeşil bayrağa tıklandığındabloğunu al. - Altına
sürekli tekrarla(Kontrol) bloğunu koy. - İçine ok tuşları için dört tane
eğer <... tuşu basılı mı?> isebloğu ekle ve her birine bir yön hareketi ver. - Bir tane daha
eğer ... ise ... değilseekle:eğer <renge [kırmızı] değiyor mu?> iseiçine"Ah!" devex: 0 y: 0 konumuna git. - Yeşil bayrağa bas ve kediyi kırmızının üstüne sürerek dene.
İpucu: Önce sadece tek bir ok tuşuyla başla. Çalıştığını gördükten sonra diğerlerini ekle. Küçük parçalar hâlinde ilerlemek hatayı bulmayı kolaylaştırır.
Uygulama laboratuvarı: Koşullar ve Algılama
Koşullar ve Algılama 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 Koşul nedir? "eğer ... ise" bloğu ile Örnek 2: Tuşa basınca zıpla 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: basketbol atışlarını sayan ve seviye yükselten sahne. Dersin ana hedefi “Eğer/değilse ve algılama bloklarıyla çevreye göre karar veren kuklalar yap” 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.
- Planla: Başlangıç durumunu, beklenen sonucu ve kullanacağın kavramları yaz.
- En küçük sürümü kur: Yalnız temel davranışı çalıştır; süsleme ve ek özellikleri sonraya bırak.
- Üç test hazırla: Normal bir durum, sınırda bir durum ve hatalı ya da beklenmeyen bir durum seç.
- Sonucu kaydet: Beklenen ile gerçekleşeni yan yana yaz; fark varsa olası nedeni belirt.
- 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
- Yeşil bayrakla başlangıç durumu doğru kuruluyor mu?
- Olaylar yalnız gerektiğinde mi çalışıyor?
- Değişkenler anlaşılır adlarla mı kullanıldı?
- Klon veya döngü sayısı kontrol altında mı?
- Oyun yeniden başlatıldığında önceki durum temizleniyor mu?
“Koşullar ve Algılama” çalışmasını bitirdiğinde ürünü bir arkadaşına yalnız bölüm başlıklarıyla anlat. Arkadaşın basketbol atışlarını sayan ve seviye yükselten sahne senaryosundaki adımları ve karar nedenlerini takip edebiliyorsa anlatım yeterince açıktır. Anlaşılmayan noktayı daha fazla terim ekleyerek değil, Koşul nedir? "eğer ... ise" bloğu ve Örnek 2: Tuşa basınca zıpla ilişkisini daha küçük adımlara bölerek düzelt.
Sık yapılan hatalar
"eğer" bloğunu sürekli tekrarla içine koymamak
eğer bloğu yalnızca bir kez kontrol yapar. Kukla sürekli çevresine baksın istiyorsan, "eğer" bloğunu bir sürekli tekrarla (Kontrol) döngüsünün içine koymalısın. Aksi hâlde program koşulu bir kez kontrol eder ve unutur.
Altıgen boşluğu boş bırakmak
eğer ... ise bloğunun altıgen boşluğuna bir Algılama bloğu koymazsan koşul tanımsız kalır. Blok, cevabı "evet/hayır" olan bir soru bekler.
Yanlış rengi seçmek
renge ... değiyor mu? bloğunda rengi bloğun üzerindeki kareden ekranı damlalıkla seçerek almalısın. Gözünle benzer gördüğün bir rengi elle ayarlarsan, ekrandaki gerçek renkle birebir uymayabilir ve blok hiç "doğru" olmayabilir.
"değilse" bölümünü unutmak
"Eğer kapıya değiyorsa dur" dedik, peki değmiyorsa? Karakterin durması gereken tek durumu düşünüp diğer durumu boş bırakırsan oyun beklediğin gibi akmayabilir. Gerektiğinde değilse yolunu da doldur.
Güvenlik notu
Scratch tamamen ekran üzerinde çalışır, fiziksel bir tehlike yoktur. Yine de iki şeye dikkat et: ekran başında uzun süre kalınca 20 dakikada bir kalkıp gözlerini dinlendir. Ayrıca Scratch sitesinde proje paylaşırken ad, soyad, okul veya adres gibi kişisel bilgileri yazma; paylaşımlarını herkes görebilir. Emin değilsen bir yetişkine sor.
Ders özeti
- Koşul, yalnızca belirli bir durum doğru olduğunda çalışan adımdır; Scratch'te bunu Kontrol kategorisindeki "eğer ... ise" bloğuyla kurarız.
- "eğer ... ise ... değilse" bloğu iki yol sunar: koşul doğruysa bir şey, yanlışsa başka bir şey yapar.
- Algılama kategorisindeki altıgen bloklar (değiyor mu, renge değiyor mu, fare tıklandı mı, tuş basılı mı) programın soru sorup cevap almasını sağlar.
- Algılama bloklarını "eğer" bloğunun altıgen boşluğuna koyarak kuklayı çevresine tepki verir hâle getiririz.
- Sürekli kontrol için "eğer" bloğunu genellikle bir "sürekli tekrarla" döngüsünün içine yerleştiririz.
Kontrol soruları
- Scratch'te bir kuklanın karar vermesini sağlayan blok hangi kategoridedir?
- "eğer ... ise" bloğundaki altıgen boşluğa ne tür bir blok koyarız?
renge ... değiyor mu?bloğunda rengi doğru seçmenin yolu nedir?- "eğer ... ise" ile "eğer ... ise ... değilse" arasındaki fark nedir?
- Bir kuklanın kenara her değdiğinde tepki vermesini istiyoruz. "eğer" bloğunu hangi bloğun içine koymalıyız ki kontrol sürekli tekrarlansın?
Cevaplar
- Kontrol kategorisinde (turuncu bloklar). "eğer ... ise" ve "eğer ... ise ... değilse" burada bulunur.
- Bir Algılama bloğu, yani cevabı doğru/yanlış olan altıgen bir blok (örneğin
kenara değiyor mu?). - Bloğun üzerindeki küçük renk karesine tıklayıp damlalıkla ekrandan tam o rengi seçerek. Renk elle ayarlanırsa ekrandaki renge birebir uymayabilir.
- "eğer ... ise" yalnızca koşul doğruysa çalışır; koşul yanlışsa hiçbir şey yapmaz. "eğer ... ise ... değilse" ise koşul yanlış olduğunda da ayrı bir adım çalıştırır.
- Bir "sürekli tekrarla" (Kontrol) döngüsünün içine. Böylece program koşulu her karede yeniden kontrol eder.
Kaynak ve doğrulama notu
“Koşullar ve Algılama” dersi için doğrulama odağı Koşul nedir? "eğer ... ise" bloğu ile Örnek 2: Tuşa basınca zıpla 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
Döngüler