İOS Swift

Swift Type Metotlar & Statik Metotlar

Swift programlama dilinde metotları işlediğim yazılardan 2.siyle karşınızdayım. Bu yazıyı okumadan önce ilk yazım olan “Instance Metotlar & Lokal ve Dış Parametreler” i okumanızı tavsiye ederim.

Type Metotları tanımlarken metodun func keywordünden önce class keywordünü de koyuyoruz. Bir sınıf değil de structure veya enum için type metot tanımlarken ise func keywordünden önce static keywordünü kullanıyoruz.

Syntax:

Type metotları anlatacağımız örnek bir algoritmamız olacak.

Oyunlarda Seviyeleri Tutan ve Yöneten Algoritma

game level code

Oynadığımız oyun eğer seviye(level) lerden oluşuyorsa, bitirdiğimiz her seviye sonrasında yeni bir üst seviye oynanabilir hale gelir. Açamadığımız seviyeleri de oynayamayız. Aşağıdaki örneğimizde LevelTracker isminde bir structure tanımlayacağız ve bu structure hangi seviyelerin açıldığını ve mevcut seviyeyin hangisi olduğunu tutan statik property ve metotlara sahip olacak.

 Örneğin Açıklaması:

Örneğimiz içerisinde bulunan highestUnlockedLevel statik değişkeni oyunda açılmış olan en yüksek seviyeyi tutar.

Structure içerisinde 2 adet de type metot bulunmakta. Bunların isimleri unlockLevel ve levelIsUnlocked. Bu fonksiyonların yaptıkları işler ise şu şekildedir :

  • unlockLevel : Oyun içerisinde yeni bir seviye açıldığı zaman, en yüksek seviye değerini tutan highestUnlockedLevel  değişkenini günceller.
  • levelIsUnlocked : Bu type metot ise eğer belirtilen seviye daha önceden açılmış ise true değerini döner.

Statik property ve metotlarımıza ek olarak, oynanan oyundaki mevcut seviyeyi tutan currentLevel değişkeni de bulunmaktadır.

Bu currentLevel propertysini yönetebilmek için LevelTracker içerisinde advanceToLevel isminde birde metot tanımlanmış durumda. Bu metodumuz currentLevel değişkeninin değerini güncellemeden hemen önce gider ve bir sonraki oynanacak olan seviyenin açılıp açılmadığına bakar. Oynanacak olan seviyenin açık olup olmadığına dair de bir Boolean değeri döndürür. Bu da kullanıcıların henüz açamadıkları seviyeleri oynamalarını engeller.

LevelTracker isimli structure’ımızın nasıl tanımlandığını anladık. Sıra geldi bu structure’ın nasıl kullanıldığına. Bunu yapmak için Player isminde bir sınıf tanımlayacağız ve mevcut oyuncunun ilerleyişini kaydedip güncelleyeceğiz.

Player Sınıfı:

İlk olarak yaptığımız şey, LevelTracker’ın bir tane instance’ını türetmek. Daha sonra da completedLevel isminde bir metot tanımladık, bu metot kullanıcı seviyeyi bitirdiği zaman çağrılır ve bir sonraki seviyenin açılmasını sağlar ve kullanıcının ilerleyişini kaydeder. Ve bunda örneğin sonu olur, haydi test edelim 🙂

Test 1:

Konsola “Açılan en üst seviye şu anda 2” yazmasının sebebi, başlangıçta 1. seviyenin açık olması ve kullanıcının 1 seviye daha tamamlayarak 2. seviyeyi açmasıdır.

Test 2:

Burada ise seviye atlatmadık, kullanıcının 6. seviyeyi açıp açmadığını kontrol ettik.

Türk Telekom Şirketinde CRM Çözümlerinde Teknik Analist olarak görev yapmaktayım. Geçmişte ise iOS uygulama geliştirici olarak çalıştım. Bilginin ve paylaşmanın gücüne can-ı gönülden inanırım..