コード例 #1
0
        public override void HamleHesapla(Tas[,] t)
        {
            if (SahKaleKontrol()) // Þah ve Kale daha önce hareket etmemiþse...
            {
                if (Renk == Renkler.Siyah && Yer.X == 4 && Yer.Y == 0)
                {
                    RokHesapla(t);
                }
                else if (Renk == Renkler.Beyaz && Yer.X == 4 && Yer.Y == 7)
                {
                    RokHesapla(t);
                }
            }

            // Vezir ile þah hareketleri benzerdir.
            // Þah, vezirin kýrpýlmýþ halidir :)
            Vezir tasVezir = new Vezir(new Point(Yer.X, Yer.Y), Taslar.Vezir, Renk);
            tasVezir.HamleHesapla(t);

            SahHareket(tasVezir, Yer.X - 1, Yer.Y); // Sola
            SahHareket(tasVezir, Yer.X + 1, Yer.Y); // Saða
            SahHareket(tasVezir, Yer.X - 1, Yer.Y + 1); // Sol Alt
            SahHareket(tasVezir, Yer.X - 1, Yer.Y - 1); // Sol Üst
            SahHareket(tasVezir, Yer.X, Yer.Y - 1); // Yukarý
            SahHareket(tasVezir, Yer.X, Yer.Y + 1); // Aþaðý
            SahHareket(tasVezir, Yer.X + 1, Yer.Y + 1); // Sað Alt
            SahHareket(tasVezir, Yer.X + 1, Yer.Y - 1); // Sað Üst
        }
コード例 #2
0
        public override void HamleHesapla(Tas[,] t)
        {
            if (SahKaleKontrol()) // Þah ve Kale daha önce hareket etmemiþse...
            {
                if (Renk == Renkler.Siyah && Yer.X == 4 && Yer.Y == 0)
                {
                    RokHesapla(t);
                }
                else if (Renk == Renkler.Beyaz && Yer.X == 4 && Yer.Y == 7)
                {
                    RokHesapla(t);
                }
            }

            // Vezir ile þah hareketleri benzerdir.
            // Þah, vezirin kýrpýlmýþ halidir :)
            Vezir tasVezir = new Vezir(new Point(Yer.X, Yer.Y), Taslar.Vezir, Renk);

            tasVezir.HamleHesapla(t);

            SahHareket(tasVezir, Yer.X - 1, Yer.Y);     // Sola
            SahHareket(tasVezir, Yer.X + 1, Yer.Y);     // Saða
            SahHareket(tasVezir, Yer.X - 1, Yer.Y + 1); // Sol Alt
            SahHareket(tasVezir, Yer.X - 1, Yer.Y - 1); // Sol Üst
            SahHareket(tasVezir, Yer.X, Yer.Y - 1);     // Yukarý
            SahHareket(tasVezir, Yer.X, Yer.Y + 1);     // Aþaðý
            SahHareket(tasVezir, Yer.X + 1, Yer.Y + 1); // Sað Alt
            SahHareket(tasVezir, Yer.X + 1, Yer.Y - 1); // Sað Üst
        }
コード例 #3
0
        public static void TaslarOlustur(Tas[,] sTaslari)
        {
            int i;
            sTaslari[0, 0] = new Kale(new Point(0, 0), Taslar.Kale, Renkler.Siyah);
            sTaslari[1, 0] = new At(new Point(1, 0), Taslar.At, Renkler.Siyah);
            sTaslari[2, 0] = new Fil(new Point(2, 0), Taslar.Fil, Renkler.Siyah);
            sTaslari[3, 0] = new Vezir(new Point(3, 0), Taslar.Vezir, Renkler.Siyah);
            sTaslari[4, 0] = new Sah(new Point(4, 0), Taslar.Sah, Renkler.Siyah);
            sTaslari[5, 0] = new Fil(new Point(5, 0), Taslar.Fil, Renkler.Siyah);
            sTaslari[6, 0] = new At(new Point(6, 0), Taslar.At, Renkler.Siyah);
            sTaslari[7, 0] = new Kale(new Point(7, 0), Taslar.Kale, Renkler.Siyah);

            for (i = 0; i < 8; i++)
            {
                sTaslari[i, 1] = new Piyon(new Point(i, 1), Taslar.Piyon, Renkler.Siyah);
                sTaslari[i, 6] = new Piyon(new Point(i, 6), Taslar.Piyon, Renkler.Beyaz);
            }

            sTaslari[0, 7] = new Kale(new Point(0, 7), Taslar.Kale, Renkler.Beyaz);
            sTaslari[1, 7] = new At(new Point(1, 7), Taslar.At, Renkler.Beyaz);
            sTaslari[2, 7] = new Fil(new Point(2, 7), Taslar.Fil, Renkler.Beyaz);
            sTaslari[3, 7] = new Vezir(new Point(3, 7), Taslar.Vezir, Renkler.Beyaz);
            sTaslari[4, 7] = new Sah(new Point(4, 7), Taslar.Sah, Renkler.Beyaz);
            sTaslari[5, 7] = new Fil(new Point(5, 7), Taslar.Fil, Renkler.Beyaz);
            sTaslari[6, 7] = new At(new Point(6, 7), Taslar.At, Renkler.Beyaz);
            sTaslari[7, 7] = new Kale(new Point(7, 7), Taslar.Kale, Renkler.Beyaz);
        }
