31 Ekim 2015 Cumartesi

GreenFoot Tutorial-5

Rastgele Hareket Eden bir Düşman

Önceki tutorial sonunda kontrolümüze göre hareket eden ve solucanları yiyen bir yengeç elde ettik. Oyun oldukça basit , ne kadar yengeci hareket ettirmek zor olsa da? Şimdi bir düşmana ihtiyacımız var. Bu düşman yengeçleri yiyen bir ıstakoz!..

Başlangıç olarak bir çizgide hareket eden ve yengeçleri yiyen bir Lobster class'ı üretelim. Bunun nasıl yapıldığını daha önce gördük. Önce bir Lobster class ekliyoruz. Sonra bunu düz ileri hareket eder ve eğer yoluna bir yengeç çıkarsa yiyecek hale getiriyoruz. Bunların nasıl yapılacağını daha önce görmüştük. Kendiniz yapmayı bir deneyin son kod burada bakabilirsiniz.

Istakozun görevini yapmasını yengecin soluna bir ıstakoz (lobster) yerleştirip test edebilirsiniz. Çalıştırdığınızda her ikisi de sağa doğru hareket eder, dokunmazsanız ıstakoz yengeci yakalar ve yer. Istakozumuz şimdilik biraz aptal , önünden kaçmak hiç te zor olmayacak.



Şimdi ıstakozumuza rastgele hareketler vererek kaçılmasını biraz zorlaştıracağız. GreeFoot metodu olan Greenfoot.getRandomNumber metodubize rastgele bir sayı verir. Şimdi koda her taramada ıstakozu biraz döndürmesi için ilave yapacağız :


Bu kod ile her taramada 0 ila 90 derece arası rastgele bir açı dönüş yapması sağlanıyor. Bir deneyip bakın , ıstakoz deli dana gibi dönüp duruyor. Her seferinde bir dönüş vermemiz yüzünden ıstakoz sürekli dönüyor. Önümüzde iki yol var , ya bir sayaç kurup 10 turda bir dönüş yaptıracağız, ya da daha gelişmişi bu dönüş zamanını da rastgele seçecez ama ortalama 10 turda bir olacak. İkinci bir rastgele sayı üreteci kuracağız.

Istakozun her seferinde %10 ihtimalle dönüş yapmasını istiyoruz. Bunu yapmak için Greenfoot.getRandomNumber(100) değerini istediğimiz olasılık değeriyle karşılaştırıyoruz.


E artık ıstakoz biraz düz gidip ondan sonra dönmeye başladı. Çalıştırırsanız ıstakozun daha mantıklı hareketler yaptığını görürsünüz, ama hala sadece hep sağa doğru dönüyor.

Istakozun sola dönmesi için negatif bir açı parametresi vermek gerekiyor. 0-90 derece arası olacağına (-45) - 45 derece arasında döndürürsek her iki yöne de hareket edeck. Bunu yapmak için elde ettiğimiz rastgele açı değerinden 45 çıkarmak yeterli olacaktır.


Kodu derleyip çalıştırın şimdi daha tehlikeli bir düşman var. Ortalığa birkaç tane ıstakoz koyun bakalım aralarından sıyrılıp solucanları yiyebilecek misiniz?

Istakozlar ekranın kıyılarına varınca , rastgele bir açıyla oradan ayrılana kadar biraz oyalanıyorlar. Bu konuyu çözmek için ıstakozun ekranın sınırına varınca geri dönmesini sağlamalıyız. Istakozun X koordinatı sıfıra yaklaşınca ya da world genişliğine yaklaşınca 180 derece geri döndüreceğiz (360 değil!). Aynı şekil Y koordinatı içinde 0 değere yaklaşınca ya da world yüksekliğine yaklaşınca geri döndüreceğiz. İşte kod değişikliği :


Böylece bu yengeç tutorial'ı bitti. Burdan sonra kendi senaryolarınızı yazarak devam edebilirsiniz.

Hoşça kalın :)







Hiç yorum yok:

Yorum Gönder