Sayfalar

30 Mayıs 2020 Cumartesi

Balık Avlama 6

Merhabalar. "Balık Avlama 5" dersimizde ikizini yarat kodu ile balık sayısının artmasını sağlamıştık. Bu sayede oyunun daha zevkli hale gelmesi için tespit ettiğimiz sorunlardan birini daha çözmüş olacaktık. Son olarak sonraki kostüm kodunu kullanarak ekranda birbirinden farklı balıkların olmasını sağlayabileceğimizi söylemiştik. Sonraki kostüm kodu farklı kostümleri içeren kuklaların bu kod her çalıştığında bir sonraki kostümüne geçmesini sağlayan bir koddur. Bu kodu kullandığımızda sırada hangi kostüm varsa ona geçer. Son kostümden sonra ilk kostüme geçerek kostüm değiştirmeye devam eder. 

Gelelim "Biz nerede kullanmalıydık?" sorusunun cevabına. İlk akla gelen ikiz olarak başladığımda kodunun başına eklemek oluyor. Bunu yaptığımızda ise ikiz olarak ekranda beliren tüm balıklar ikinci sıradaki kostüme sahip balıklar oluyor. Çünkü balığımızın seçili kostümünden sonraki kostüme geçerek ikizini oluşturuyor. Bu yüzden farklı balıklar oluşmuyor. Öyle ise bizim asıl balığımız ikizini oluşturduktan sonra kılık değiştirmeli. Bu sayede ekranda 4 farklı balığı görebiliriz. Doğru kodu bilmek kadar ne zaman nerede çalışacağını bilmek de önemli. :)

Bu kodu ekledikten sonra çözmemiz gereken yeni bir durumumuz daha var. Balık en son hangi kostümde kalırsa oyunun en başında o kostümden başlayacak. Bu tam olarak bir sorun sayılmaz. Ancak her zaman ilk balığın seçtiğimiz balık olmasını istiyorsak bir kod bloğuna ihtiyacımız var. Bunu sizler rahatlıkla çözebilirsiniz. 

Oyunumuza bugün yakaladığımız balık sayısı bilgisini ekleyelim. Tespitlerim kısmında bunu da yapmayı düşünmüştük. Cümlemizi bir hatırlayalım. "*Balık sayısı fazla olursa köpek balığının yakaladığı balık sayısı tespit edilebilir. Bu durumda kaybetme ihtimali olan bir durum ortaya çıkarılabilir. "

Köpek balığının yakaladığı balık sayısını tespit etmek istiyoruz. Bunu ise değişken adını verdiğimiz blokları kullanarak yapabiliriz. Öncelikle "Değişken nedir?" sorusuna cevap bulmaya çalışalım. Bunu ise örneklerle yapalım. 

1. örnek: Bir tabak düşünün. İçerisine farklı farklı birçok yemek koyup afiyetle yediğiniz bir tabak olsun. Tabağın içerisindeki yiyecekler köfte, pilav, çorba... veya hoşunuza giden farklı yemekler olabilir. İçerisine koyduğumuz yiyecekler değişebilir. Ancak tabak hep aynıdır. Peki bu durumda sabit ve değişken olarak iki tanım yapmak istesem, tabak ve yiyeceği nasıl adlandırırsınız? Tabakta herhangi bir değişiklik olmadı. Fakat yemekler her seferinde değişti. Öyle ise tabak sabit olurken yiyecekler değişken olarak adlandırılır. 

2. örnek: Bir sınıf düşünün. Okulun en güzel yerinde. Bahçe manzaralı. Bu sınıf sizin sınıfınız olsun. Bu yıl sınıfınızda sizler varsınız. Ancak seneye farklı bir sınıfta okuyacaksınız. Bu sınıfta ise başka öğrenciler olacak. Bu örneğimizde sabit ve değişken nelerdi? Sınıfta bir değişiklik olmadı. Ancak içerisindeki öğrenciler değişti. Sınıf sabit, öğrenciler değişken olarak adlandırılır. 

