Exemplo n.º 1
0
        public static void LogHamle(int i, IntPtr hwdnsLstBox, Renkler Oyuncu, Taslar tasTipi, int x1, int y1, int x2, int y2, String Hamle)
        {
            String tasBasHarf = tasTipi.ToString().Substring(0, 1);
            lvHamleler.Items.Add(Oyuncu.ToString());
            lvHamleler.Items[i].SubItems.Add(tasBasHarf);

            undoHamle.Push(Hamle); // Log daki "Þah", "Mat", "bRok", "kRok" ve "" deðerlerinin(Hamle deðerlerinin) tutulmasý...

            Hamle = (Hamle!="") ? (" - " + Hamle) : ("");
            lvHamleler.Items[i].SubItems.Add(Harfler[x1] + Rakamlar[y1] + "-" + Harfler[x2] + Rakamlar[y2] + Hamle);
        }
Exemplo n.º 2
0
        public static void LogHamle(int i, IntPtr hwdnsLstBox, Renkler Oyuncu, Taslar tasTipi, int x1, int y1, int x2, int y2, String Hamle)
        {
            String tasBasHarf = tasTipi.ToString().Substring(0, 1);

            lvHamleler.Items.Add(Oyuncu.ToString());
            lvHamleler.Items[i].SubItems.Add(tasBasHarf);

            undoHamle.Push(Hamle); // Log daki "Þah", "Mat", "bRok", "kRok" ve "" deðerlerinin(Hamle deðerlerinin) tutulmasý...

            Hamle = (Hamle != "") ? (" - " + Hamle) : ("");
            lvHamleler.Items[i].SubItems.Add(Harfler[x1] + Rakamlar[y1] + "-" + Harfler[x2] + Rakamlar[y2] + Hamle);
        }
Exemplo n.º 3
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++;
        }