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); }
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); }
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++; }