Berk Akademi
Birebir ders başvurusu Ücretsiz ön görüşme Ana Sayfa

Scratch Klonlarında Değişkenler Nasıl Ayrı Tutulur?

scratch-klonlarinda-degiskenler-nasil-ayri-tutulur
Bu yazıda neler var?
  1. Klon başına değer ile ortak değer arasındaki fark
  2. Kukla, klon ve “klon olarak başladığımda” bloğu nasıl ilişkilidir?
  3. Üç düşman klonunu farklı kimlik ve canla oluşturma sırası
  4. Seçilen klonun canını azaltma ve sonucu kontrol etme
  5. Ortak Can değişkeni kullanılırsa ne değişir?
  6. Sık Sorulan Sorular

Scratch klonlarında değişkenler nasıl ayrı tutulur sorusunun temel cevabı, her verinin kapsamını doğru seçmektir. Kimlik ve can gibi yalnızca tek düşmana ait bilgiler için değişken oluştururken Yalnızca bu kukla için seçeneğini, bütün oyunun paylaşacağı skor gibi değerler için Tüm kuklalar için seçeneğini kullanırsın.

Bir kukla, sahnedeki özgün oyun nesnesidir. Klon ise bu kukladan proje çalışırken üretilen ayrı bir oyun nesnesidir. Bu ayrım doğru kurulmadığında bir düşmana verilen hasar diğerlerini de etkileyebilir veya bütün klonlar aynı kimliği okuyabilir.

Klon başına değer ile ortak değer arasındaki fark

Değişken oluştururken seçtiğin kapsam, değerin kim tarafından paylaşılacağını belirler. Yalnızca bu kukla için seçilen değişkenin özgün kuklada ve onun klonlarında ayrı kopyaları bulunur. Bir klonun kendi kopyasında yaptığı değişiklik, diğer klonların aynı adlı değişkenini değiştirmez. Klon oluşturulduğu anda kaynak kukladaki değer, klonun başlangıç değeri olur.

Tüm kuklalar için seçilen değişkende ise proje genelinde ortak bir değer bulunur. Farklı kuklalar ve klonlar bu değeri okuyabilir, değiştirebilir ve aynı güncel sonucu görür. Bu yüzden genel skor, bölüm puanı veya toplam toplanan nesne sayısı gibi değerlerde bu seçim kullanılabilir.

Değer türü değişken seçimi beklenen davranış
Kimlik Yalnızca bu kukla için Klon oluşturulmadan önce verilen kimlik, o klonun kendi değerine dönüşür. Bir klonun kimliği diğerlerini etkilemez.
Can Yalnızca bu kukla için Hasar alan klonun canı azalır. Diğer düşman klonlarının canı aynı kalır.
Ortak skor Tüm kuklalar için Kuklalar ve klonlar aynı skor değerini okur ve değiştirir.

Buradaki kritik nokta, ortak bir sayaçtan kimlik okumaya çalışmamaktır. Kimlik değişkenini Tüm kuklalar için oluşturursan her klonun ayrı kimliği oluşmaz. Klon başladıktan sonra ortak değişkenin değeri değişirse klonlar kendi eski kimliklerini değil, ortak değişkenin o andaki tek değerini okuyabilir. Kimlik ve can bilgisi bu nedenle klona özel değişkenlerde tutulmalıdır.

Kukla, klon ve “klon olarak başladığımda” bloğu nasıl ilişkilidir?

Kukla, klon ve “klon olarak başladığımda” bloğu nasıl ilişkilidir?

Kaynak kuklayı bir kalıp gibi düşünebilirsin. Klon oluşturulduğunda bu kuklanın kostüm, ses, kod ve değişken özelliklerini başlangıç noktası olarak kullanır; fakat sahnede ayrı bir oyun nesnesi gibi davranır. Scratch'te klonlarla ilgili kodları ayırmak için klon olarak başladığımda olay bloğu kullanılır.

Bu blok, yeni klon kendi yaşamına başladığında çalışır. Aynı blokta yazan komutlar her klon için ayrı bağlamda yürütülür. Böylece klon görünür olabilir, kendi konumuna gidebilir veya kendi başlangıç değerlerini kullanabilir. Özgün kukla ise klon olarak başladığımda akışını kendisi için çalıştırmaz; bu olay bloğu yalnızca klonların başlangıç komutlarını tanımlar.

Yeşil bayrak tıklanınca
  gizlen
  [kendim v] klonunu oluştur

Klon olarak başladığımda
  x: (100) y: (0) konumuna git
  görün
  [Ben bir klonum] de (2) saniye

Beklenen sonuç şudur: Özgün kukla gizlenir, oluşturulan klon sahnede x: 100 ve y: 0 konumunda görünür ve konuşma balonunu gösterir. Aynı başlangıç akışıyla oluşturulan her yeni klon, bu komutları kendi bağlamında yürütür; bir klonun konumu veya klona özel değişkeni diğer klonun kopyasına dönüşmez.

Üç düşman klonunu farklı kimlik ve canla oluşturma sırası

Üç düşman klonunu farklı kimlik ve canla oluşturma sırası

