Silverlight Game (Volfied) -2

Merhabalar arkadaşlar.
Bu yazımızda bir önceki yazımızda kaldığımız yerden devam edelim. Önceki yazımızda en son Duvar sınıfını oluşturmuştuk. Bu gün oyuncumuzun özelliklerini içeren Oyuncu sınıfımızı yazmakla başlayalım. İlk başta oyuncumuz nasıl olacak onu tarif edeyim oyuncumuz yılana benzer çekilde bir birini takip eden rectangel nesnelerinden oluşacak. Bu rectangel nesnelerin effectleri ile oynayarak oyuncumuzun daha güzel görünmesini sağlayacağız. Oyuncu sınıfının kodları aşşağıdaki gibi dir;


 public class Oyuncu
    {
        public YonEnum OyuncuYon { get; set; }
        public FrameworkElement _Oyuncu { get; set; }
        public Boolean HareketliMi { get; set; }
        public HareketYeriEnum HareketYeri { get; set; }
        public Point OncekiPozisyon { get; set; }
        public int X
        {
            get
            {
                return Convert.ToInt32(Canvas.GetLeft(rectangel));

            }
            set
            {
                Canvas.SetLeft(rectangel, value);
            }
        }
        public int Y
        {
            get
            {
                return Convert.ToInt32(Canvas.GetTop(rectangel));
            }
            set
            {
                Canvas.SetTop(rectangel, value);
            }
        }
        public Canvas rectangel
        {
            get;
            set;

        }

        public Oyuncu(Int32 rectangelOpacity, Color color)
        {
            rectangel = new Canvas();
            rectangel.Height = 30;
            rectangel.Width = 30;
            rectangel.Tag = "oyuncu";
            X = 0;
            Y = 0;

            Rectangle _rec = RectangelOlustur(ref color);

            switch (rectangelOpacity)
            {
                case 100:
                    rectangel.Children.Add(_rec);
                    _rec = RectangelOlustur(ref color);
                    rectangel.Children.Add(_rec);
                    break;
                default:
                    _rec.Opacity = Convert.ToDouble(Convert.ToDouble(rectangelOpacity) / Convert.ToDouble(100));
                    rectangel.Children.Add(_rec);
                    break;
            }
        }

        private static Rectangle RectangelOlustur(ref Color color)
        {
            Rectangle _rec = new Rectangle();
            _rec.Fill = new SolidColorBrush(color);//new Color() { A = 23030, B = 330, G = 23030, R = 30 });
            _rec.Height = 30;
            _rec.Width = 30;
            _rec.Tag = "oyuncu";
            Canvas.SetLeft(_rec, 0);
            Canvas.SetTop(_rec, 0);
            _rec.Effect = new BlurEffect() { Radius = 100 };
            return _rec;
        }

    }
Şimdi sınıfımız daki propertyleri ve metodları açıklayalım.

public YonEnum OyuncuYon { get; set; }
Bu property duvardaki gibi YonEnum ından oluşmakta oyuncunun hangi yönde ilerlediğini tutmamız için kullanacağız.
public Canvas rectangel{get;set;}
Oyuncunmuzun görüntüsünü oluşturacak rectangel nesnesini bu nesnenin içine ekleyeceğiz. aslında oyuncu rectangel ını direk göstermek için kullana bilirdik fakat ben oyuncunun başını oluşturmak için (görüntüsü daha parlak olsun diye)  sadece baş kısmına iki rectangelı üst üste kullandım bu yüzden ikisinin bir nesne gibi davranması için kontrolü kolay olsun diye rectangel nesnesini içersine ekleyeceğim.

public Boolean HareketliMi { get; set; }
Oyuncunun şuanda hareketlimi olduğunu belirtmek için kullanacağız.
public HareketYeriEnum HareketYeri { get; set; }
public enum HareketYeriEnum
    {
        Duvar = 0,
        GeciciDuvar = 1,
        BosAlan = 2
    }
Oyuncunun hareket esnasında hangi alanda olduğunu belirtmek için kullanacağız. Bu özellik oyuncu eğer boş alanda ise topların bize çarpması oyunun bitmesine neden olacak veya biz çemberi tamamlamak için boş alandan duvarlı alana geçtiğimizde ozaman duvarın içersi doldurulması için başka metod çağrılacak.
public Point OncekiPozisyon { get; set; }
Kuyruğun başı takip etmesi için kullanacağız  ve diğer kuyruğu bir öncekini takip etmesi için.

public int X public int Y
Oyuncunun oyun alanında nerde olduğunu belirtmek için kullanacağız.
 private static Rectangle RectangelOlustur(ref Color color)
        {
            Rectangle _rec = new Rectangle();
            _rec.Fill = new SolidColorBrush(color);//new Color() { A = 23030, B = 330, G = 23030, R = 30 });
            _rec.Height = 30;
            _rec.Width = 30;
            _rec.Tag = "oyuncu";
            Canvas.SetLeft(_rec, 0);
            Canvas.SetTop(_rec, 0);
            _rec.Effect = new BlurEffect() { Radius = 100 };
            return _rec;
        }
Bu static metod bizim oyuncumuzun şeklini belirtmek için kullanacağımız rectangel nesnesini oluşturmakta.
public Oyuncu(Int32 rectangelOpacity, Color color)
        {
            rectangel = new Canvas();
            rectangel.Height = 30;
            rectangel.Width = 30;
            rectangel.Tag = "oyuncu";
            X = 0;
            Y = 0;

            Rectangle _rec = RectangelOlustur(ref color);

            switch (rectangelOpacity)
            {
                case 100:
                    rectangel.Children.Add(_rec);
                    _rec = RectangelOlustur(ref color);
                    rectangel.Children.Add(_rec);
                    break;
                default:
                    _rec.Opacity = Convert.ToDouble(Convert.ToDouble(rectangelOpacity) / Convert.ToDouble(100));
                    rectangel.Children.Add(_rec);
                    break;
            }
        }
Bu constructor metodu oyuncumuzu oluşturmak için kullanacağız. Oyuncumuzu oluşturuken rengini ve saydamlığını ayarlayabiliyoruz. Bu metod da oyuncu için bir tane canvas nesnesi oluşturuluyor ve daha sonra 
RectangelOlustur static metodu çağrılarak canvas nesnesinin içine koyacağımız rectangel nesnesi oluşturuluyor. Bu kısma kadar Duvar ve Oyuncu sınıflarını anlattık bir sonraki yazımızda Top sınıfını anlatacağız sonra oyunun asıl mantığını oluşturan kısımları anlatmaya geçeceğiz.

1 yorum:

Adsız dedi ki...

Çok Güzel Tebriklerr..

Yorum Gönder

Share