Cisim Değişkenleri Instance Variables
Cisim değişkenleri her canavarın kendi sağlık değerini saklamasını sağlar. Bir değişken basitçe değişebilen bir değer demektir ve bunlar her bir varlık (görünüm) yani cisim için ayrı olarak hafızada muhafaza edilir bu yüzden de cisim değişkeni olarak adlandırılmaktadır.
Her canavar için bir sağlık cisim değişkeni ekleyelim. Proje barında veya obje barındaki canavarları tıklayalım. Alternatif olarak, çalışma sayfasına dönüp canavar objesini seçebilir. Böylece bu özellikler barındaki canavarların özelliklerini gösterecektir. Değişkenleri değiştirmeden Edit Variables dan Ekle/Değiştiri Add/Edit tıklayın.
Cisim değişkenleri penceresi görünür. Bu daha önce gördüğümüz davranışlar penceresine benzemektedir fakat burası objeler için Cisim değişkenlerini eklemeye ve değiştirmeye izin vermektedir. Yeni bir tane eklemek için yeşil olan ekle Add düğmesine tıklayın.
Açılan pencerede, isim olarak saglik health verelim, çeşiti Type sayı Number olarak bırakalım ve ilk değer Initial value olarak 5 ‘i görelim ( gösterildiği gibi). Böylecek her canavar 5 sağlıkla başlayacaktır. Canavarlar vurulduklarında sağlıklarından 1 çıkaracağız ve daha sonra bu sıfıra ulaştığında ise bu objeleri yok edeceğiz.
Bu ayarları yapınca ok tuşuna basın. Bunu tamamladığınızda Cisim değişkenleri “Instance variables” penceresinde ve canavarın özelliklerinde sağlık “health” ın bulunduğunu fark edeceksinizdir. ( Başlangıç değerini “Initial Value” özellikler barından hızlı bir şekilde değiştirebilirsiniz ancak yeni bir tane eklemek, olan değişkeni kaldırmak için Add/Edit linkine tıklamanız gerekir.
Olayları Değiştirmek
Olay sekmesine geri dönelim. Şimdiye kadar, biz canavarları kurşunla vurduğumuz anda onlar ölüyorlardı. Bunu sağlıklarından bir değeri çıkacak şekilde değiştirelim.
Şu yazan olayı bulun: Bullet – on collision with Monster. “destroy monster” canavarı öldür hareketinin olduğunu göreceksiniz. Bunu sağlıktan bir çıkarla değiştireceğiz. Destroy monster faaliyetine sağ tıklayıp Replacei tıklayın. ( Replace: Yerini al, yer değiştir).
Yeni bir hareket eklerkenki pencere açılacaktır, ancak bu kez ekleyeceğimiz hareket tıkladığımızın yerini alacaktır. Şunları seçin: Monster --> Subtract from ( Instance Variable kategorisinden seçin) Instance Variable saglik veya “Health”, ve değer "value" olarak 1 girin. Done’ı tıklayın. Faaliyet aşağıdaki gibi görünücektir:
Böylece biz bir canavarı vurduğumuzda sağlığından 1 kaybedecektir ve kurşun patlayacaktır fakat henüz sağlıkları sıfıra ulaştığında canavarların ölmesi için bir olay eklemedik. Başka bir olay ekleyelim:
Koşul: Monster -> Compare instance variable -> Health, Less or equal, Canavar Cisim değişkenlerini karşılaştır -> Sağlık 0 ‘dan küçük veya eşitse
Hareket: Monster -> Spawn another object -> Explosion, layer 1
Canavar -> Başka bir nesne fırlat -> Patlama, katman 1’de
Hareket: Monster -> Destroy
Canavar -> Yok Et
Neden “0 veya 0 dan küçük” dedikte sıfıra eşit olduğunda demedik? Varsayalım ki daha güçlü bir silah ekledik ve sağlıktan 2 çıkar dedik. Böylece bir canavarı vurduğunuzda, sağlık 5, 3, 1, -1, -3 … olarak azalacaktır ve hiçbir noktada sağlığın sıfıra eşit olmadığını fark edeceksiniz ki bu Cisimda canavar asla ölmez! Sonuç olarak, “less or equal” eşit ve eşitten küçük ifadesini kullanmak sağlık gibi değişkenlerin doğru çalışması için iyi bir uygulamadır.
Oyunu çalıştıralım. Canavarları öldürmek için şimdi 5 kere vurmanız gerekmektedir!
Skor Tutmak
Haydi skor oluşturalım böylece oyuncu ne kadar iyi yaptığını görsün. Bunun için başka bir değişkene ihtiyacımız var. “haydi skoru oyuncunun cisim değişkenlerinden birine koyalım” diye düşünmüş olabilirsiniz. Bu kötü bir fikir değil, fakat değerin objesinin içinde kaydedildiğini unutmayın. Eğer bir varlık, yani bir cisim yoksa, değişkende olmayacaktır! Yani, eğer oyuncu yok edilirse, skorda kendisiyle beraber yok olacağı için ne olduğunu söyleyemeyeceğiz.
Bu olmasın diye, biz Global değişkenleri Global Variablesı kullanıyoruz. Cisim değişkenleri gibi, bir global değişkende yazı veya sayı olarak hafızada tutulabilir. Her değişken tek bir sayı veya bir parça yazı olarak kaydedilir. Global değişkenler tüm oyun boyunca tüm çalışma sayfalarında geçerlidir – başka leveller, düzeyler, ekleyeceksek bu işe uygundurlar.
Olay sekmesinin altında bir boşluğa sağ tıklayın ve Global bir değişken ekleyini Add global variable 'a tıklayın.
İsim olarak Score yazın. Diğer alanlar başlangıç atamaları olarak bize uygundur, zira 0 dan başlayan bir sayı olacaktır.
Şimdi, global değişken olay sekmesinde bir çizgi olarak görülecektir. Olay sekmesinde durmaktadır ancak herhangi bir olay sekmesinden ulaşılabilinir.
Not: Bir de yerel local değişkenler vardır ve bunlar küçük çaplı olaylar için ulaşılmaktadır fakat şimdilik bunlarla ilgilenmemize gerek yok.
Haydi, oyuncuya bir canavar öldürdüğünde bir puan almasını sağlayalım. Bizim tanımladığımız “Monster: health less or equal 0" event (canavar öldüğünde), ‘ye gelip, Add action hareket ekleyi tıklayalım ve şunları seçelim : System -> Add to (under Global & local variables) -> Score, değer 1.
Şimdi olay şu şekilde görülmelidir:
Şimdi oyuncu her bir canavar öldürdüğünde skoru 1 artacaktır fakat biz skoru göremiyoruz! Haydi bu skoru “yazı objesi” olarak gösterelim.