Üç düşmanı aynı kukladan üretmek için önce değişkenlerin kapsamını doğru seç. Kimlik ve Can değişkenlerini yalnızca bu kukla, Sıradaki Kimlik değişkenini ise tüm kuklalar seçeneğiyle oluştur. Böylece ilk iki değişken her klonda ayrı değer tutar, sayaç ise yeni klona verilecek kimliği belirlemek için ortak kalır.

Yerel değişkenlerin değeri, klon oluşturulduğu anda klona aktarılır. Bu nedenle her üretimde önce Sıradaki Kimlik değerini Kimlik değişkenine aktarmalı, ardından o klonun Can değerini ayarlamalı ve en son klonu oluşturmalısın.

YEŞİL BAYRAK TIKLANDI
gizle
[Sıradaki Kimlik] değerini (1) yap

[Kimlik] değerini (Sıradaki Kimlik) yap
[Can] değerini (3) yap
[kendimin klonunu oluştur]
[Sıradaki Kimlik] değerini (1) artır

[Kimlik] değerini (Sıradaki Kimlik) yap
[Can] değerini (5) yap
[kendimin klonunu oluştur]
[Sıradaki Kimlik] değerini (1) artır

[Kimlik] değerini (Sıradaki Kimlik) yap
[Can] değerini (4) yap
[kendimin klonunu oluştur]
[Sıradaki Kimlik] değerini (1) artır


KLON OLARAK BAŞLADIĞIMDA
göster
eğer <(Kimlik) = (1)> ise
    x: (-160) y: (80) konumuna git
değilse eğer <(Kimlik) = (2)> ise
    x: (0) y: (80) konumuna git
değilse
    x: (160) y: (80) konumuna git
end

İlk klon oluşturulurken yerel değerler Kimlik 1 ve Can 3 olarak kopyalanır. Sayaç bir artırıldıktan sonra ikinci klon Kimlik 2 ve Can 5, üçüncü klon ise Kimlik 3 ve Can 4 değerleriyle oluşturulur. Önemli: Klon başladıktan sonra Kimlik'i ortak sayaçtan okumaya çalışma. Kimlik değeri, klon oluşturulmadan önce yerel değişkene aktarılmış olmalıdır.

Seçilen klonun canını azaltma ve sonucu kontrol etme

Kimlik değerini kontrol eden klon olarak başladığımda akışı, üç düşmanı farklı konumlara yerleştirir. Bu blok, klon oluşturulduğu anda çalışır.

Bu kukla tıklandığında akışını aynı kuklaya ekleyerek yalnızca tıklanan klonun yerel Can değerini değiştirebilirsin. Scratch'in klon örneklerinde de tıklanan klon üzerinde işlem yapılıp ardından bu klonu sil bloğu kullanılır.

  1. Can değerini 1 azalt.
  2. Can = 0 ise bu klonu sil bloğunu çalıştır.
  3. Can sıfıra ulaşmadıysa ekranda Kimlik ve kalan Can değerini göster.

Kontrol için başlangıç değerleri sırasıyla 1/3, 2/5 ve 3/4 olmalıdır. 2 numaralı klona bir kez tıkladığında yalnızca onun Can değeri 5'ten 4'e iner. 1 numaralı klon 3, 3 numaralı klon ise 4 Can değerini korur. Bu tür uygulama adımlarını geliştirmek için Scratch ve programlama üzerine diğer anlatımlara göz atabilirsin.

Ortak Can değişkeni kullanılırsa ne değişir?

Üç düşmanın canını ayrı ayrı takip etmek için Can değişkenini “yalnızca bu kukla” seçeneğiyle oluşturmalısın. Böylece her klon kendi Can değerini taşır. Tıklanan klonun Can değeri azalırken diğer klonların değerleri korunur. “Tüm kuklalar” seçeneğinde ise tek bir ortak değer bulunur ve bütün klonlar aynı Can değerini okur.

Yerel Can değerleri sırasıyla 3, 5 ve 4 olan üç klondan ikinciye tıklanıp bir can azaltılırsa sonuçlar 3, 4 ve 4 olur. Can değişkeni “tüm kuklalar” seçeneğiyle oluşturulmuşsa klonların ayrı başlangıç değerleri bulunmaz. Herhangi bir klon Can değerini değiştirdiğinde diğer klonlar da değişen ortak değeri görür.

Sayaç ile Kimlik farklı görevler üstlenir. Tüm kuklalar için oluşturulan Sayaç artırılır, ardından klon oluşturulmadan önce Kimlik ve başlangıç Can değeri ayarlanır. Sonra kendimin klonunu oluştur bloğu çalışır. Klon, kendi davranışını klon olarak başladığımda bloğuyla başlatır. Bu sırada Kimlik yerine ortak Sayaç okunursa klonun kendisine ait numarası alınmaz. Sayaç o anda hangi değere geldiyse o ortak değer okunur ve başka klonların işlemlerinden etkilenebilir.

Sayaç: tüm kuklalar
Kimlik, Can: yalnızca bu kukla

