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 }
private void Form1_Load(object sender, EventArgs e) { paneller = new Panel[24];// paneller ve kolonlar dizilerimizi oluşturduk kolonlar = new kolon[24]; bpanel = new Panel[2]; spanel = new Panel[2]; bkolon = new kolon[2]; skolon = new kolon[2]; Panel p1, pb, ps; suruklenme_durumu = false; int px = 47; int px2 = 846; for (int i = 0; i < 2; i++)// boyutları ve konumları { if (i == 0) { bkolon[i] = new kolon(); // kolon oluşturduk pb = new Panel(); // panel oluşturduk pb.Width = 40; pb.Height = 40; pb.Top = 250; pb.Left = 382; bpanel[i] = pb; skolon[i] = new kolon(); ps = new Panel(); ps.Width = 40; ps.Height = 40; ps.Top = 250; ps.Left = 511; spanel[i] = ps; } else { bkolon[i] = new kolon(); pb = new Panel(); pb.Width = 40; pb.Height = 40; pb.Top = 250; pb.Left = 47; bpanel[i] = pb; skolon[i] = new kolon(); ps = new Panel(); ps.Width = 40; ps.Height = 40; ps.Top = 250; ps.Left = 846; spanel[i] = ps; } } for (int i = 0; i < 24; i++) { kolonlar[i] = new kolon(); } for (int i = 0; i < 24; i++) { if (i < 12) { if (i == 6) { px2 -= 62; } p1 = new Panel(); p1.Width = 60; p1.Height = 200; p1.Left = px2; p1.Top = 327; paneller[i] = p1; px2 -= 67; } else { if (i == 18) { px += 62; } p1 = new Panel(); p1.Width = 60; p1.Height = 200; p1.Left = px; p1.Top = 20; paneller[i] = p1; px += 67; } } for (int i = 0; i < 5; i++)//Taşlarımızı oluşturuyoruz ve listemize ekliyoruz { Taslar tas; tas = new SiyahTas();// tas oluşturdum tas.Top = i * 40; properti(tas, paneller[12]); kolonlar[12].ekle(tas); } for (int i = 0; i < 3; i++) { Taslar tas; tas = new BeyazTas(); tas.Top = i * 40; properti(tas, paneller[16]); kolonlar[16].ekle(tas); } for (int i = 0; i < 5; i++) { Taslar tas; tas = new BeyazTas(); tas.Top = i * 40; properti(tas, paneller[18]); kolonlar[18].ekle(tas); } for (int i = 0; i < 2; i++) { Taslar tas; tas = new SiyahTas(); tas.Top = i * 40; properti(tas, paneller[23]); kolonlar[23].ekle(tas); } for (int i = 0; i < 5; i++) { Taslar tas; tas = new BeyazTas(); tas.Top = paneller[11].Top + paneller[11].Height - i * 40; properti(tas, paneller[11]); kolonlar[11].ekle(tas); } for (int i = 0; i < 3; i++) { Taslar tas; tas = new SiyahTas(); tas.Top = paneller[7].Top + paneller[7].Height - i * 40; properti(tas, paneller[7]); kolonlar[7].ekle(tas); } for (int i = 0; i < 5; i++) { Taslar tas; tas = new SiyahTas(); tas.Top = paneller[5].Top + paneller[5].Height - i * 40; properti(tas, paneller[5]); kolonlar[5].ekle(tas); } for (int i = 0; i < 2; i++) { Taslar tas; tas = new BeyazTas(); tas.Top = paneller[0].Top + paneller[0].Height - i * 40; properti(tas, paneller[0]); kolonlar[0].ekle(tas); } for (int i = 0; i < 24; i++)// taşlarımızı zemine ekliyoruz { int top = 20; if (i < 12) { top = 490; } for (int k = 0; k < kolonlar[i].list.Count; k++) { kolonlar[i].list[k].Top = top; if (k < 4) { if (i < 12) { top -= 40; } else { top += 40; } } zemin.Controls.Add(kolonlar[i].list[k]); } } }