public bool BirBirimIlerleyebilirMi(Kare bulunduguKare, Kare gidecegiKare) { bool ilerleyebilirMi = true; Kare k = Oyun.GetInstance().OyunTahtasi.Kareler.Where(i => i.KonumX == gidecegiKare.KonumX && i.KonumY == gidecegiKare.KonumY).FirstOrDefault(); if (k != null && k.UzerindeBulunanTas != null)//gideceği yerde başka biri varsa gidemez { ilerleyebilirMi = false; } else//kendi takım arkadaşı yoksa { //sola ilerlemek istiyorsam if (bulunduguKare.KonumX - gidecegiKare.KonumX == 1 && bulunduguKare.KonumY == gidecegiKare.KonumY) { ilerleyebilirMi = true; } //sağa ilerlemek istiyorsam else if (bulunduguKare.KonumX - gidecegiKare.KonumX == -1 && bulunduguKare.KonumY == gidecegiKare.KonumY) { ilerleyebilirMi = true; } //yukarı ilerlemek istiyorsam else if (bulunduguKare.KonumY - gidecegiKare.KonumY == -1 && bulunduguKare.KonumX == gidecegiKare.KonumX) { ilerleyebilirMi = true; } //aşağı ilerlemek istiyorsam else if (bulunduguKare.KonumY - gidecegiKare.KonumY == 1 && bulunduguKare.KonumX == gidecegiKare.KonumX) { ilerleyebilirMi = true; } //sol üst çapraza ilerlemek istiyorsam else if (bulunduguKare.KonumY - gidecegiKare.KonumY == -1 && bulunduguKare.KonumX - gidecegiKare.KonumX == 1) { ilerleyebilirMi = true; } //sağ üst çapraza ilerlemek istiyorsam else if (bulunduguKare.KonumY - gidecegiKare.KonumY == -1 && bulunduguKare.KonumX - gidecegiKare.KonumX == -1) { ilerleyebilirMi = true; } //sol alt çapraza ilerlemek istiyorsam else if (bulunduguKare.KonumY - gidecegiKare.KonumY == 1 && bulunduguKare.KonumX - gidecegiKare.KonumX == 1) { ilerleyebilirMi = true; } //sağ alt çapraza ilerlemek istiyorsam else if (bulunduguKare.KonumY - gidecegiKare.KonumY == 1 && bulunduguKare.KonumX - gidecegiKare.KonumX == -1) { ilerleyebilirMi = true; } else { ilerleyebilirMi = false; } } return(ilerleyebilirMi); }
public bool YatayDikeyGidebilirMi(Kare bulunduguKare, Kare gidecegiKare) { bool ilerleyebilirMi = true; //gitmek istenen yer yatay veya dikeyde mi if (bulunduguKare.KonumX == gidecegiKare.KonumX || bulunduguKare.KonumY == gidecegiKare.KonumY) { int x = bulunduguKare.KonumX; int y = bulunduguKare.KonumY; while (true) { //yukarı ilerleme isteği if (gidecegiKare.KonumY > bulunduguKare.KonumY) { y++; } //aşağı ilerleme isteği else if (gidecegiKare.KonumY < bulunduguKare.KonumY) { y--; } //sola ilerleme isteği else if (gidecegiKare.KonumX < bulunduguKare.KonumX) { x--; } //sağa ilerleme isteği else if (gidecegiKare.KonumX > bulunduguKare.KonumX) { x++; } //gidilmek istenen kareye gelindiyse if (gidecegiKare.KonumX == x && gidecegiKare.KonumY == y) { Tas gidecegiYerdekiTas = Oyun.GetInstance().OyunTahtasi.Kareler.Where(i => i.KonumX == gidecegiKare.KonumX && i.KonumY == gidecegiKare.KonumY).First().UzerindeBulunanTas; if(gidecegiYerdekiTas!=null)//gideği yerde taş varsa if (bulunduguKare.UzerindeBulunanTas.TasRengi == gidecegiYerdekiTas.TasRengi)//takım arkadaşıysa ilerleyebilirMi = false; break; } else { if (Oyun.GetInstance().OyunTahtasi.Kareler.Where(i => i.KonumX == x && i.KonumY == y).First().UzerindeBulunanTas != null)//yolda taş varsa ilerleyemez { ilerleyebilirMi = false; break; } } } } else { ilerleyebilirMi = false; } return ilerleyebilirMi; }
public virtual bool Ye(Kare kare) { if (this.IlerleyebilirMi(kare))//ilerleyemezse yiyemez. Ancak piyonda farklı dolayısıyla virtual { Oyun.GetInstance().ElenenTaslar.Add(kare.UzerindeBulunanTas); this.BulunduguKare.UzerindeBulunanTas = null; this.BulunduguKare = kare; kare.UzerindeBulunanTas = this; return true; } else return false; }
private List <Kare> KareleriOlustur() { List <Kare> kareler = new List <Kare>(); for (int x = 0; x < 8; x++) { for (int y = 0; y < 8; y++) { Kare kare = new Kare(x, y); kareler.Add(kare); } } return(kareler); }
public override bool Ye(Kare kare) { if (base.ruleManager.PiyonlaYiyebilirMi(this.BulunduguKare, kare)) { Oyun.GetInstance().ElenenTaslar.Add(kare.UzerindeBulunanTas); this.BulunduguKare.UzerindeBulunanTas = null; this.BulunduguKare = kare; kare.UzerindeBulunanTas = this; return true; } else return false; }
public static PictureBox GetPictureBox(FrmMain form,Kare kare) { foreach (var item in form.Controls) { PictureBox pb = item as PictureBox; if (pb != null && pb.Name != "pbTahta") { int x = int.Parse(pb.Name.Substring(2, 1)); int y = int.Parse(pb.Name.Substring(3, 1)); if (kare.KonumX == x && kare.KonumY == y) return pb; } } return null; }
private void btnIlerleYe_Click(object sender, EventArgs e) { if (lbX.SelectedItem == null || lbY.SelectedItem == null) { lblNot.Text = "Gitmek isteğiniz koordinatı seçin"; return; } int istenenX = Helper.GetXCoord(lbX.SelectedItem.ToString()); int istenenY = int.Parse(lbY.SelectedItem.ToString())-1; Kare gidilmekIstenenKare = Helper.GetIstenenKare(istenenX, istenenY); if (seciliKare != null && seciliKare.UzerindeBulunanTas!=null) { bool gidebilirmi = seciliKare.UzerindeBulunanTas.IlerleyebilirMi(gidilmekIstenenKare); if (gidebilirmi) { if (Helper.SahMi(this,lblSira)) { MessageBox.Show("Karşı takım size şah çekmiş bu durumdan kurtulmaya çalışın"); lblNot.Text = "Şahı koruyunn"; return; } } if (gidebilirmi) { PictureBox seciliPb = Helper.GetPictureBox(this, seciliKare); PictureBox istenenKare = Helper.GetPictureBox(this, gidilmekIstenenKare); Image img = seciliPb.Image; istenenKare.Image = img; seciliPb.Image = null; seciliKare.UzerindeBulunanTas.Ilerle(gidilmekIstenenKare); string sira = lblSira.Tag.ToString(); lblSira.Tag =sira=="Beyaz"?"Siyah":"Beyaz"; lblSira.Text = sira=="Beyaz"?"Sıra Siyahlı Oyuncuda":"Sıra Beyazlı Oyuncuda"; } seciliKare = null; if (Helper.SahMi(this,lblSira)) { MessageBox.Show("ŞAH!!!!!!"); lblNot.Text = "ŞAH!!!!"; } } else { lblNot.Text = "Önce hamle yapmak istediğiniz taşı seçin"; } }
public override bool Ye(Kare kare) { if (base.ruleManager.PiyonlaYiyebilirMi(this.BulunduguKare, kare)) { Oyun.GetInstance().ElenenTaslar.Add(kare.UzerindeBulunanTas); this.BulunduguKare.UzerindeBulunanTas = null; this.BulunduguKare = kare; kare.UzerindeBulunanTas = this; return(true); } else { return(false); } }
public virtual bool Ye(Kare kare) { if (this.IlerleyebilirMi(kare))//ilerleyemezse yiyemez. Ancak piyonda farklı dolayısıyla virtual { Oyun.GetInstance().ElenenTaslar.Add(kare.UzerindeBulunanTas); this.BulunduguKare.UzerindeBulunanTas = null; this.BulunduguKare = kare; kare.UzerindeBulunanTas = this; return(true); } else { return(false); } }
public bool Ilerle(Kare gidecegiKare)//Ilerleme kuralı değişiyor sadece ilerlenince yapılacaklar aynı { if (IlerleyebilirMi(gidecegiKare))//ilerleyebileceği bir yere gitmek istiyorsa { if(gidecegiKare.UzerindeBulunanTas!=null) Oyun.GetInstance().ElenenTaslar.Add(gidecegiKare.UzerindeBulunanTas); this.BulunduguKare.UzerindeBulunanTas = null; this.BulunduguKare = gidecegiKare; gidecegiKare.UzerindeBulunanTas = this; return true; } else { return false; } }
public bool PiyonlaYiyebilirMi(Kare bulunduguKare, Kare gidecegiKare) { bool yiyebilirMi = false; Tas gidecegiYerdekiTas = Oyun.GetInstance().OyunTahtasi.Kareler.Where(i => i.KonumX == gidecegiKare.KonumX && i.KonumY == gidecegiKare.KonumY).First().UzerindeBulunanTas; if (gidecegiYerdekiTas != null) //gideceği yerde herhangi başka bir taş varsa { if (bulunduguKare.UzerindeBulunanTas.TasRengi == gidecegiYerdekiTas.TasRengi) //kendi takım arkadaşı varsa yiyemez { yiyebilirMi = false; } else//rakipse { if (bulunduguKare.UzerindeBulunanTas.TasRengi == TakimRengi.Beyaz) { if (bulunduguKare.KonumX - gidecegiKare.KonumX == 1 && gidecegiKare.KonumY - bulunduguKare.KonumY == 1) { yiyebilirMi = true; } if (bulunduguKare.KonumX - gidecegiKare.KonumX == -1 && gidecegiKare.KonumY - bulunduguKare.KonumY == 1) { yiyebilirMi = true; } } else { if (bulunduguKare.KonumX - gidecegiKare.KonumX == -1 && gidecegiKare.KonumY - bulunduguKare.KonumY == -1) { yiyebilirMi = true; } if (bulunduguKare.KonumX - gidecegiKare.KonumX == 1 && gidecegiKare.KonumY - bulunduguKare.KonumY == -1) { yiyebilirMi = true; } } } } else//gideceği yerde taş yoksa yiyemez { yiyebilirMi = false; } return(yiyebilirMi); }
public bool Ilerle(Kare gidecegiKare) //Ilerleme kuralı değişiyor sadece ilerlenince yapılacaklar aynı { if (IlerleyebilirMi(gidecegiKare)) //ilerleyebileceği bir yere gitmek istiyorsa { if (gidecegiKare.UzerindeBulunanTas != null) { Oyun.GetInstance().ElenenTaslar.Add(gidecegiKare.UzerindeBulunanTas); } this.BulunduguKare.UzerindeBulunanTas = null; this.BulunduguKare = gidecegiKare; gidecegiKare.UzerindeBulunanTas = this; return(true); } else { return(false); } }
private static bool LGiderMi(Kare bulunduguKare, Kare gidecegiKare, bool ilerleyebilirMi) { int[] xLer = { bulunduguKare.KonumX + 1, bulunduguKare.KonumX + 2, bulunduguKare.KonumX + 2, bulunduguKare.KonumX + 1, bulunduguKare.KonumX - 1, bulunduguKare.KonumX - 2, bulunduguKare.KonumX - 2, bulunduguKare.KonumX - 1 }; int[] yLer = { bulunduguKare.KonumY - 2, bulunduguKare.KonumY - 1, bulunduguKare.KonumY + 1, bulunduguKare.KonumY + 2, bulunduguKare.KonumY + 2, bulunduguKare.KonumY + 1, bulunduguKare.KonumY - 1, bulunduguKare.KonumY - 2 }; for (int i = 0; i < 8; i++) { if (gidecegiKare.KonumX == xLer[i] && gidecegiKare.KonumY == yLer[i]) { ilerleyebilirMi = true; break; } else { ilerleyebilirMi = false; } } return(ilerleyebilirMi); }
public bool LSeklindeGidebilirMi(Kare bulunduguKare, Kare gidecegiKare) { bool ilerleyebilirMi = true; Tas gidecegiYerdekiTas = Oyun.GetInstance().OyunTahtasi.Kareler.Where(i => i.KonumX == gidecegiKare.KonumX && i.KonumY == gidecegiKare.KonumY).First().UzerindeBulunanTas; if (gidecegiYerdekiTas != null) //gideceği yerde herhangi başka bir taş varsa { if (bulunduguKare.UzerindeBulunanTas.TasRengi == gidecegiYerdekiTas.TasRengi) //kendi takım arkadaşı varsa gidemez { ilerleyebilirMi = false; } else//rakip takım varsa { ilerleyebilirMi = LGiderMi(bulunduguKare, gidecegiKare, ilerleyebilirMi); } } else//taş yoksa { ilerleyebilirMi = LGiderMi(bulunduguKare, gidecegiKare, ilerleyebilirMi); } return(ilerleyebilirMi); }
public bool BirBirimIlerleyebilirMi(Kare bulunduguKare, Kare gidecegiKare) { bool ilerleyebilirMi = true; Kare k=Oyun.GetInstance().OyunTahtasi.Kareler.Where(i => i.KonumX == gidecegiKare.KonumX && i.KonumY == gidecegiKare.KonumY).FirstOrDefault(); if (k!=null && k.UzerindeBulunanTas != null)//gideceği yerde başka biri varsa gidemez { ilerleyebilirMi = false; } else//kendi takım arkadaşı yoksa { //sola ilerlemek istiyorsam if (bulunduguKare.KonumX - gidecegiKare.KonumX == 1 && bulunduguKare.KonumY == gidecegiKare.KonumY) { ilerleyebilirMi = true; } //sağa ilerlemek istiyorsam else if (bulunduguKare.KonumX - gidecegiKare.KonumX == -1 && bulunduguKare.KonumY == gidecegiKare.KonumY) { ilerleyebilirMi = true; } //yukarı ilerlemek istiyorsam else if (bulunduguKare.KonumY - gidecegiKare.KonumY == -1 && bulunduguKare.KonumX == gidecegiKare.KonumX) { ilerleyebilirMi = true; } //aşağı ilerlemek istiyorsam else if (bulunduguKare.KonumY - gidecegiKare.KonumY == 1 && bulunduguKare.KonumX == gidecegiKare.KonumX) { ilerleyebilirMi = true; } //sol üst çapraza ilerlemek istiyorsam else if (bulunduguKare.KonumY - gidecegiKare.KonumY == -1 && bulunduguKare.KonumX - gidecegiKare.KonumX == 1) { ilerleyebilirMi = true; } //sağ üst çapraza ilerlemek istiyorsam else if (bulunduguKare.KonumY - gidecegiKare.KonumY == -1 && bulunduguKare.KonumX - gidecegiKare.KonumX == -1) { ilerleyebilirMi = true; } //sol alt çapraza ilerlemek istiyorsam else if (bulunduguKare.KonumY - gidecegiKare.KonumY == 1 && bulunduguKare.KonumX - gidecegiKare.KonumX == 1) { ilerleyebilirMi = true; } //sağ alt çapraza ilerlemek istiyorsam else if (bulunduguKare.KonumY - gidecegiKare.KonumY == 1 && bulunduguKare.KonumX - gidecegiKare.KonumX == -1) { ilerleyebilirMi = true; } else { ilerleyebilirMi = false; } } return ilerleyebilirMi; }
public bool TekBirimDikeyGidebilirMi(Kare bulunduguKare, Kare gidecegiKare) { bool ilerleyebilirMi = true; if (Oyun.GetInstance().OyunTahtasi.Kareler.Where(i => i.KonumX == gidecegiKare.KonumX && i.KonumY == gidecegiKare.KonumY).First().UzerindeBulunanTas != null)//gideceği yerde herhangi başka bir taş varsa gidemez { ilerleyebilirMi = false; } else//gidecegi yer boştaysa { if (gidecegiKare.KonumX == bulunduguKare.KonumX)//aynı x ekseni üzerinde olacak { if (bulunduguKare.UzerindeBulunanTas.TasRengi == TakimRengi.Beyaz)//beyaz piyon ise { if (bulunduguKare.KonumY == 1 && gidecegiKare.KonumY - bulunduguKare.KonumY <= 2)//yani ilk noktadaysa ve sadece tek veya çift atış yukarı çıkmaya çalışıyorsa { if (gidecegiKare.KonumY - bulunduguKare.KonumY == 2 && Oyun.GetInstance().OyunTahtasi.Kareler.Where(i => i.KonumX == gidecegiKare.KonumX && i.KonumY - 1 == gidecegiKare.KonumY).First().UzerindeBulunanTas==null)//çift atış çıkıyorsa ve yol müsait se { ilerleyebilirMi = true; } else if (gidecegiKare.KonumY - bulunduguKare.KonumY == 1)//tek atış çıkıyorsa { ilerleyebilirMi = true; } } else if (gidecegiKare.KonumY - bulunduguKare.KonumY == 1)//ilk noktada değilse { ilerleyebilirMi = true; } else { ilerleyebilirMi = false; } } else//siyah piyon ise { if (bulunduguKare.KonumY == 6 && bulunduguKare.KonumY-gidecegiKare.KonumY <= 2)//yani ilk noktadaysa ve sadece tek veya çift atış yukarı çıkmaya çalışıyorsa { if (bulunduguKare.KonumY - gidecegiKare.KonumY == 2 && Oyun.GetInstance().OyunTahtasi.Kareler.Where(i => i.KonumX == gidecegiKare.KonumX && i.KonumY + 1 == gidecegiKare.KonumY).First().UzerindeBulunanTas == null)//çift atış çıkıyorsa ve yol müsait se { ilerleyebilirMi = true; } else if (bulunduguKare.KonumY - gidecegiKare.KonumY == 1) { ilerleyebilirMi = true; } } else if (bulunduguKare.KonumY - gidecegiKare.KonumY == 1)//ilk noktada değilse { ilerleyebilirMi = true; } else { ilerleyebilirMi = false; } } } else//aynı x ekseni üzernde değilse { ilerleyebilirMi = false; } } return ilerleyebilirMi; }
public override bool IlerleyebilirMi(Kare gidecegiKare) { return base.ruleManager.LSeklindeGidebilirMi(this.BulunduguKare, gidecegiKare); }
public bool CaprazIlerleyebilirMi(Kare bulunduguKare, Kare gidecegiKare) { bool ilerleyebilirMi = true; //x ve y koordinatları farkı eşit mi yani çapraz da mı if (Math.Abs(bulunduguKare.KonumX - gidecegiKare.KonumX) == Math.Abs(bulunduguKare.KonumY - gidecegiKare.KonumY)) { int x = bulunduguKare.KonumX; int y = bulunduguKare.KonumY; while (true) { //yukarı sol çapraza ilerleme isteği mi if (gidecegiKare.KonumY > bulunduguKare.KonumY && gidecegiKare.KonumX < bulunduguKare.KonumX) { x--; y++; } //yukarı sağ çapraza ilerleme isteği mi else if (gidecegiKare.KonumY > bulunduguKare.KonumY && gidecegiKare.KonumX > bulunduguKare.KonumX) { x++; y++; } //aşağı sağ çapraza ilerleme isteği mi else if (gidecegiKare.KonumY < bulunduguKare.KonumY && gidecegiKare.KonumX > bulunduguKare.KonumX) { x++; y--; } //aşağı sol çapraza ilerleme isteği mi else if (gidecegiKare.KonumY < bulunduguKare.KonumY && gidecegiKare.KonumX < bulunduguKare.KonumX) { x--; y--; } //gidilmek istenen kareye gelindiyse if (gidecegiKare.KonumX == x && gidecegiKare.KonumY == y) { Tas gidecegiYerdekiTas = Oyun.GetInstance().OyunTahtasi.Kareler.Where(i => i.KonumX == gidecegiKare.KonumX && i.KonumY == gidecegiKare.KonumY).First().UzerindeBulunanTas; if(gidecegiYerdekiTas!=null) if (bulunduguKare.UzerindeBulunanTas.TasRengi == gidecegiYerdekiTas.TasRengi)//takım arkadaşıysa ilerleyebilirMi = false; break; } else { if (Oyun.GetInstance().OyunTahtasi.Kareler.Where(i => i.KonumX == x && i.KonumY == y).First().UzerindeBulunanTas != null)//yolda taş varsa ilerleyemez { ilerleyebilirMi = false; break; } } } } else//gidilmek istenen kısım çaprazda değilse { ilerleyebilirMi = false; } return ilerleyebilirMi; }
public Tas(TakimRengi tasRengi, Kare bulunduguKare) { this.tasRengi = tasRengi; this.bulunduguKare = bulunduguKare; this.ruleManager = new BusinessRule(); }
private void BeyazTaslariYerlestir(List <Kare> kareler) { #region Beyaz Piyonlar for (int x = 0; x < 8; x++) { //y ekseni hep 1 Kare k = kareler.Where(i => i.KonumY == 1 && i.KonumX == x).First(); Piyon piyon = new Piyon(TakimRengi.Beyaz, k); k.UzerindeBulunanTas = piyon; } #endregion #region Beyaz Kareler Kare solkalekare = kareler.Where(i => i.KonumY == 0 && i.KonumX == 0).First(); Kale solkale = new Kale(TakimRengi.Beyaz, solkalekare); solkalekare.UzerindeBulunanTas = solkale; Kare sagkalekare = kareler.Where(i => i.KonumY == 0 && i.KonumX == 7).First(); Kale sagkale = new Kale(TakimRengi.Beyaz, sagkalekare); sagkalekare.UzerindeBulunanTas = sagkale; #endregion #region Beyaz Atlar Kare solatkare = kareler.Where(i => i.KonumY == 0 && i.KonumX == 1).First(); At solAt = new At(TakimRengi.Beyaz, solatkare); solatkare.UzerindeBulunanTas = solAt; Kare sagatkare = kareler.Where(i => i.KonumY == 0 && i.KonumX == 6).First(); At sagAt = new At(TakimRengi.Beyaz, sagatkare); sagatkare.UzerindeBulunanTas = sagAt; #endregion #region Beyaz Filler Kare solfilkare = kareler.Where(i => i.KonumY == 0 && i.KonumX == 2).First(); Fil solFil = new Fil(TakimRengi.Beyaz, solfilkare); solfilkare.UzerindeBulunanTas = solFil; Kare sagfilkare = kareler.Where(i => i.KonumY == 0 && i.KonumX == 5).First(); Fil sagFil = new Fil(TakimRengi.Beyaz, sagfilkare); sagfilkare.UzerindeBulunanTas = sagFil; #endregion #region Beyaz Vezir Kare vezirkare = kareler.Where(i => i.KonumY == 0 && i.KonumX == 3).First(); Vezir vezir = new Vezir(TakimRengi.Beyaz, vezirkare); vezirkare.UzerindeBulunanTas = vezir; #endregion #region Beyaz Şah Kare sahkare = kareler.Where(i => i.KonumY == 0 && i.KonumX == 4).First(); Sah sah = new Sah(TakimRengi.Beyaz, sahkare); sahkare.UzerindeBulunanTas = sah; #endregion }
public bool YatayDikeyGidebilirMi(Kare bulunduguKare, Kare gidecegiKare) { bool ilerleyebilirMi = true; //gitmek istenen yer yatay veya dikeyde mi if (bulunduguKare.KonumX == gidecegiKare.KonumX || bulunduguKare.KonumY == gidecegiKare.KonumY) { int x = bulunduguKare.KonumX; int y = bulunduguKare.KonumY; while (true) { //yukarı ilerleme isteği if (gidecegiKare.KonumY > bulunduguKare.KonumY) { y++; } //aşağı ilerleme isteği else if (gidecegiKare.KonumY < bulunduguKare.KonumY) { y--; } //sola ilerleme isteği else if (gidecegiKare.KonumX < bulunduguKare.KonumX) { x--; } //sağa ilerleme isteği else if (gidecegiKare.KonumX > bulunduguKare.KonumX) { x++; } //gidilmek istenen kareye gelindiyse if (gidecegiKare.KonumX == x && gidecegiKare.KonumY == y) { Tas gidecegiYerdekiTas = Oyun.GetInstance().OyunTahtasi.Kareler.Where(i => i.KonumX == gidecegiKare.KonumX && i.KonumY == gidecegiKare.KonumY).First().UzerindeBulunanTas; if (gidecegiYerdekiTas != null) //gideği yerde taş varsa { if (bulunduguKare.UzerindeBulunanTas.TasRengi == gidecegiYerdekiTas.TasRengi) //takım arkadaşıysa { ilerleyebilirMi = false; } } break; } else { if (Oyun.GetInstance().OyunTahtasi.Kareler.Where(i => i.KonumX == x && i.KonumY == y).First().UzerindeBulunanTas != null)//yolda taş varsa ilerleyemez { ilerleyebilirMi = false; break; } } } } else { ilerleyebilirMi = false; } return(ilerleyebilirMi); }
public bool PiyonlaYiyebilirMi(Kare bulunduguKare, Kare gidecegiKare) { bool yiyebilirMi = false; Tas gidecegiYerdekiTas = Oyun.GetInstance().OyunTahtasi.Kareler.Where(i => i.KonumX == gidecegiKare.KonumX && i.KonumY == gidecegiKare.KonumY).First().UzerindeBulunanTas; if (gidecegiYerdekiTas != null)//gideceği yerde herhangi başka bir taş varsa { if (bulunduguKare.UzerindeBulunanTas.TasRengi == gidecegiYerdekiTas.TasRengi)//kendi takım arkadaşı varsa yiyemez { yiyebilirMi = false; } else//rakipse { if (bulunduguKare.UzerindeBulunanTas.TasRengi == TakimRengi.Beyaz) { if (bulunduguKare.KonumX - gidecegiKare.KonumX == 1 && gidecegiKare.KonumY - bulunduguKare.KonumY == 1) yiyebilirMi = true; if (bulunduguKare.KonumX - gidecegiKare.KonumX == -1 && gidecegiKare.KonumY - bulunduguKare.KonumY == 1) yiyebilirMi = true; } else { if (bulunduguKare.KonumX - gidecegiKare.KonumX == -1 && gidecegiKare.KonumY - bulunduguKare.KonumY == -1) yiyebilirMi = true; if (bulunduguKare.KonumX - gidecegiKare.KonumX == 1 && gidecegiKare.KonumY - bulunduguKare.KonumY == -1) yiyebilirMi = true; } } } else//gideceği yerde taş yoksa yiyemez { yiyebilirMi = false; } return yiyebilirMi; }
public Kale(TakimRengi tasRengi, Kare bulunduguKare) : base(tasRengi, bulunduguKare) { }
private void pb_Click(object sender, EventArgs e) { Helper.BoyalariKaldir(this); PictureBox pb = sender as PictureBox; if (pb != null) { seciliKare = (Kare)pb.Tag; if (seciliKare.UzerindeBulunanTas != null) { string text = Helper.GetXCoordinatByKare(this) + " - "+(seciliKare.KonumY + 1).ToString(); if ((string.Equals(lblSira.Tag, "Beyaz") && seciliKare.UzerindeBulunanTas.TasRengi == TakimRengi.Beyaz) || (string.Equals(lblSira.Tag, "Siyah") && seciliKare.UzerindeBulunanTas.TasRengi == TakimRengi.Siyah) ) { lblSeciliKare.Text = text; Helper.GidebilecegiYerleriBoya(this); } else { lblSeciliKare.Text = "Karşı takımın taşını seçemezsiniz!!"; } } else { lblSeciliKare.Text = "Seçtiğiniz karede taş yok"; } } }
public Vezir(TakimRengi tasRengi, Kare bulunduguKare) : base(tasRengi, bulunduguKare) { }
public override bool IlerleyebilirMi(Kare gidecegiKare) { return base.ruleManager.YatayDikeyGidebilirMi(this.BulunduguKare, gidecegiKare); }
public abstract bool IlerleyebilirMi(Kare gidecegiKare);
public bool LSeklindeGidebilirMi(Kare bulunduguKare, Kare gidecegiKare) { bool ilerleyebilirMi = true; Tas gidecegiYerdekiTas = Oyun.GetInstance().OyunTahtasi.Kareler.Where(i => i.KonumX == gidecegiKare.KonumX && i.KonumY == gidecegiKare.KonumY).First().UzerindeBulunanTas; if (gidecegiYerdekiTas != null)//gideceği yerde herhangi başka bir taş varsa { if (bulunduguKare.UzerindeBulunanTas.TasRengi == gidecegiYerdekiTas.TasRengi)//kendi takım arkadaşı varsa gidemez { ilerleyebilirMi = false; } else//rakip takım varsa { ilerleyebilirMi = LGiderMi(bulunduguKare, gidecegiKare, ilerleyebilirMi); } } else//taş yoksa { ilerleyebilirMi = LGiderMi(bulunduguKare, gidecegiKare, ilerleyebilirMi); } return ilerleyebilirMi; }
private List<Kare> KareleriOlustur() { List<Kare> kareler = new List<Kare>(); for (int x = 0; x < 8; x++) { for (int y = 0; y < 8; y++) { Kare kare = new Kare(x, y); kareler.Add(kare); } } return kareler; }
private static bool LGiderMi(Kare bulunduguKare, Kare gidecegiKare, bool ilerleyebilirMi) { int[] xLer = { bulunduguKare.KonumX+1, bulunduguKare.KonumX+2, bulunduguKare.KonumX+2, bulunduguKare.KonumX+1, bulunduguKare.KonumX-1, bulunduguKare.KonumX-2, bulunduguKare.KonumX-2, bulunduguKare.KonumX-1 }; int[] yLer = { bulunduguKare.KonumY-2, bulunduguKare.KonumY-1, bulunduguKare.KonumY+1, bulunduguKare.KonumY+2, bulunduguKare.KonumY+2, bulunduguKare.KonumY+1, bulunduguKare.KonumY-1, bulunduguKare.KonumY-2 }; for (int i = 0; i < 8; i++) { if (gidecegiKare.KonumX == xLer[i] && gidecegiKare.KonumY == yLer[i]) { ilerleyebilirMi = true; break; } else { ilerleyebilirMi = false; } } return ilerleyebilirMi; }
public override bool IlerleyebilirMi(Kare gidecegiKare) { return(base.ruleManager.TekBirimDikeyGidebilirMi(this.BulunduguKare, gidecegiKare) || base.ruleManager.PiyonlaYiyebilirMi(this.BulunduguKare, gidecegiKare)); }
public bool TekBirimDikeyGidebilirMi(Kare bulunduguKare, Kare gidecegiKare) { bool ilerleyebilirMi = true; if (Oyun.GetInstance().OyunTahtasi.Kareler.Where(i => i.KonumX == gidecegiKare.KonumX && i.KonumY == gidecegiKare.KonumY).First().UzerindeBulunanTas != null)//gideceği yerde herhangi başka bir taş varsa gidemez { ilerleyebilirMi = false; } else//gidecegi yer boştaysa { if (gidecegiKare.KonumX == bulunduguKare.KonumX)//aynı x ekseni üzerinde olacak { if (bulunduguKare.UzerindeBulunanTas.TasRengi == TakimRengi.Beyaz) //beyaz piyon ise { if (bulunduguKare.KonumY == 1 && gidecegiKare.KonumY - bulunduguKare.KonumY <= 2) //yani ilk noktadaysa ve sadece tek veya çift atış yukarı çıkmaya çalışıyorsa { if (gidecegiKare.KonumY - bulunduguKare.KonumY == 2 && Oyun.GetInstance().OyunTahtasi.Kareler.Where(i => i.KonumX == gidecegiKare.KonumX && i.KonumY - 1 == gidecegiKare.KonumY).First().UzerindeBulunanTas == null) //çift atış çıkıyorsa ve yol müsait se { ilerleyebilirMi = true; } else if (gidecegiKare.KonumY - bulunduguKare.KonumY == 1)//tek atış çıkıyorsa { ilerleyebilirMi = true; } } else if (gidecegiKare.KonumY - bulunduguKare.KonumY == 1)//ilk noktada değilse { ilerleyebilirMi = true; } else { ilerleyebilirMi = false; } } else//siyah piyon ise { if (bulunduguKare.KonumY == 6 && bulunduguKare.KonumY - gidecegiKare.KonumY <= 2)//yani ilk noktadaysa ve sadece tek veya çift atış yukarı çıkmaya çalışıyorsa { if (bulunduguKare.KonumY - gidecegiKare.KonumY == 2 && Oyun.GetInstance().OyunTahtasi.Kareler.Where(i => i.KonumX == gidecegiKare.KonumX && i.KonumY + 1 == gidecegiKare.KonumY).First().UzerindeBulunanTas == null)//çift atış çıkıyorsa ve yol müsait se { ilerleyebilirMi = true; } else if (bulunduguKare.KonumY - gidecegiKare.KonumY == 1) { ilerleyebilirMi = true; } } else if (bulunduguKare.KonumY - gidecegiKare.KonumY == 1)//ilk noktada değilse { ilerleyebilirMi = true; } else { ilerleyebilirMi = false; } } } else//aynı x ekseni üzernde değilse { ilerleyebilirMi = false; } } return(ilerleyebilirMi); }
public Piyon(TakimRengi tasRengi, Kare bulunduguKare) : base(tasRengi, bulunduguKare) { }
public Piyon(TakimRengi tasRengi,Kare bulunduguKare) :base(tasRengi,bulunduguKare) { }
public Tas(TakimRengi tasRengi,Kare bulunduguKare) { this.tasRengi = tasRengi; this.bulunduguKare = bulunduguKare; this.ruleManager = new BusinessRule(); }
public override bool IlerleyebilirMi(Kare gidecegiKare) { return base.ruleManager.TekBirimDikeyGidebilirMi(this.BulunduguKare, gidecegiKare) || base.ruleManager.PiyonlaYiyebilirMi(this.BulunduguKare,gidecegiKare); }
public override bool IlerleyebilirMi(Kare gidecegiKare) { return(base.ruleManager.YatayDikeyGidebilirMi(this.BulunduguKare, gidecegiKare)); }
public bool CaprazIlerleyebilirMi(Kare bulunduguKare, Kare gidecegiKare) { bool ilerleyebilirMi = true; //x ve y koordinatları farkı eşit mi yani çapraz da mı if (Math.Abs(bulunduguKare.KonumX - gidecegiKare.KonumX) == Math.Abs(bulunduguKare.KonumY - gidecegiKare.KonumY)) { int x = bulunduguKare.KonumX; int y = bulunduguKare.KonumY; while (true) { //yukarı sol çapraza ilerleme isteği mi if (gidecegiKare.KonumY > bulunduguKare.KonumY && gidecegiKare.KonumX < bulunduguKare.KonumX) { x--; y++; } //yukarı sağ çapraza ilerleme isteği mi else if (gidecegiKare.KonumY > bulunduguKare.KonumY && gidecegiKare.KonumX > bulunduguKare.KonumX) { x++; y++; } //aşağı sağ çapraza ilerleme isteği mi else if (gidecegiKare.KonumY < bulunduguKare.KonumY && gidecegiKare.KonumX > bulunduguKare.KonumX) { x++; y--; } //aşağı sol çapraza ilerleme isteği mi else if (gidecegiKare.KonumY < bulunduguKare.KonumY && gidecegiKare.KonumX < bulunduguKare.KonumX) { x--; y--; } //gidilmek istenen kareye gelindiyse if (gidecegiKare.KonumX == x && gidecegiKare.KonumY == y) { Tas gidecegiYerdekiTas = Oyun.GetInstance().OyunTahtasi.Kareler.Where(i => i.KonumX == gidecegiKare.KonumX && i.KonumY == gidecegiKare.KonumY).First().UzerindeBulunanTas; if (gidecegiYerdekiTas != null) { if (bulunduguKare.UzerindeBulunanTas.TasRengi == gidecegiYerdekiTas.TasRengi)//takım arkadaşıysa { ilerleyebilirMi = false; } } break; } else { if (Oyun.GetInstance().OyunTahtasi.Kareler.Where(i => i.KonumX == x && i.KonumY == y).First().UzerindeBulunanTas != null)//yolda taş varsa ilerleyemez { ilerleyebilirMi = false; break; } } } } else//gidilmek istenen kısım çaprazda değilse { ilerleyebilirMi = false; } return(ilerleyebilirMi); }