İçeriğe geç

Dx Ball Uygulaması

dx-ball

Merhaba arkadaşlar bugün size ilk XNA Game Studio 4.0 ile yapmış olduğum oyundan bahsedeceğim.

Öncelikle oyunumuzdan bahsedelim. Oyunun genel kuralı topu tahtadan aşağı düşürmeyecek şekilde üst taraftaki bloklara değdirip onları yok etmek. Tabi oyun öyle kolay gitmiyor :) Her top geri döndüğünde daha hızlı bir şekilde geri dönüyor ve bu oyunda tüm blokları kırmanız için üç hakkınız var.

Size birazda oyunu nasıl yazdığımdan bahsetmek istiyorum. En önemli özellik olan ekranın dokunmatik olması ve tuş takımının olmamasından dolayı tahtamızı ekran dokunuşları ile hareket ettirmemiz gerekiyordu. Yani istediğim sınırlarda ve parmağımı nereye sürüklersem tahtanında o yöne doğru gelmesi gerekiyordu. Bunun yanında topumuzum ekran sınırlarından çıkmaması ve tahtamızın altına düştüğü zaman can kaybının olup topun eski yerinden tekrar başlaması gerekliydi.

İlk başta projemizi açıyoruz ve nesnelerimizi oluşturacağımız sınıfları yapıyoruz. Bunlar Ball, Player ve Blok sınıflarıdır.

Tüm sınıflarımızda ortak olan ve bu nesnelerimizi çizmemize yarayan aşağıdaki özellikleri ve metodları tüm sınıflarımıza ekliyoruz.

Bu kodlar sayesinde Game1 sınıfımızda nesnelerimizi istediğimiz kadar oluşturup çizebileceğiz. Tabi Ball sınıfının bundan artı olarak hareket metodları var. Onlarda aşağıdaki gibi ayarlayabiliriz.

Tabi bunları böyle tanımlamamız yetmeyecektir. Bunun yanında topumuzun ekranın sınırları dışına çıkmaması da gereklidir ve onuda move() metodunun içine ekleyeceğimiz aşağıdaki kod ile yapabiliriz.

Tabi bunun yanında da Ball sınıfımızda hızı ayarlayabilmemiz için int tipinde speed adında bir değişken tanımlıyoruz.

Şimdi gelelim işin asıl kısmına yani Game1 sınıfımıza. Burada oluşturduğumuz sınıflardan istediğimiz kadar türetip ekrana istediğimiz şekilde yerleştirebiliriz.

İsterseniz gelin ilk önce Game1 sınıfımızın içinde neler var onları görelim. sınıfımızın içinde hazır gelen metodlar aşağıdakilerdir.

Intialize() metodumuz sınıf diyagramında tanımladığımız Ball, Player, Blok sınıflarından nesneler türetmek için kullanılır.

LoadContent() metodumuz ise oluşturduğumuz nesnelerin resimlerini ve ekranda duracağı alanı belirlemek içi kullanılır. Bununla ilgili bir örnek aşağıda verilmiştir.

Burada Texture2D argümentindende bahsetmek istiyorum. Texture2D sayesinde oluşturduğumuz nesnenin resmini ekranımıza koyabilmemizi sağlar.

Update(GameTime gameTime) metodumuz ise bizim hareket metodumuzdur. Burada nesnelerimizin hareket kazanmasını ve bunlar arasındaki etkilişimi kontrolünü sağlar.

Draw(GameTime gameTime) metodumuz ise LoadContent() metodumuzda resim ve yerini ayarladığımız nesnelerimizin ekrana çizilmesini sağlar. Mesela yukarıda örneğini verdiğimiz nesneninde Draw(GameTime gameTime) metodunda çizdirme kodunu verelim.

Böylelikle istediğimiz kadar nesne oluşturmuş olduk.

Şimdi topumuzu hareket ettirelim. Hatırlarsanız topumuzun hareketi için Ball sınıfında Move() diye bir metod oluşturmuştuk. Şimdi Game1 sınıfımıza gelip önceden bahsettiğim gibi ball adında bir nesne oluşturmuş farz edelim. Uprage() metodumuzun içine gelip ball.Move() yazdığımız zaman topumuzun hareketini tanımlamış oluyoruz.

Şimdide tahtamızın hareketine gelelim. Önceden de dediğim gibi biz bunu ekran dokunmatiğine göre yapmamız gerekiyor. Bunun içinde aşağıdaki işlemleri gerçekleştirmeniz gerekiyor.

Evet arkadaşlar topumuzu ve tahtamızı hareket ettirmeyi başarıp bloklarımızı sabitledik. Geriye etkileşim olarak top ile tahta ve blokların temasını ayarlamamız kaldı. Onuda rectangle metodu ıle yapıyoruz. İlk işimiz rectangle tipinde bütün nesnelerden oluşturuyoruz ve bunları tanımladıktan sonra Rectangel diye bir metod açıp tüm nesneleri aşağıdaki gibi tanımlıyoruz.

Bunu da yaptıktan sonra etkileşim diye bir metod kullanarak aşağıdaki gibi top ile diğer nesne temasından verilecek tepkileri belirtmemiz gerkiyor hepsi için.

Bunlarıda sağladıktan sonra değişken tanımlama ve ufak tefek if-else tarzı kontrollerle çizimi silme, can kaybı, ölü nokta vb. özellikler katıp oyununuzu bitirebilirsiniz. Gerisi sizin hayal gücünüze kalmış.. :) :)

appscreenshot_1           appscreenshot_2

Kategori:WP7 Uygulamaları

4 Yorum

  1. cagatay cagatay

    benzer bir oyunu windows form app olarak yazmaya çalışıyorum ve bazı bilgilere ihtiyacım var yardımcı olabilir misiniz?

    • Tabi, nasıl bir yardıma ihtiyacınız var ? Detaylı bir şekilde sorunuzu sorarsanız eğer elimden gelen bir yardımsa yardımcı olmaya çalışırım.

      • mehmet usta mehmet usta

        kolay gelsin yunus bey visual studyoda bu oyunu yapmak çin kodlara ihtiyaım var ünvertedede bitirme projem de yardım edebilir misinz acaba

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir