Example #1
0
 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
 }
Example #2
0
        void Mouse_Up(object sender, MouseEventArgs e)                                                                        // taşın bıraktığımız an, yani mouse tuşunu bıraktığımız an
        {
            if (suruklenme_durumu)                                                                                            // sürükleme durumunu kontrol ediyoruz,
            {
                Rectangle r1 = new Rectangle(secili_tas.Left, secili_tas.Top, secili_tas.Width, secili_tas.Height);           // taşımızı ve panellerimizin kesişimlerini
                Rectangle rs = new Rectangle(spanel[1].Left, spanel[1].Top, spanel[1].Width, spanel[1].Height);               // kontrol etmek için
                Rectangle rb = new Rectangle(bpanel[1].Left, bpanel[1].Top, bpanel[1].Width, bpanel[1].Height);               // dikdörtgenler oluşturuyoruz

                for (int i = 0; i < 24; i++)                                                                                  // her panele göz atmak için, dolaşıyoruz
                {
                    Rectangle r2   = new Rectangle(paneller[i].Left, paneller[i].Top, paneller[i].Width, paneller[i].Height); // paneller için dikdörtgen
                    int       adet = kolonlar[i].list.Count;                                                                  // panellerdeki taş sayısını tutmak için
                    if (r1.IntersectsWith(r2))                                                                                // taş ve panel kesişimi kontrol ediyoruz
                    {
                        if (adet > 4)                                                                                         // bir panelde üst üste en fazla 5 tane taş olabilir
                        {
                            adet = 4;
                        }
                        if (secili_tas.GetType() == typeof(BeyazTas)) // seçtiğimiz taşın tipini kontrol ediyoruz, beyaz mı siyah mı ?
                        {
                            hamle1 = ilki + zar1;                     // hamle hakkımızı hesaplıyoruz
                            hamle2 = ilki + zar2;
                        }
                        else
                        {
                            hamle1 = ilki - zar1;        // hamle hakkımızı hesaplıyoruz
                            hamle2 = ilki - zar2;
                        }
                        if ((i == hamle1) && zar1oyna == false) // zar1oyna= zar oynamaya hakkımız olup olmadığımız bilgisini tutuyor
                        {                                       // hamle hakkımız, taşı bıraktığımız panel ile kesişiyor mu, yani taşı o noktaya oynayabiliyor muyuz diye kontrol ediyoruz
                            if (i < 12)                         // taşı alt panele bırakmışsak, farklı bir şekilde konumlandırıyoruz
                            {
                                secili_tas.Top = paneller[i].Top + paneller[i].Height - secili_tas.Height - adet * secili_tas.Height;
                            }
                            else        // taşı üst panele bırakmışsak farklı bir şekilde konumandırıyoruz
                            {
                                secili_tas.Top = paneller[i].Top + adet * secili_tas.Height;
                            }
                            secili_tas.Left = paneller[i].Left;

                            if (kolonlar[i].tasGonder(secili_tas, i, tasoncekikonum, skolon[0], bkolon[0]))
                            {                      // taşı konumlandırdıktan sonra, listeye ekleme durumunu kontrol ediyoru, duruma göre taşı listeye ekliyoruz
                                if (çift1 == true) // oynadığımız hamleye göre, hamle hakkımızı yeniden hesaplıyoruz
                                {
                                    zar1oyna = false;
                                    çift1    = false;
                                }
                                else
                                {
                                    zar1oyna = true;
                                }
                            }

                            break;        // taş hareketi, konumlandırması, listeye eklemesi bittikten sonra, for döngüsünden çıkıyoruz
                        }
                        else if ((i == hamle2) && zar2oyna == false)
                        {        // aynı şekilde hamle hakkımıza göre taşı konumlandırmayı kontrol ediyoruz
                            if (i < 12)
                            {
                                secili_tas.Top = paneller[i].Top + paneller[i].Height - secili_tas.Height - adet * secili_tas.Height;
                            }
                            else
                            {
                                secili_tas.Top = paneller[i].Top + adet * secili_tas.Height;
                            }
                            secili_tas.Left = paneller[i].Left;

                            if (kolonlar[i].tasGonder(secili_tas, i, tasoncekikonum, skolon[0], bkolon[0]))
                            {
                                if (çift2 == true)
                                {
                                    zar2oyna = false;
                                    çift2    = false;
                                }
                                else
                                {
                                    zar2oyna = true;
                                }
                            }

                            break;
                        }
                        else     // taş yerleştirmeye çalıştığımız nokta için hamle hakkımız yetmiyor veya tutmuyor ise
                        {        // taş eski konumuna geri yerleşir
                            if (i < 12)
                            {
                                secili_tas.Top = tasoncekiko.Top + tasoncekiko.Height - secili_tas.Height - adet * secili_tas.Height;
                            }
                            else
                            {
                                secili_tas.Top = tasoncekiko.Top + adet * secili_tas.Height;
                            }
                            secili_tas.Left = tasoncekiko.Left;
                            tasoncekikonum.ekle(secili_tas); // önceki listesine de geri eklenir
                            break;                           // taş ekleme işlemi bittikten sonra for döngüsünden çıkılır
                        }
                    }
                    else if (r1.IntersectsWith(rs) && stopla == true) // eğer tüm siyah taşlar siyah kalede ise,
                    {                                                 //   taşları toplama işlemini kontrol ediyoruz, taşları topladığımız panel ile taşın kesişimini kontro ediyoruz
                        if ((ilki + 1) <= zar1 && zar1oyna == false)  // hamle hakkımız yetiyor ise taşın yerleşmesine izin veriyoruz / taşı topluyoruz
                        {
                            secili_tas.Top  = spanel[1].Top;          // taşı yei konumunu ayarlıyoruz
                            secili_tas.Left = spanel[1].Left;
                            skolon[1].ekle(secili_tas);               // taşı, taşları topladığımız listeye ekliyoruz
                            if (çift1 == true)
                            {
                                zar1oyna = false;    // oynadığımız hamleye göre, hamle hakkımızı tekrar düzenliyoruz
                                çift1    = false;
                            }
                            else
                            {
                                zar1oyna = true;
                            }
                            break;
                        }
                        else if ((ilki + 1) <= zar2 && zar2oyna == false)   // aynı şekilde hamle hakkımız yetiyor ise taşı topluyoruz
                        {
                            secili_tas.Top  = spanel[1].Top;
                            secili_tas.Left = spanel[1].Left;
                            skolon[1].ekle(secili_tas);
                            if (çift2 == true)
                            {
                                zar2oyna = false;
                                çift2    = false;
                            }
                            else
                            {
                                zar2oyna = true;
                            }
                            break;
                        }
                        else            // hamle hakkımız yetmiyor ise taşı eski yerine geri yerleştiriyoruz
                        {
                            if (i < 12) //
                            {
                                secili_tas.Top = tasoncekiko.Top + tasoncekiko.Height - secili_tas.Height - adet * secili_tas.Height;
                            }
                            else
                            {
                                secili_tas.Top = tasoncekiko.Top + adet * secili_tas.Height;
                            }
                            secili_tas.Left = tasoncekiko.Left;
                            tasoncekikonum.ekle(secili_tas);
                            break;
                        }
                    }
                    else if (r1.IntersectsWith(rb) && btopla == true) // aynı şekilde bu sefer beyaz taşların hepsi beyaz kalede ise
                    {                                                 //taşları toplama işlemini kontrol ediyoruz, taşları topladığımız panel ile taşın kesişimini kontro ediyoruz
                        if ((ilki + zar1) >= 24 && zar1oyna == false)
                        {
                            secili_tas.Top  = bpanel[1].Top;
                            secili_tas.Left = bpanel[1].Left;
                            bkolon[1].ekle(secili_tas);
                            if (çift1 == true)
                            {
                                zar1oyna = false;
                                çift1    = false;
                            }
                            else
                            {
                                zar1oyna = true;
                            }
                            break;
                        }
                        else if ((ilki + zar2) >= 24 && zar2oyna == false)
                        {
                            secili_tas.Top  = bpanel[1].Top;
                            secili_tas.Left = bpanel[1].Left;
                            bkolon[1].ekle(secili_tas);
                            if (çift2 == true)
                            {
                                zar2oyna = false;
                                çift2    = false;
                            }
                            else
                            {
                                zar2oyna = true;
                            }
                            break;
                        }
                        else    // hamle hakkımız yetmiyor ise taşı eski yerine yereştiriyoruz
                        {
                            if (i < 12)
                            {
                                secili_tas.Top = tasoncekiko.Top + tasoncekiko.Height - secili_tas.Height - adet * secili_tas.Height;
                            }
                            else
                            {
                                secili_tas.Top = tasoncekiko.Top + adet * secili_tas.Height;
                            }
                            secili_tas.Left = tasoncekiko.Left;
                            tasoncekikonum.ekle(secili_tas);
                            break;
                        }
                    }
                    else if (i == 23)    // taşı bıraktığımız yer hiç bir panel ile kesişmiyor ise, eski yerine yereştiriyoruz
                    {
                        if (i < 12)
                        {
                            secili_tas.Top = tasoncekiko.Top + tasoncekiko.Height - secili_tas.Height - adet * secili_tas.Height;
                        }
                        else
                        {
                            secili_tas.Top = tasoncekiko.Top + adet * secili_tas.Height;
                        }
                        secili_tas.Left = tasoncekiko.Left;
                        tasoncekikonum.ekle(secili_tas);
                        break;
                    }
                }



                suruklenme_durumu = false;

                secili_tas.Cursor = Cursors.Default;
            }
            ssayi = 0;
            for (int i = 0; i < 6; i++) // siyah kaledeki taş sayısını kontrol ediyoruz, eğer 15 tane ise,
            {                           // yani tüm siyah taşlar siyah kalede ise, taşları toplayabimemize izin veriyoruz
                if (kolonlar[i].list.Count != 0 && kolonlar[i].list[0].GetType() == typeof(SiyahTas))
                {
                    ssayi += kolonlar[i].list.Count;
                }
                if (ssayi == 15)
                {
                    stopla = true;//siyah taşlarımı toplayıp toplayamayacağımızı belirler
                }
            }
            bsayi = 0;
            for (int i = 18; i < 24; i++) // siyah kaledeki taş sayısını kontrol ediyoruz, eğer 15 tane ise,
            {                             // yani tüm siyah taşlar siyah kalede ise, taşları toplayabimemize izin veriyoruz
                if (kolonlar[i].list.Count != 0 && kolonlar[i].list[0].GetType() == typeof(BeyazTas))
                {
                    bsayi += kolonlar[i].list.Count;
                }
                if (bsayi == 15)
                {
                    btopla = true;//beyaz taşlarımı toplayıp toplayamayacağımızı belirler
                }
            }
            if (skolon[1].list.Count == 15)// bütün siyah taşlar toplanmışsa oyun biter
            {
                MessageBox.Show("Tebrikler Siyah Taş Kazandı");
                this.Close();
            }
            if (bkolon[1].list.Count == 15)// bütün beyaz taşlar toplanmışsa oyun biter
            {
                MessageBox.Show("Tebrikler Beyaz Taş Kazandı");
                this.Close();
            }
        }