Örneklerden yola çıkarsak değeri değişebilen durumları değişken adını verdiğimiz kodlarla kontrol edebiliyoruz. Balık avlama oyununda ihtiyacımız olan değişken balık sayısı. Köpek balığı kuklasını seçiyorum. İlk olarak değişkenler başlığı altında bulunan bir değişken oluştur butonuna tıklıyorum. Ardından değişkene "Balık sayısı" adını veriyorum. Burada verdiğimiz isim önemli değil. Balık sayısı adını verdiğim değişkenle farklı bir değeri de tespit edebilirim. Ancak bu durumda kodlarımı oluştururken kendi kafamı karıştırmış olurum. Dolayısıyla isimlendirmeleri ne kadar düzenli yaparsam kodları yazarken o kadar rahat ederim. :)


Balık sayısı değişkeni işaretli olduğunda ekranımızın üzerinde değişkenin adı ve değerinden oluşan bir panel görünecektir. Eğer değişkenin ekranda görüntülenmesini istemiyorsanız işaretini kaldırabilirsiniz. İşaretli değilken de kullanabiliriz. Bu konuda seçim size ait. Ben ekranda yazmasını istiyorum. Bu yüzden de seçili bırakıyorum. 

Yapmamız gereken şey köpek balığının temas ettiği balık sayısını saymak. Öyle ise daha önce yazdığımız kodlar üzerinde düzenleme yapmalıyız. Çünkü oyunumuzda balık ile temas ettiğinde oyun bitiyordu. Artık bitmemeli ve balık yedikçe balık sayısı değişkenim artmalı. Doğru algoritmayı oluşturarak kodlarımı düzenlemeliyim. 

Öncelikle balıkla temas ettiği anda oyunun bitmesini sağlayan kodları siliyorum. Ardından değişkenler başlığı altında bulunan "balık sayısı değerini 1 arttır" kodunu, sildiğim kodların yerine ekliyorum. Temel mantık ile kodlarım hazır. Ancak eksikleri çok. Nasıl çalıştığına bir bakalım ve eksiklikleri tespit edelim. 

Deneme yaptığınızda temas edilen balıkların kaybolmadığını göreceksiniz. Çünkü kodları silerken balığı gizle haberini de sildik. Bu yüzden balığımız temastan bir haber yüzmeye devam ediyor. Balığın gizlenmemesi ise balık sayısının çok büyük bir hızla artmasına sebep oluyor. Kodlar bir saniyede yukarıdan aşağı defalarca kez okunur. Bu yüzden de 1 saniye gibi bir zamanda bile balık sayısı değeri 200lü değerlere ulaşabilir. Sildiğimiz haber sal kodunu tekrar ekleyerek sorunumuzu çözelim. 

Artık ekrandaki herhangi bir balığa temas ettiğinde tüm balıklar gizlenecektir. "Neden benim temas ettiğim balık değil de hepsi gizleniyor?" diyorsunuz şu anda. :) Sebebi çok basit aslında. Bizim diğer balıklarımız ikiz. Yani, aslının özelliklerine sahip olan kopyalar. Eğer asıl balık gizlenirse kopyalar da gizlenir. Dolayısıyla bir balık yakalandığında diğer balıklar da ekrandan kaybolurlar. Bir kuklanın ikizini oluşturarak kullanacaksak böyle durumlara dikkat etmemiz gerekiyor. Bu durumu balığın hareket etmesi için oluşturduğumuz kodların arasına göster kodunu ekleyerek çözüme kavuşturabiliriz. Balık her bir hareketinde tekrar görünür olur ve yeniden kopyalarını oluşturur. Ancak bir tanesini yakaladığımızda diğerleri de kaçacaktır. :)


İki tane ekleme sebebim gizlendiği durumda daha çabuk ekrana gelmesini sağlamak. Bir tane de koymuş olsanız yeterli olacaktır. Son şekli ile oyunumuzun genel bir değerlendirmesini yapalım. Balıkların bir anda kaybolması pek hoşuma gitmedi. Temas etmediğim balıkların ekranda kalması daha iyi bir sonuç ortaya çıkaracaktır. Birde balık sayısı değerim sürekli artıyor. Oyunu tekrar başlatmış olsam bile kaldığı yerden devam ediyor. Bu ise oyunumdaki ciddi bir hata. Bu sorunları çözersem oyunum daha da iyi bir hal alacaktır. Bu sorunları çözmek için bir sonraki dersimizde görüşürüz. :)

Hiç yorum yok:

Yorum Gönder