Sayfalar

5 Aralık 2018 Çarşamba

Aşamalı Labirent Oyunu(4) Zamana Karşı Yarış

Merhaba sevgili öğrencilerim.

Bugün sizlerle yaptığımız aşamalı labirent oyununa yeni bir özellik ekleyeceğiz. Oyunumuza süre eklemenin farklı yollarını birlikte keşfedeceğiz. Bir düşünelim bakalım. Nasıl yapabiliriz? 

Düşünmeden hemen okumaya devam etmediniz değil mi? 

Benim aklıma iki yol geldi. Birincisi "defa tekrarla" kodu. İkincisi değişken tanımlamak. Sizlerin aklına gelen farklı yollar varsa değerlendirebiliriz. İki yolla 60 saniyede oyunun bitirilememesi halinde oyunun kaybedilmesini sağlayalım. Öncelikle dekorlarımızın içerisine kaybedildiğinde görüntülenecek bir dekor tasarlayalım. Tasarımın ardından kodlarımızı yazmaya başlayabiliriz.


İlk olarak "defa tekrarla" kodu ile yapmaya çalışalım. Bilgisayarımın yapması gereken şeyi sözlü olarak ifade etmeye çalışayım. 60 saniye bekle(Bunu yapmanın da iki yolu var.) ve bu süre sonunda kaybettin dekoruna geç. Bu dekora geçtiğinde oyunu bitir. Şimdi bilgisayarcasına bakalım.


Bu birinci yol. 1 saniye bekle kodunun 60 kere tekrarlanması demek devamındaki kodun 60 saniye sonra çalışması anlamına gelir. 60 saniye sonra dekor kaybettin dekoruna dönüşür ve tüm kodlar durdurulur. Kuklaların gizlenmesi için de dekor kaybettin olunca gizlen kodu yazılır. 


Madem 60 saniye bekledikten sonra çalışacaksa bu kodlar niye 1 saniye bekleyi 60 kere tekrarlayalım? Koduma 60 saniye bekle diye 1 kere söylerim bekler. :) 

Bu yolla yaptığımızda oyuncu kaç saniyesi kaldığını bilmeden oyunu oynamak zorunda. Eğer ben kullanıcıya ne kadar süre kaldığı ile ilgili bilgi vermek zorunda değilsem işim tamam. Ama kullanıcının bu bilgiye sahip olmasını istiyorsam süreyi değişken kullanarak hazırlamalıyım. Öncelikle değişkenin ne olduğunu bir hatırlayalım. 

Bir sınıf düşünün. Sınıf her zaman sabittir. Değişmez. Ancak içerisindeki öğrenci sayısı sürekli değişebilir. Bu durumda sınıf sabit, öğrenci sayısı değişken olarak adlandırılır. Kısaca değeri değişebilen şeylere değişken diyoruz. 

İkinci yolumuzun ilk aşaması Veri sekmesinden bir değişken oluştur butonuna basarak "Süre" adında bir değişken oluşturmak olacak. 


Değişken tüm kuklalar tarafından kullanılacaksa "Tüm kuklalar için" seçeneğini, sadece bu kukla tarafından kullanılacaksa "Sadece bu kukla için" seçeneğini işaretleyiniz. Ben "Tüm kuklalar için" seçeneği işaretli iken değişkeni isimlendirerek "tamam" butonuna basacağım. Değişken tanımladıktan sonra değişken ile ilgili kodların "Veri" sekmesi altında yerini aldığını göreceksiniz. Artık kodları kullanarak oyunuma süre bilgimi ekleme zamanı. 


Bu kod dizisi boşluk tuşuna basılması ile birlikte çalışmaya başlıyor. İlk olarak süre değişkenini görünür hale getiriyor. Ardından değişkene 10 değerini veriyor. (Ben kodları denerken 60 saniye beklememek için süreyi 10 saniyeye düşürmüştüm. Oyun içerisine eklerken 60 yapmayı unutmayın.) Burada süre isimli değişkene istediğimiz sayısal değeri verebiliriz. Bu tamamen bizim seçimimiz. 
"10 defa tekrarla" kodunun içerisine "1 saniye bekle" ve "Süre'i -1 arttır." kodlarını ekliyorum. Bu kodun 10 kez tekrarlanma sebebi ekranda görüntülenecek süre bilgisinin sürekli yenilenmesini sağlamak. Oyuncuya ne kadar süre bilgisini doğru bir şekilde verebilmek. 
Burada "Süre'i -1 arttır" kodu kafanızı karıştırabilir. Biz sürenin azalmasını istiyoruz. Ancak kodlarımızın içerisinde süreyi azalt kodu yok. Bu sebeple ne kadar azalmasını istiyorsak başına "-" işareti koyarak yazıyoruz. Böylece değişken artmak yerine azalıyor. 
10 saniyelik sürenin dolması ile birlikte süre değişkeni gizleniyor. Kaybettin isimli dekor görüntüleniyor ve tüm kodların durdurulması sağlanıyor. Diğer kuklalara da gizlenmeleri için gerekli kodlar yazıldığında oyunumuz eksiksiz tamamlanmış olacaktır. 

Oyunumuz artık hazır demeyi çok isterdim ancak küçük bir hatası var. "Nerede bu hata hani biz niye görmedik?" diyen vardır muhtemelen. Şöyle yapalım. Oyununuzu kazanın. Ardından 60 saniyelik sürenin dolmasını bekleyin. Siz kazandınız ekranında iken oyun birdenbire kaybettin ekranına dönecektir. Bunun sebebi oyunu kazandığınızda süre değişkeninin durdurulmamış olması. Çözüm için fazlaca kopya verdim sanırım. Size kolay gelsin. İyi çalışmalar. :)

Hiç yorum yok:

Yorum Gönder