コード例 #4
0
        public static void TasOlustur(Tas[,] sTaslari, int x, int y, Renkler renk, Taslar tip)
        {
            switch (tip)
            {
            case Taslar.Piyon:
                sTaslari[x, y] = new Piyon(new Point(x, y), Taslar.Piyon, renk);
                break;

            case Taslar.Kale:
                sTaslari[x, y] = new Kale(new Point(x, y), Taslar.Kale, renk);
                break;

            case Taslar.At:
                sTaslari[x, y] = new At(new Point(x, y), Taslar.At, renk);
                break;

            case Taslar.Fil:
                sTaslari[x, y] = new Fil(new Point(x, y), Taslar.Fil, renk);
                break;

            case Taslar.Sah:
                sTaslari[x, y] = new Sah(new Point(x, y), Taslar.Sah, renk);
                break;

            case Taslar.Vezir:
                sTaslari[x, y] = new Vezir(new Point(x, y), Taslar.Vezir, renk);
                break;
            }
        }
コード例 #5
0
        public static void TaslarOlustur(Tas[,] sTaslari)
        {
            int i;

            sTaslari[0, 0] = new Kale(new Point(0, 0), Taslar.Kale, Renkler.Siyah);
            sTaslari[1, 0] = new At(new Point(1, 0), Taslar.At, Renkler.Siyah);
            sTaslari[2, 0] = new Fil(new Point(2, 0), Taslar.Fil, Renkler.Siyah);
            sTaslari[3, 0] = new Vezir(new Point(3, 0), Taslar.Vezir, Renkler.Siyah);
            sTaslari[4, 0] = new Sah(new Point(4, 0), Taslar.Sah, Renkler.Siyah);
            sTaslari[5, 0] = new Fil(new Point(5, 0), Taslar.Fil, Renkler.Siyah);
            sTaslari[6, 0] = new At(new Point(6, 0), Taslar.At, Renkler.Siyah);
            sTaslari[7, 0] = new Kale(new Point(7, 0), Taslar.Kale, Renkler.Siyah);

            for (i = 0; i < 8; i++)
            {
                sTaslari[i, 1] = new Piyon(new Point(i, 1), Taslar.Piyon, Renkler.Siyah);
                sTaslari[i, 6] = new Piyon(new Point(i, 6), Taslar.Piyon, Renkler.Beyaz);
            }

            sTaslari[0, 7] = new Kale(new Point(0, 7), Taslar.Kale, Renkler.Beyaz);
            sTaslari[1, 7] = new At(new Point(1, 7), Taslar.At, Renkler.Beyaz);
            sTaslari[2, 7] = new Fil(new Point(2, 7), Taslar.Fil, Renkler.Beyaz);
            sTaslari[3, 7] = new Vezir(new Point(3, 7), Taslar.Vezir, Renkler.Beyaz);
            sTaslari[4, 7] = new Sah(new Point(4, 7), Taslar.Sah, Renkler.Beyaz);
            sTaslari[5, 7] = new Fil(new Point(5, 7), Taslar.Fil, Renkler.Beyaz);
            sTaslari[6, 7] = new At(new Point(6, 7), Taslar.At, Renkler.Beyaz);
            sTaslari[7, 7] = new Kale(new Point(7, 7), Taslar.Kale, Renkler.Beyaz);
        }
