示例#1
0
        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);
        }
示例#2
0
        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;
        }
示例#3
0
 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;
 }
示例#4
0
        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);
        }
示例#5
0
        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;
        }
示例#6
0
 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;
 }
示例#7
0
        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";
            }
        }
示例#8
0
        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);
            }
        }
示例#9
0
        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);
            }
        }
示例#10
0
 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;
     }
 }
示例#11
0
        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);
        }
示例#12
0
        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);
            }
        }
示例#13
0
        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);
        }
示例#14
0
        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);
        }
示例#15
0
 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;
 }
示例#16
0
 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;
 }
示例#17
0
 public override bool IlerleyebilirMi(Kare gidecegiKare)
 {
     return base.ruleManager.LSeklindeGidebilirMi(this.BulunduguKare, gidecegiKare);
 }
示例#18
0
        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;
        }
示例#19
0
 public Tas(TakimRengi tasRengi, Kare bulunduguKare)
 {
     this.tasRengi      = tasRengi;
     this.bulunduguKare = bulunduguKare;
     this.ruleManager   = new BusinessRule();
 }
示例#20
0
        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
        }
示例#21
0
        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);
        }
示例#22
0
        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;
        }
示例#23
0
 public Kale(TakimRengi tasRengi, Kare bulunduguKare)
     : base(tasRengi, bulunduguKare)
 {
 }
示例#24
0
 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";
         }
     }
 }
示例#25
0
        public Vezir(TakimRengi tasRengi, Kare bulunduguKare)
            : base(tasRengi, bulunduguKare)
        {

        }
示例#26
0
 public override bool IlerleyebilirMi(Kare gidecegiKare)
 {
     return base.ruleManager.YatayDikeyGidebilirMi(this.BulunduguKare, gidecegiKare);
 }
示例#27
0
 public abstract bool IlerleyebilirMi(Kare gidecegiKare);
示例#28
0
 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;
 }
示例#29
0
 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;
 }
示例#30
0
        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;
        }
示例#31
0
 public override bool IlerleyebilirMi(Kare gidecegiKare)
 {
     return(base.ruleManager.TekBirimDikeyGidebilirMi(this.BulunduguKare, gidecegiKare) ||
            base.ruleManager.PiyonlaYiyebilirMi(this.BulunduguKare, gidecegiKare));
 }
示例#32
0
        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);
        }
示例#33
0
 public Vezir(TakimRengi tasRengi, Kare bulunduguKare)
     : base(tasRengi, bulunduguKare)
 {
 }
示例#34
0
        public Kale(TakimRengi tasRengi, Kare bulunduguKare)
            : base(tasRengi, bulunduguKare)
        {

        }
示例#35
0
 public Piyon(TakimRengi tasRengi, Kare bulunduguKare)
     : base(tasRengi, bulunduguKare)
 {
 }
示例#36
0
        public Piyon(TakimRengi tasRengi,Kare bulunduguKare)
            :base(tasRengi,bulunduguKare)
        {

        }
示例#37
0
 public Tas(TakimRengi tasRengi,Kare bulunduguKare)
 {
     this.tasRengi = tasRengi;
     this.bulunduguKare = bulunduguKare;
     this.ruleManager = new BusinessRule();
 }
示例#38
0
 public override bool IlerleyebilirMi(Kare gidecegiKare)
 {
     return base.ruleManager.TekBirimDikeyGidebilirMi(this.BulunduguKare, gidecegiKare) ||
            base.ruleManager.PiyonlaYiyebilirMi(this.BulunduguKare,gidecegiKare);
 }
示例#39
0
 public abstract bool IlerleyebilirMi(Kare gidecegiKare);
示例#40
0
 public override bool IlerleyebilirMi(Kare gidecegiKare)
 {
     return(base.ruleManager.YatayDikeyGidebilirMi(this.BulunduguKare, gidecegiKare));
 }
示例#41
0
        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);
        }