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; } }
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); }