Silverlight Game (Volfied) -1

Bu yazımızda benim silverlight öğrenirken yapmaya çalıştığım bir oyun taslağını anlatacağım. İlk başta yapmayı düşündüğüm oyunu biraz anlatayım. Belki eskiden oynamışsınızdır Volfied oyunu vardı işte o oyuna benzer bir oyun yapmayı düşündüm ve işe koyuldum.

Oyunun mantığı çok basit bizim bir oyun alanımız olacak ve bu oyun alanını çevreleyen duvarlar olacak, bu oyun alanına bizim oyuncumuzda duvarlar koya bilecek , alanın boş kısımlarında serbest ce dolaşan ve duvarlara çarptıkça seken toplar olacak.
Bizim oyuncumuz toplara dokunmadan topların dolaşacağı alanları küçültmek için belli bir alanı çember içine almaya çalışacak ve çember içine almayı tamamladığında o çemberin içi de duvar ile kaplanacak eğer içerisin de top varsa o top yok olacak (Eğer yok olan top son top ise oyun bitecek).

Oyuncumuz alanı çizerken çember tamamlanmadan çembere top çarparsa oyun bitecek veya oyun alanının %80 tamamlanırsa oyun bitecek.

Oyun ekran olarak 810*600 ve benim koyacağım duvarların boyutunu da 30*30 olarak düşündüm. Koyacağım duvarları Expression Design da yaptım. Vektör olarak yapmanız bence daha iyi çünkü ilerde boyutlarını daha küçük veya büyük olmasını istediğinizde koddan küçültme büyütme yaptığınızda görüntüde bir bozulma olmayacaktır diğer türlü resim yapar iseniz o zaman resimde bozulmalar olacaktır.

Oyunun mantığını biraz anlattık şimdi kod kısmına geçelim zaten mantığı kod kısmında da anlatmaya devam edeceğim.

İlk olarak kullanacağım sınıfları oluşturayım. İlk sınıfımız Duvar lar için olsun bu sınıf şu şekilde olmalı;
public class Duvar
    {
        public Image duvar { get; set; }
        public YonEnum duvarYon { get; set; }
        public DuvarTipiEnum duvarTipi { get; set; }
        public int X { get; set; }
        public int Y { get; set; }
        public Duvar(double x, double y)
        {
            DuvarOlustur(x, y);
        }

        public Duvar(double x, double y, YonEnum duvarYon)
        {
            DuvarOlustur(x, y);
            this.duvarYon = duvarYon;

        }
        public Duvar(double x, double y, DuvarTipiEnum duvarTipi)
        {
            DuvarOlustur(x, y);
            this.duvarTipi = duvarTipi;
        }
        public Duvar(double x, double y, DuvarTipiEnum duvarTipi, YonEnum duvarYon)
        {
            DuvarOlustur(x, y);
            this.duvarTipi = duvarTipi;
            this.duvarYon = duvarYon;
        }

        private void DuvarOlustur(double x, double y)
        {
            duvar = new Image();
            duvar.Height = 30;
            duvar.Width = 30;
            duvar.Source = (ImageSource)new ImageSourceConverter().ConvertFromString("Resimler/duvar.png");
            duvar.Stretch = Stretch.Fill;
            Canvas.SetLeft(duvar, x);
            Canvas.SetTop(duvar, y);
            Canvas.SetZIndex(duvar, -1);
            duvarTipi = DuvarTipiEnum.GeciciDuvar;
            this.X = Convert.ToInt32(x);
            this.Y = Convert.ToInt32(y);
        }
    } 

Bu sınıfta birkaç tane property ve overload constructor metod bulunmakta. Şimdi bunları açıklayalım;

public Image duvar { get; set; }
Bu property bizim duvar için oluşturduğumuz resimleri tutmaya yarayacak.

public YonEnum duvarYon { get; set; }
public enum YonEnum
    {
        Sag = 0,
        Sol = 1,
        Assagi = 2,
        Yukari = 3,
        Yok = 4
    }
Duvarı oluşturduğumuz da oyuncunun oluştururken hangi yönde oluşturduğunu tutacak bu bizim için önemli çünkü oyuncunun oluşturduğu geçici duvar ile yapacağı çemberi tanımlamak için kullanacağız. Görüldüğü üzere bu property bir enum dan türemiş bu oluşturduğumuz YonEnum başka sınıflarda da kullanılacak diğer sınıflar anlatırken yine değineceğiz.

public DuvarTipiEnum duvarTipi { get; set; }
 public enum DuvarTipiEnum
    {
        GeciciDuvar = 0,
        Duvar = 1
    }
Duvarın hangi tipte olduğunu belirtir. Daha öncede bahsettiğim üzere oyuncu çemberi oluştururken geçici duvar oluşturuyor çember tamamlandığında ise o duvar oluyor işte bu enum ile duvarın hangi tipte olduğunu belirtiyoruz. Bu özellik bize çemberi oluşturmamızda topun çemberi oluştururken çarpınca oyunun  bitip bitmeyeceğini belirlememizde kullanacağız.

public int X { get; set; } public int Y { get; set; }
Duvarın oyun alanın da nerde olduğunu belirtmek için kullanacağız. Bu property ler bize topun duvara çarpıp çarpmadığı, oyuncunun  çemberi tamamlayıp tamamlamadığını, çemberin içinin nasıl dolacağını bulmamızda yardımcı olacak.

Bu günlük ilk sınıfımızı oluşturduk inşallah yarı kaldığımız yerden devam edeceğiz bu oyunun kaç blog yazısında biteceğini hesaplamadım o yüzden kusuruma bakmayın 3. blog dan sonra kodları da ekleyeceğim benim açıklamaya ihtiyacım yok ben koddan çözerim diyenler için daha iyi olacaktı.

Herkese iyi günler . Şu anda çok fazla yorum yapılacak kadar ilerlemedik biliyorum ama olsun ben yorumlarınızı bekliyorum:)

3 yorum:

Adsız dedi ki...

deneme

Ahmet dedi ki...

Çok güzel bir oyun olacak gibi devamını bekliyoruz.

Unknown dedi ki...

Arkadaşlar oyunu inceleye bilmeniz için free php olan bir hostin açtım oraya oyunu attım. yayınlayacağım diğer oyunları da bu siteye atacağım tüm younlar buradan incelenip oynana bilecek.

Oyunun Adresi http://www.bysonsuz.byethost31.com/game2.html

Yorum Gönder

Share