コード例 #6
0
 private void SahHareket(Vezir tasVezir, int x, int y)
 {
     int i;
     // Eðer vezirin gittiði yerlerde gönderdiðimiz koordinat da varsa hamle yapsýn...
     for (i = 0; i < tasVezir.Hamleler.Count; i += 2)
     {
         if ((int)tasVezir.Hamleler[i] == x && (int)tasVezir.Hamleler[i + 1] == y)
         {
             Hamleler.Add(tasVezir.Hamleler[i]); Hamleler.Add(tasVezir.Hamleler[i + 1]);
         }
     }
 }
コード例 #7
0
        private void SahHareket(Vezir tasVezir, int x, int y)
        {
            int i;

            // Eðer vezirin gittiði yerlerde gönderdiðimiz koordinat da varsa hamle yapsýn...
            for (i = 0; i < tasVezir.Hamleler.Count; i += 2)
            {
                if ((int)tasVezir.Hamleler[i] == x && (int)tasVezir.Hamleler[i + 1] == y)
                {
                    Hamleler.Add(tasVezir.Hamleler[i]); Hamleler.Add(tasVezir.Hamleler[i + 1]);
                }
            }
        }
コード例 #8
0
 public static void TasOlustur(Tas[,] sTaslari, int x, int y, Renkler renk, Taslar tip)
 {
     switch (tip)
     {
         case Taslar.Piyon :
             sTaslari[x, y] = new Piyon(new Point(x, y), Taslar.Piyon, renk);
             break;
         case Taslar.Kale :
             sTaslari[x, y] = new Kale(new Point(x, y), Taslar.Kale, renk);
             break;
         case Taslar.At :
             sTaslari[x, y] = new At(new Point(x, y), Taslar.At, renk);
             break;
         case Taslar.Fil :
             sTaslari[x, y] = new Fil(new Point(x, y), Taslar.Fil, renk);
             break;
         case Taslar.Sah :
             sTaslari[x, y] = new Sah(new Point(x, y), Taslar.Sah, renk);
             break;
         case Taslar.Vezir :
             sTaslari[x, y] = new Vezir(new Point(x, y), Taslar.Vezir, renk);
             break;
     } 
 }
