Sayfalar

5 Mayıs 2020 Salı

Balığı Yüzdür

Merhabalar. Buraya kadar olan kısmı sorunsuz başarabildi iseniz, bilgisayarınıza Scratch kurulumunu yapmış veya çevrimiçi editörü nasıl kullanacağınızı biliyor, kod bloklarını nasıl bir araya getireceğinizi biliyor ve kuklaların kostümleri üzerinde değişiklikler yapmayı biliyor olmalısınız. Eğer bunları yapamıyor iseniz önceki dersleri inceleyerek buraya tekrar gelmenizi tavsiye ederim. Bu dersimizde bir balığın ekranda sürekli yüzmesini sağlayacağız. Bunun için kuklalar kategorisinden dilediğimiz bir balığı seçeceğiz. Dekor olarak su altı temalı bir dekor seçeceğiz. Ardından kuklamıza gerekli kodları yazarak balığımızın sürekli ekranda yüzmesini sağlayacağız. 

Kukla ve sahnemiz hazır olduğuna göre kodlarımızı yazmaya başlayabiliriz. Hedeflenen kukla davranışı, "Bayrak butonuna tıklandığında kuklamızın rastgele bir konumdan başlayarak ekranın dışına çıkmadan sürekli olarak hareket etmesi. Hareket sırasında yukarı aşağı, sağa sola doğru hareket edebilir. Her defasında aynı hareketi yapmamalıdır." Verilen kukla davranışını inceleyerek neler yapabileceğimizi bulalım. Bir başka değişle kuklamızın hareketine ait algoritmamızı geliştirmeye başlayalım. 

Dikkat etmemiz gerekenler:
1- Kukla ekranda rastgele bir konumda hareket etmeye başlayacak
2- Ekranın dışına çıkmayacak
3- Bayrak butonuna her tıklandığında farklı bir rota çizecek

Şimdi bu durumları sağlayacak en uygun kodları bulmamız gerekiyor. 

1. durum için şu ana kadar x ve y değerlerini öğrenmiştik. x yatay olarak hareketi y ise dikey olarak hareketi sağlıyordu. x ve y değerlerini rastgele değiştirerek ekranın farklı yerlerinde görünmesini sağlayabiliriz. Ancak bu yüzüyormuş gibi görünmesini engelleyecektir. "1 snde x: y: noktasına git" kodunu kullanırsak sürekli aynı rotayı izleyecek ve 3. şartımızı sağlamamız imkansızlaşacaktır. Dolayısıyla bu durumu çözebilmemiz için x ve y değerlerini kullanmak bizim için uygun olmayacaktır. Bu sorunu çözebilmek için kuklanın yön bilgisinden ve "Adım git" kodundan faydalanacağız. "Adım git" kodu kuklanın yönü hangi tarafa doğru ise o yöne hareket etmesini sağlar. Böylece kuklamızın yön bilgisini değiştirerek kuklanın sürekli rastgele konumlara hareket etmesini sağlayabiliriz. 


2. şartımızı sağlamak için ise "kenara geldiysen sek" kodunu kullanacağız. Bu kodun eklendiği kuklalar herhangibir kenara dokunduklarında geldikleri açıya uygun bir şekilde tersi yöne hareket ederler. Açı kavramını zamanla algılayabileceğiniz için çok derine inmeden burayı geçiyorum. Nasıl olduğunu bilmeniz şu an için yeterli. :)
3. şartımızı ise yön değermizi rastgele üreterek sağlayabiliriz. Bunun için operatörler başlığı altında bulunan "1 ile 10 arasında bir sayı seç" kodunu alıp düzenlememiz gerekiyor. Kuklalarımızın yön değerleri -180 ile 180 arasında olduğu için başlangıç değerine -180 bitiş değerine ise 180 yazacağız. Oluşturduğumuz bu kodu yönüne yönel bloğu ile birleştireceğiz. 
Şimdi kodlarımızı anlamlı bir şekilde bir araya getirmemiz gerekiyor. Unutmamamız gereken şey bizim yazdığımız kodları bilgisayarın yukarıdan aşağı sıra ile okuduğu ve bizim söylemediğimiz hiçbir şeyi yapmayacak oluşudur. Dolayısıyla kodlarımızı doğru bir şekilde bir araya getirmezsek bilgisayar bizim istediklerimizi yapmayacaktır. 

Öncelikle çalışmaya başlayabilmesi için olaylar başlığı altında yer alan "bayrak butonuna tıklayınca" kodunu kodlama alanına sürükleyelim. Ardından rastgele bir yöne dönebilmesi için "yönüne yönel" kodu ile "sayı üretme" kodunu birleştirelim. Kontrol başlığı altında bulunan sürekli tekrarla kodunu ekleyelim.10 adım git ve kenara geldiysen sek kodlarını sürekli tekrarla bloğu içerisine yerleştirelim. Artık balığımız yüzmeye hazır. (Sürekli tekrarla kodunu silerek kodunuzu çalıştırarak aradaki farkı gözlemleyiniz.)



Buraya kadar yazdığımız kodlar sayesinde balığımız sürekli olarak ekranda rastgele hareket edecektir. "10 adım git" kodunda bulunan 10 değerini azaltırsanız balığınız daha yavaş hareket edecek, artırırsanız daha hızlı hareket edecektir. 

**Dikkat: Hazırladığınız uygulamaya dikkat ederseniz bir şartın yerine getirilmediğini fark edeceksiniz. Bayrak butonuna her tıkladığımızda farklı konumlardan harekete başlaması gerekiyordu. Ancak yazdığımız kodlar balığın son konumundan başlamasına sebep oluyor. Bu eksiğimizi tamamlamak için hareket başlığı altında konum bilgisi içeren bir koda ihtiyacımız var. Doğru kodu doğru yere eklerseniz yazılımınız tamamlanacaktır.
**Dikkat: Balıklar ters yüzemez. Ancak bizim balığımız bazen ters yüzüyor. Hareket başlığı altında işimize yarayacak bir kod olabilir. Başarılar :)

Hiç yorum yok:

Yorum Gönder