void properti(Taslar t, Panel p)//taşlarımıza hareket kabiliyeti ekliyoruz { t.Left = p.Left; t.MouseDown += new MouseEventHandler(Mouse_Down); t.MouseMove += new MouseEventHandler(Mouse_Move); t.MouseUp += new MouseEventHandler(Mouse_Up); }
void Mouse_Down(object sender, MouseEventArgs e)// mouse tıklanma anı { secili_tas = (Taslar)sender as Taslar; if (oyuncu1 && secili_tas.GetType() != typeof(SiyahTas))// siyahın sırası ise sadece siyah taşlar hareket eder { return; } else if (oyuncu2 && secili_tas.GetType() != typeof(BeyazTas))// beyazın sırası ise sadece beyaz hareket eder { return; } suruklenme_durumu = true; secili_tas.Cursor = Cursors.SizeAll; position = e.Location; Rectangle mouse = new Rectangle(secili_tas.Left, secili_tas.Top, 2, 2); // imlec için 2*2 kare oluşturduk for (int i = 0; i < 24; i++) // hangi panele tıkladığımızı kontrol edip, seçtiğimiz taşı listeden çıkarıyoruz { Rectangle panel = new Rectangle(paneller[i].Left, paneller[i].Top, paneller[i].Width, paneller[i].Height); // panel için dikdörtgen oluşturduk if (mouse.IntersectsWith(panel)) // mouse imleci ile tüm panellerin kesişimlerini kontrol ediyoruz, kesişiyor ise true değer döner { ilki = i; kolonlar[i].cikar(secili_tas); // taşı listeden çıkardık tasoncekikonum = kolonlar[i]; // önceki konumunu lazım olabileceğinden saklıyoruz tasoncekiko = paneller[i]; // aynı şekilde önceki konumunu saklıyoruz break; // for dan çıkıyoruz } else if (i == 23) // 24 panelden hiç biri ile kesişim yok ise, kırılan taşların bulunduğu panel ile kesişimi kontrol edeceğiz { Rectangle panelb = new Rectangle(bpanel[0].Left, bpanel[0].Top, bpanel[0].Width, bpanel[0].Height); //kırık taşları tuttuğumuz Rectangle panels = new Rectangle(spanel[0].Left, spanel[0].Top, spanel[0].Width, spanel[0].Height); //paneller için dikdörtgernler oluşturduk if (mouse.IntersectsWith(panelb)) // kesişimlerini kontrol ettik { ilki = -1; bkolon[0].cikar(secili_tas); // kırık siyah taşları tuttuğumuz panel ile kesişim var ise, taşı listeden çıkarıyoruz tasoncekikonum = bkolon[0]; // önceki konumu yine saklıyoruz tasoncekiko = bpanel[0]; break; } else if (mouse.IntersectsWith(panels)) { ilki = 24; skolon[0].cikar(secili_tas); // aynı şekilde kırık beyaz taşları ile kesişim var ise taşı isteden çıkarıyoruz tasoncekikonum = skolon[0]; // önceki konum yine saklıyoruz tasoncekiko = spanel[0]; break; } } } }
public Boolean tasGonder(Taslar tas, int satir, kolon onceki, kolon skolon, kolon bkolon) { // listeye taş eklemeyi kontrol etme metodu, uygunluğuna göre farklı şekilde listeye taş ekleniyor veya çıkarılıyor if (list.Count == 1) // taşı yerleştirmek istediğimiz listede sadece 1 taş var ise { if (list[0].GetType() != tas.GetType()) // ve o taş seçtiğimiz taş ile farklı tipte ise(beyaz ve siyah) { if (list[0].GetType() == typeof(BeyazTas)) // listedeki 1 tek taş olan taş beyaz ise { list[0].Top = 250; //taşın konumunu değiştiriyoruz list[0].Left = 382; // list.Add(tas); // seçili taşı istediğimiz isteye ekiyoruz bkolon.list.Add(list[0]); // tek olan taşı beyaz kırık taşlar listesine ekliyoruz list.Remove(list[0]); } else if (list[0].GetType() == typeof(SiyahTas)) // lsitedeki tek taş siyah ise { list[0].Top = 250; //taşın konumunu değiştiriyoruz list[0].Left = 511; // list.Add(tas); // seçili taşı istediğimiz isteye ekiyoruz skolon.list.Add(list[0]); // tek olan taşı siyah kırık taşlar listesine ekliyoruz list.Remove(list[0]); } //list.Remove(list[0]);// tek olan taşı eski listesinden siliyoruz return(true);// taş kırma işemini yaptıktan sonra, bu metoddan çıkıyoruz, ve seçii taşı yerleştirdiğimizi göstermek için geriye true değeri dönderiyoruz } } else { if (list.Count > 0 && list[0].GetType() != tas.GetType()) { // taşı yerleştirmek istediğimiz listede 1 den fazla taş var ise ve seçili taş ile farklı tipte ise onceki.ekle(tas); // taşın buraya yerleştiremeyiz, bu yüzden taşı eski konumuna geri yerleştiriyoruz return(false); // taşın yeri değişmediği ve bunu göstermek için geriye false değer döndürüyoruz } } ekle(tas); // bunların haricinde seçili taşı istediğimiz yere yerleştiriyoruz return(true); // yerleştirdiğimiz için geriye true değer dönderiyoruz }
public void cikar(Taslar tas)// listeden taş çıkarma metodu { list.Remove(tas); }
public List <Taslar> list = new List <Taslar>(); // listemiz, her nesne için farklı bir liste public void ekle(Taslar tas) // listeye taş ekleme { list.Add(tas); }