コード例 #9
0
        public void HamleYap(int x1, int y1, int x2, int y2)
        {
            Point sahYeri;
            Tas   temp = null;

            satrancTaslari[x1, y1].YolGizle(g);
            satrancTaslari[x1, y1].Gizle(g); // Taþý Sil.

            Tasi(x1, y1, x2, y2);            // Taþý götür...

            sahYeri = sahBul();              // Oyuncunun þahýnýn yerini bul...
            if (sahCekildi(sahYeri))         // Diðer taþlar tarafýndan þah çekliliyor mu?
            {
                if (alinanTas != null)       // Taþ alýnmýþsa sakla (Tasi metodunda)
                {
                    temp = alinanTas;
                }

                Tasi(x2, y2, x1, y1);             // Mat olacak, taþý eski yerine getir...
                satrancTaslari[x1, y1].Goster(g); // Taþý Göster
                satrancTaslari[x1, y1].Hamleler.Clear();

                if (temp != null)     // Alýnan taþý da yerine koy
                {
                    satrancTaslari[x2, y2] = temp;
                    satrancTaslari[x2, y2].Goster(g);
                    temp = null;
                }

                oyunAlani.TaslarGoster(satrancTaslari, g); // Refresh
                Secim = false;                             // Oyuncu deðiþmeden yeni hamle yapýlsýn
                return;
            }

            // Piyon'un Vezir'e dönüþmesi
            if (satrancTaslari[x2, y2].tasTipi == Taslar.Piyon)
            {
                if (Oyuncu == Renkler.Beyaz && satrancTaslari[x2, y2].Yer.Y == 0)
                {
                    satrancTaslari[x2, y2] = new Vezir(new Point(x2, y2), Taslar.Vezir, Renkler.Beyaz);
                }
                else if (Oyuncu == Renkler.Beyaz && satrancTaslari[x2, y2].Yer.Y == 7)
                {
                    satrancTaslari[x2, y2] = new Vezir(new Point(x2, y2), Taslar.Vezir, Renkler.Siyah);
                }
            }

            // Undo'dan sonra kullanýcý hamle yaparsa redo dan hamle çýkar
            if (UndoRedo.redoNoktalar.Count > 0)
            {
                UndoRedo.redoNoktalar.Pop();
                UndoRedo.redoNoktalar.Pop();
                UndoRedo.redoTaslar.Pop();
                UndoRedo.redoTaslar.Pop();
            }

            UndoRedo.undoNoktalar.Push(new Point(x1, y1));
            UndoRedo.undoNoktalar.Push(new Point(x2, y2));
            UndoRedo.undoTaslar.Push(satrancTaslari[x2, y2]);

            if (alinanTas != null) // Alýnan taþ varsa yýðýna at
            {
                UndoRedo.undoTaslar.Push(alinanTas);
                alinanTas.Gizle(g);
            }
            else
            {
                UndoRedo.undoTaslar.Push(null); // Alýnan taþ yoksa null bas
            }

            satrancTaslari[x2, y2].Goster(g);          // Taþý Göster
            satrancTaslari[x2, y2].Hamleler.Clear();
            oyunAlani.TaslarGoster(satrancTaslari, g); // Refresh..

            if (Sira == Renkler.Beyaz)                 // Oyuncuyu deðiþtir
            {
                Sira = Renkler.Siyah;
            }
            else
            {
                Sira = Renkler.Beyaz;
            }

            /*Þah-Mat Kontrolü...
             * Sýra diðer oyuncuya geçti ama daha önce Diðer Oyuncunun þahýnýn yerini bul...*/
            sahYeri = sahBul();
            if (sahCekildi(sahYeri)) // Yapýlan hamle sonucunda Diðer oyuncuya þah çekildi mi?
            {
                if (matOldu())       // Þah çekildiyse mat oldu mu?
                {
                    Log.LogHamle(hamleSayisi, handleLView, Oyuncu, satrancTaslari[x2, y2].tasTipi, x1, y1, x2, y2, "Mat");
                    MessageBox.Show(Sira.ToString() + " Mat oldu. Oyunu " + Oyuncu.ToString() + " kazandý", "Oyun Bitti", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    hamleSayisi++;
                    return;
                }
                else
                {
                    Log.LogHamle(hamleSayisi, handleLView, Oyuncu, satrancTaslari[x2, y2].tasTipi, x1, y1, x2, y2, "Þah");
                    hamleSayisi++;
                    return;
                }
            }

            if (satrancTaslari[x2, y2].tasTipi == Taslar.Sah) // Þah taþýndýysa Rok Yaptý Mý?
            {
                if (x2 == x1 - 2)
                {
                    Rok(x2, y2, "bRok");
                    Log.LogHamle(hamleSayisi, handleLView, Oyuncu, satrancTaslari[x2, y2].tasTipi, x1, y1, x2, y2, "bRok");
                    hamleSayisi++;
                    return;
                }
                else if (x2 == x1 + 2)
                {
                    Rok(x2, y2, "kRok");
                    Log.LogHamle(hamleSayisi, handleLView, Oyuncu, satrancTaslari[x2, y2].tasTipi, x1, y1, x2, y2, "kRok");
                    hamleSayisi++;
                    return;
                }
            }

            Log.LogHamle(hamleSayisi, handleLView, Oyuncu, satrancTaslari[x2, y2].tasTipi, x1, y1, x2, y2, ""); // Normal Hamle
            hamleSayisi++;
        }
コード例 #10
0
        public void HamleYap(int x1, int y1, int x2, int y2)
        {
            Point sahYeri;
            Tas temp=null;

            satrancTaslari[x1, y1].YolGizle(g);
            satrancTaslari[x1, y1].Gizle(g); // Taþý Sil.

            Tasi(x1, y1, x2, y2); // Taþý götür...

                sahYeri = sahBul();   // Oyuncunun þahýnýn yerini bul...
                if (sahCekildi(sahYeri)) // Diðer taþlar tarafýndan þah çekliliyor mu?
                {
                    if (alinanTas != null) // Taþ alýnmýþsa sakla (Tasi metodunda)
                    {
                        temp = alinanTas;
                    }

                    Tasi(x2, y2, x1, y1); // Mat olacak, taþý eski yerine getir...
                    satrancTaslari[x1, y1].Goster(g); // Taþý Göster
                    satrancTaslari[x1, y1].Hamleler.Clear();

                    if (temp != null) // Alýnan taþý da yerine koy
                    {
                        satrancTaslari[x2, y2] = temp;
                        satrancTaslari[x2, y2].Goster(g);
                        temp = null;
                    }

                    oyunAlani.TaslarGoster(satrancTaslari, g); // Refresh
                    Secim = false; // Oyuncu deðiþmeden yeni hamle yapýlsýn
                    return;
                } 

            // Piyon'un Vezir'e dönüþmesi
            if (satrancTaslari[x2, y2].tasTipi == Taslar.Piyon)
            {
                if (Oyuncu == Renkler.Beyaz && satrancTaslari[x2, y2].Yer.Y == 0)
                {
                    satrancTaslari[x2, y2] = new Vezir(new Point(x2,y2), Taslar.Vezir, Renkler.Beyaz);
                }
                else if (Oyuncu == Renkler.Beyaz && satrancTaslari[x2, y2].Yer.Y == 7)
                {
                    satrancTaslari[x2, y2] = new Vezir(new Point(x2,y2), Taslar.Vezir, Renkler.Siyah);
                }
            }

            // Undo'dan sonra kullanýcý hamle yaparsa redo dan hamle çýkar
            if (UndoRedo.redoNoktalar.Count > 0)
            {
                UndoRedo.redoNoktalar.Pop();
                UndoRedo.redoNoktalar.Pop();
                UndoRedo.redoTaslar.Pop();
                UndoRedo.redoTaslar.Pop();
            }

            UndoRedo.undoNoktalar.Push(new Point(x1, y1));
            UndoRedo.undoNoktalar.Push(new Point(x2, y2));
            UndoRedo.undoTaslar.Push(satrancTaslari[x2, y2]);

            if (alinanTas != null) // Alýnan taþ varsa yýðýna at
            {
                UndoRedo.undoTaslar.Push(alinanTas);
                alinanTas.Gizle(g);
            }
            else
            {
                UndoRedo.undoTaslar.Push(null); // Alýnan taþ yoksa null bas
            }

            satrancTaslari[x2, y2].Goster(g); // Taþý Göster
            satrancTaslari[x2, y2].Hamleler.Clear();
            oyunAlani.TaslarGoster(satrancTaslari, g); // Refresh..

            if (Sira == Renkler.Beyaz) // Oyuncuyu deðiþtir
                Sira = Renkler.Siyah;
            else
                Sira = Renkler.Beyaz;

            /*Þah-Mat Kontrolü...
            Sýra diðer oyuncuya geçti ama daha önce Diðer Oyuncunun þahýnýn yerini bul...*/
            sahYeri = sahBul();
            if (sahCekildi(sahYeri)) // Yapýlan hamle sonucunda Diðer oyuncuya þah çekildi mi?
            {
                if (matOldu()) // Þah çekildiyse mat oldu mu?
                {
                    Log.LogHamle(hamleSayisi, handleLView, Oyuncu, satrancTaslari[x2, y2].tasTipi, x1, y1, x2, y2,"Mat");
                    MessageBox.Show(Sira.ToString() + " Mat oldu. Oyunu " + Oyuncu.ToString() + " kazandý", "Oyun Bitti", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    hamleSayisi++;
                    return;
                }
                else
                {
                    Log.LogHamle(hamleSayisi, handleLView, Oyuncu, satrancTaslari[x2, y2].tasTipi, x1, y1, x2, y2,"Þah");
                    hamleSayisi++;
                    return;
                }
            }

            if (satrancTaslari[x2, y2].tasTipi == Taslar.Sah) // Þah taþýndýysa Rok Yaptý Mý?
            {
                if (x2 == x1 - 2)
                {
                    Rok(x2, y2, "bRok");
                    Log.LogHamle(hamleSayisi, handleLView, Oyuncu, satrancTaslari[x2, y2].tasTipi, x1, y1, x2, y2, "bRok");
                    hamleSayisi++;
                    return;
                }
                else if (x2 == x1 + 2)
                {
                    Rok(x2, y2, "kRok");
                    Log.LogHamle(hamleSayisi, handleLView, Oyuncu, satrancTaslari[x2, y2].tasTipi, x1, y1, x2, y2, "kRok");
                    hamleSayisi++;
                    return;
                }
            }

            Log.LogHamle(hamleSayisi, handleLView, Oyuncu, satrancTaslari[x2, y2].tasTipi, x1, y1, x2, y2,""); // Normal Hamle
            hamleSayisi++;
        }