private void GameBtnClick(object sender, MouseEventArgs e)
        {
            GameButton btn = (GameButton)sender;

            if (e.Button == MouseButtons.Left && !btn.prevention)
            {
                switch (gameArrMap.map[btn.CordX, btn.CordY])
                {
                case 0:
                    thread = new Thread(() => GameBtnEmptyOpen((sbyte)btn.CordX, (sbyte)btn.CordY));
                    thread.Start();
                    thread.Join();
                    break;

                case 9:
                    GameBtnMineAllOpen();
                    break;

                default:
                    GameBtnNumAttrbutes(ref btn);
                    break;
                }
            }
            else if (e.Button == MouseButtons.Right)
            {
                GameBtnPrevetion(ref btn);
            }
        }
 // Mayınlı buton özellikleri
 private static void GameBtnmMineAttrbutes(ref GameButton btn)
 {
     btn.BackColor                  = _.btnGameMine_BackColor;
     btn.BackgroundImage            = _.btnGameMineImg;
     btn.FlatAppearance.BorderColor = _.btnGameMine_BorderColor;
     btn.Enabled = false;
 }
        // Mayınsız buton özellikleri
        private static void GameBtnEmptyAttrbutes(ref GameButton btn)
        {
            btn.Enabled   = false;
            btn.BackColor = _.btnGameClean_BackColor;
            btn.FlatAppearance.BorderColor = _.btnGameClean_BorderColor;

            // Skor puanlama
            _.score += 2;
            _.gameBtnEmptyNum--;
        }
        // Numaralı buton özellikleri
        private static void GameBtnNumAttrbutes(ref GameButton btn)
        {
            btn.BackColor = _.btnGameNum_BackColor;
            btn.ForeColor = _.btnGameNum_ForeColor;
            btn.FlatAppearance.BorderColor = _.btnGameNum_BorderColor;
            btn.Text    = "" + _.gameArrMap.map[btn.CordX, btn.CordY];
            btn.Enabled = false;

            _.score += 2 + btn.GameValue;
            _.gameBtnEmptyNum--;
        }
        // Butonlar kopyalanıp gerekli ayarlar set ediliyor.
        private static GameButton GameBtnClonePrototype(ref byte cordX, ref byte cordY)
        {
            GameButton btn = (GameButton)_.gBtn.Clone();

            btn.FlatAppearance.BorderColor = _.btnGameDefault_BorderColor;
            btn.GameValue  = _.gameArrMap.map[cordX, cordY];
            btn.CordX      = cordX;
            btn.CordY      = cordY;
            _._Point.X     = (cordX * (btn.Width + _.btnLeftRightMargin));
            _._Point.Y     = (cordY * (btn.Height + _.btnTopBottomMargin));
            btn.Location   = _._Point;
            btn.MouseDown += _.GameBtnClick;

            return(btn);
        }
 // Prototip tasarım deseni için hafızada bir buton prototipi oluşturuluyor.
 private void GameBtnCreatePrototype()
 {
     gBtn = new GameButton
     {
         Font                  = btnFont,
         Size                  = btnSize,
         Margin                = btnMargin,
         Padding               = btnPadding,
         TabStop               = false,
         Enabled               = true,
         TabIndex              = 10,
         FlatStyle             = FlatStyle.Flat,
         BackColor             = btnGameDefault_BackColor,
         BackgroundImageLayout = ImageLayout.Stretch
     };
 }
 private void GameBtnPrevetion(ref GameButton btn)
 {
     if (!btn.prevention)
     {
         btn.prevention                 = true;
         btn.BackgroundImage            = btnGameStepImg;
         btn.BackColor                  = btnGameStep_BackColor;
         btn.FlatAppearance.BorderColor = btnGameStep_BorderColor;
     }
     else
     {
         btn.prevention                 = false;
         btn.BackgroundImage            = null;
         btn.BackColor                  = btnGameDefault_BackColor;
         btn.FlatAppearance.BorderColor = btnGameDefault_BorderColor;
     }
 }
Esempio n. 8
0
        public object Clone()
        {
            GameButton copyButton = Activator.CreateInstance <GameButton>(); //önce GameMineButton Bir instance oluşturulur.

            PropertyInfo[] piList = this.GetType()                           //mevcut içerinde bulunduğumuz sınıfın property leri çekilir.
                                    .GetProperties();

            //mevcut property' lerden kopyalanmak istenen property ler belirtilir. Ancak bu örnekte hepsine gerek yoktur.
            //çünkü zaten oluşturuduğumuz copy sınıfının default değerleri içerisinde bulunduğumuz sınıf tarafından değiştirilmemektedir.
            //uygulama gereksinimine göre hepsi de kopyalanabilir.

            List <string> attributeList = new List <string>
            {
                "Font",
                "FlatStyle",
                "Size",
                "BackColor",
                "Margin",
                "BackgroundImage",
                "Padding",
                "Text",
                "TabStop",
                "ForeColor",
                "TabIndex",
                "Paint",
                "Enabled",
                "BackgroundImageLayout",
                "Visible"
            };

            foreach (PropertyInfo pi in piList.Where(i => attributeList.Contains(i.Name))) //içerisinde bulunduğumuz sınıfın propertyleri içerisinde dönülmeye başlanır.
            {
                if (pi.GetValue(copyButton, null) != pi.GetValue(this, null))              //sırayla yeni copy nesnemize atanır.
                {
                    if (pi.CanWrite)
                    {
                        pi.SetValue(copyButton, pi.GetValue(this, null), null);
                    }
                }
            }

            return(copyButton);
        }