yeşil bayrak tıklanınca
[Sayaç v] değerini (1) artır
[Kimlik v] değerini (Sayaç) yap
[Can v] değerini (3) yap
[kendimin klonunu oluştur]

klon olarak başladığımda
göster

bu kukla tıklanınca
[Can v] değerini (-1) değiştir

Bu örnekte klon Kimlik 1 ve Can 3 ile başlar. Klona tıklandığında yalnızca onun Can değeri 2 olur. Aynı sıra diğer klonlar için 2 ve 5, 3 ve 4 değerleriyle tekrarlanır.

  • Kapsam: Kimlik ve Can “yalnızca bu kukla”, Sayaç “tüm kuklalar” olarak mı oluşturuldu?
  • Sıra: Sayaç artırıldıktan sonra Kimlik ve Can, klon oluşturulmadan önce mi ayarlandı?
  • Başlangıç: “Klon olarak başladığımda” içinde ortak Sayaç yerine yerel Kimlik mi okunuyor?
  • Tıklama: Can değerini azaltan blok, tıklanan klonun kodunda mı çalışıyor?
  • Kontrol: Başlangıç değerleri Kimlik 1, Can 3; Kimlik 2, Can 5; Kimlik 3, Can 4 olarak görünüyor mu?

Sık Sorulan Sorular

Scratch'te bir değişkeni klonlara özel yapmak için hangi seçenek seçilir?

Değişken oluştururken “yalnızca bu kukla” seçeneği seçilir. Bu seçenek, aynı kuklanın klonlarının değişken değerlerini birbirinden ayırır.

Kimlik ve can değerleri neden klon oluşturulmadan önce ayarlanır?

Klonun kendisine ait başlangıç bilgilerini alması için Kimlik ve Can değerleri oluşturma bloğundan önce hazırlanır. Böylece her klon kendi değerleriyle başlayabilir.

Bir klonun canı azalırken diğer klonların canı neden değişmez?

Can değişkeni “yalnızca bu kukla” olarak oluşturulduğunda her klonun ayrı Can değeri bulunur. Bir klondaki değişiklik diğer klonların ayrı değerlerini etkilemez.

Kimliği ortak sayaçtan klon başladıktan sonra okumak neden sorun çıkarabilir?

Ortak Sayaç bütün kuklalar tarafından paylaşılır. Klon daha sonra Sayaç değerini okuduğunda bu değer onun kendi kimliği değil, sayaçta o anda bulunan ortak sayı olabilir.

Değişken kapsamını ve atama sırasını doğru kurduğunda, her klon kendi kimliğini ve can değerini bağımsız biçimde takip edebilir.

Bu içerik aradığın cevabı verdi mi?
Yanıtın, hangi yazıları geliştirmemiz gerektiğini anlamamıza yardımcı olur.
Bu içeriğin üretilmesinde yapay zeka araçlarından destek alınmıştır.

Bu konudan sonra ne okuyabilirsin?

Tüm yazılar

İlgili Eğitimler

Berk Keskin, yazılım geliştirici ve eğitmen
Yazar

Berk Keskin Kimdir?

Yazılıma 12 yaşında başladı; İzmir Ekonomi Üniversitesi'ni bölüm birincisi ve yüksek şeref öğrencisi olarak tamamladı. Bugün yalnızca eğitim vermekle kalmıyor, sektörde aktif olarak yazılım projeleri geliştiriyor ve gerçek dünya deneyimini birebir derslerine taşıyor. Ezberden uzak, mühendislik zihniyetini merkeze alan sürdürülebilir öğrenme sistemleri tasarlayarak sorgulayan, üreten ve problem çözebilen yeni nesil yazılımcılar yetiştiriyor.

Sektörel Deneyim & Projeler

  • Ticarify Entegrasyon Yazılım logosu CEO Ticarify Entegrasyon YazılımPazaryerleri ve e-ticaret sitelerine otomatik e-fatura kesimi, sipariş ve kargo takibi hizmetleri sunan e-Dönüşüm platformunun API mimarisini ve yazılım ekibini yönetmektedir.
  • Benim Düğünüm logosu CEO Benim DüğünümDijital etkinlik ve anı paylaşım platformu.
  • Siberdizayn logosu Yazılım Ekibi Lideri SiberdizaynYüksek anlık oyuncu trafiğine sahip oyun kontrol panelleri ve sunucu altyapıları geliştiren yazılım ekibine liderlik etmektedir.
  • MEDYOGRAFYA 360° Dijital Çözümler logosu Dijital Strateji Lideri MEDYOGRAFYA 360° Dijital ÇözümlerŞirketlerin dijital çözümlerde uzun vadede nasıl ilerlemesi gerektiği ve dijital dönüşüm süreçlerinin yönetilmesine destek olmaktadır.
  • İzmir Ekonomi Üniversitesi logosu Danışma Kurulu Üyesi İzmir Ekonomi ÜniversitesiMezun olduğu üniversitesinde, Bilgisayar Programcılığı bölümünün akademik müfredatını güncel sektör ihtiyaçlarına göre şekillendirmek adına Danışma Kurulu'nda görev almaktadır.
WhatsApp Hemen Ara