Bir cümlelik özet
Klon, bir kuklanın çalışırken kopyalanan geçici bir eşidir; böylece tek bir kukladan onlarca mermi, yıldız veya düşman üretebiliriz.
Neden önemli?
Bir uzay oyunu düşün. Uzay gemin her tuşa bastığında bir mermi ateşliyor. Peki bu mermileri nasıl yaparsın? Her mermi için ayrı bir kukla mı çizersin? Ekranda aynı anda on mermi olabilir; yirmi tane de. Hepsini elle çizmek çok zaman alır ve yönetmesi zorlaşır.
İşte burada klon devreye girer. Klon sayesinde tek bir "mermi" kuklası çizersin, program çalışırken bu kuklanın kopyalarını üretirsin. Her kopya kendi başına hareket eder. Bu yöntem yıldız yağmuru, düşman sürüsü, kar taneleri ve daha birçok sahne için kullanılır.
Bu derste öğrendiğinde şunları yapabileceksin:
- Bir kuklanın klonunu oluşturmayı,
- Klon oluştuğunda ona ayrı bir davranış vermeyi,
- İşi biten klonu silmeyi.
Klon nedir?
Klon, bir kuklanın program çalışırken oluşturulan geçici bir kopyasıdır. Ana kukla ekranda durur; klonlar ondan çoğalır ve kendi görevlerini yapar.
Klonu şöyle düşün: Ana kukla bir kalıptır. Bu kalıptan istediğin kadar kurabiye (klon) çıkarırsın. Her kurabiye aynı şekle sahiptir ama tabakta ayrı ayrı durur.
Klonlarla çalışırken Kontrol (Control) kategorisindeki üç bloğu kullanırız:
... klonunu oluştur— Yeni bir klon üretir.klon oluşturulduğunda— Bir klon doğduğu anda çalışacak kod başlığıdır.bu klonu sil— İşi biten klonu ekrandan kaldırır.
Klon neden silinir?
Her klon ekranda yer ve bellek kaplar. Yüzlerce klon birikirse Scratch yavaşlar. Bu yüzden bir klon görevini bitirince (örneğin mermi ekranın üstüne ulaşınca) bu klonu sil ile temizlenir. Klonları silmek, oyunu hızlı ve düzenli tutar.
Klon nasıl oluşturulur?
Klon üretmek için önce ana kuklaya bir başlangıç veririz, sonra ... klonunu oluştur bloğunu çağırırız.
Örnek 1: Tek bir yıldız klonu
Bir yıldız kuklan olsun. Yeşil bayrağa tıklandığında rastgele bir yerde tek bir klon oluşturalım.
yeşil bayrağa tıklandığında
kendisinin klonunu oluştur
Bu kod bir kez çalışır ve tek bir klon üretir. Ana yıldız ile birlikte artık ekranda iki yıldız vardır: biri ana kukla, biri klon.
Örnek 2: Klon oluştuğunda ne yapacağını söylemek
Klon oluşturmak yetmez; klona bir görev vermeliyiz. Bunun için klon oluşturulduğunda başlığını kullanırız. Bu başlığın altına yazdığımız her şey, yeni doğan her klon için ayrı ayrı çalışır.
klon oluşturulduğunda
rastgele -200 ile 200 arasında x, rastgele -150 ile 150 arasında y noktasına git
göster
Artık her yeni klon rastgele bir noktaya gidip görünür oluyor. Ana kukla ile klonun işleri birbirinden ayrıdır: ana kukla yeşil bayrağa tıklandığında ile başlar, klon ise klon oluşturulduğunda ile.
Mermi örneği: Tuşa basınca klon üret ve yukarı gönder
Şimdi dersin ana örneğini yapalım. Amacımız şu: Boşluk tuşuna basınca bir mermi klonu üretilsin, mermi yukarı gitsin ve ekranın üstüne ulaşınca silinsin.
Adım 1: Ana kuklanın kodu
Mermi kuklasını çizeriz ve önce onu gizleriz. Ana kukla görünmez; yalnızca klonları görünür yapacağız. Boşluk tuşuna her basıldığında bir klon üretilir.
yeşil bayrağa tıklandığında
gizle
boşluk tuşuna basıldığında
kendisinin klonunu oluştur
Burada gizle bloğu Görünüm (Looks) kategorisinden, boşluk tuşuna basıldığında ise Olaylar (Events) kategorisindendir.
Adım 2: Klonun kodu
Her mermi klonu doğduğunda oyuncunun (uzay gemisinin) olduğu yerden başlamalı, görünmeli ve yukarı doğru hareket etmeli. En üste ulaşınca kendini silmeli.
klon oluşturulduğunda
Uzaygemisi'ne git
göster
üst kenara değene kadar tekrarla
y konumunu 10 değiştir
bu klonu sil
Bu kodu birlikte okuyalım:
Uzaygemisi'ne git— Klon, uzay gemisinin bulunduğu noktadan başlar (Hareket / Motion).göster— Klonu görünür yapar (Görünüm / Looks).üst kenara değene kadar tekrarla— Mermi üst kenara değene kadar döngü sürer (Kontrol / Control ve Algılama / Sensing).y konumunu 10 değiştir— Mermiyi her adımda 10 birim yukarı taşır.bu klonu sil— Mermi üstе ulaşınca klon silinir.
Artık boşluk tuşuna bastıkça yeni mermiler üretilir, her biri kendi başına yukarı süzülür ve üste varınca kaybolur. Tek bir kukladan bir mermi yağmuru oluşturduk.
Değişkenle mermi sayısını sınırlamak
İstersen bir değişken ekleyip aynı anda ekranda kaç mermi olacağını sayabilirsin. Örneğin mermi adında bir değişken oluşturup her klon üretiminde 1 artırır, her silinişte 1 azaltırsın. Bu ileride mermi sınırı koymak istediğinde işine yarar.
Uygulama laboratuvarı: Klonlar
Klonlar 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 Klon nedir? ile Klon nasıl oluşturulur? 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 “Klonlarla bir kuklayı çoğaltarak mermi, düşman veya yıldız gibi öğeler üret” 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?
“Klonlar” ç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, Klon nedir? ve Klon nasıl oluşturulur? ilişkisini daha küçük adımlara bölerek düzelt.
Sık yapılan hatalar
Ana kuklayı gizlemeyi unutmak
Mermi örneğinde ana kuklayı gizle ile saklamazsan, ekranda başlangıç noktasında sabit duran fazladan bir mermi görürsün. Ana kuklayı gizle, yalnızca klonları göster.
Klonu silmeyi unutmak
bu klonu sil bloğunu koymazsan mermiler ekranın üstünde birikir. Yüzlerce klon toplanınca proje yavaşlar. Her klonun bir "silinme" koşulu olmalı.
Yanlış başlık kullanmak
Klonun kodunu klon oluşturulduğunda yerine yeşil bayrağa tıklandığında altına yazmak sık görülen bir hatadır. Klonun davranışı mutlaka klon oluşturulduğunda başlığının altında olmalı.
Klon içinde göster demeyi atlamak
Ana kuklayı gizlediysen, klonlar da gizli doğar. Klonun kodunda göster demezsen mermiyi hiç göremezsin.
Güvenlik notu
Bu ders tamamen ekran üzerindedir; fiziksel bir risk yoktur. Yine de kod yazarken ekran karşısında uzun süre kalabildiğimizi unutma. Yaklaşık 20 dakikada bir kısa mola ver, gözlerini dinlendir ve ayağa kalk. Scratch projelerini çevrimiçi paylaşırken gerçek adını, okulunu veya adresini yazma; kullanıcı adın ve paylaştığın içerik herkese açık olabilir.
Ders özeti
- Klon, bir kuklanın çalışırken üretilen geçici kopyasıdır ve tek kukladan çok sayıda nesne yapmayı sağlar.
... klonunu oluşturyeni klon üretir;klon oluşturulduğundaklonun görevini başlatır.- İşi biten klon
bu klonu silile kaldırılır; böylece proje hızlı kalır. - Ana kuklayı çoğu zaman
gizleile saklar, yalnızca klonları görünür yaparız. - Mermi örneğinde tuşa basınca klon üretilir, yukarı gider ve üst kenarda silinir.
Kontrol soruları
- Klon nedir ve neden kullanırız?
- Bir klonun doğduğu anda çalışacak kodu hangi başlığın altına yazarız?
- Mermi örneğinde ana kuklayı neden
gizlebloğuyla saklarız? - Klonu silmezsek zamanla ne olur?
- Mermiyi yukarı taşımak için hangi bloğu ve hangi döngüyü kullandık?
Cevaplar
- Klon, bir kuklanın program çalışırken oluşturulan geçici kopyasıdır. Tek bir kukladan onlarca mermi, yıldız veya düşman üretmek için kullanırız.
klon oluşturulduğundabaşlığının altına yazarız. Bu başlık her yeni klon için ayrı ayrı çalışır.- Ana kukla yalnızca klon üretmek için vardır; kendisi görünürse başlangıç noktasında fazladan bir mermi olarak kalır. Bu yüzden gizleriz.
- Silinmeyen klonlar ekranda birikir, bellek ve yer kaplar; yüzlerce klon toplanınca Scratch yavaşlar.
üst kenara değene kadar tekrarladöngüsünü kullandık ve içindey konumunu 10 değiştirbloğuyla mermiyi her adımda yukarı taşıdık.
Kaynak ve doğrulama notu
“Klonlar” dersi için doğrulama odağı Klon nedir? ile Klon nasıl oluşturulur? 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
Basit Fizik: Hız, Yerçekimi ve Çarpışma