/*
 * Muhammet Can
 * 091101025
 * 
 * Eksiklik;
 * --Promote sırasında uygunsuz veri girerseniz program çöküyor;
 * --Yani 'g7 h8 kale' yerine sadece 'g7 h8' girdiğiniz zaman null exception hatası alıyorsunuz
 * --(kullanıcıdan verileri substring ile alıyorum dolayısıyla substringin boyu ile ilgili bi hata var orda)
 * --henüz exception handling görmediğimiz için bunu yakalayan bişey yazmadım. Ödev dosyasında
 * --gözüken formata uygun veriler girileceğini varsayarak yazdım şimdilik. 
 * 
 * Eğer nextInt, next filan kullanarak verileri alsaydım kullanıcıdan bu problemi sanırım 
 * sadece if else kullanarak halledebilirdim yani 'g7 h8' den sonra geçersiz hamle diye uyarı 
 * verebilecek şekilde ama o zamanda 'gg zz' şeklinde bi giri verdiğimizde int beklediği 
 * yerde bulamadığı için hataya düşecekti. Sonuçta benim bildiğim 2 gidiş yolunda da try-catch kullanmadan
 * tamamen sorunsuz çalışabilecek bi program yazamadım. 
 * 
 * 
 * Notlar;
 * 1) Yazdığım koddan nefret ettim, iğrenç oldu. bin satırı geçtiğine inanamıyorum. Koskoca programda
 * tek bir array var. Muhtemelen çok daha akıllıca basit çözümler vardır, koda bakmak zorunda kalırsanız
 * şimdiden kusura bakmayın, baya çirkin olduğunun farkındayım :D 
 * 
 * 2) Bu ödevi aynen inheritance ve polymorphism kullanarak yapmak istiyorum sevgili asistanlar,
 * bu konuda bi yol yordam gösterinde çalışalım üzerinde, öğretici ödev zira. 
 * 
 * 3) Oyun bitince grafik arayüzü otomatikman kapatılıyor. Ödevde programınız çalıştığı sürece 
 * ekranda kalacak yazmış hoca, bu nedenle programın çalışmadığını varsaydım şahmat olduktan sonra 
 * kapattırdım programı. Eğer son hamleyi görmem gerekiyor diyorsan bu dosya altında System.exit(0) 
 * kullanarak kapattım başına bi comment eklersin açık kalması gerekiyorsa.  
 * 
 * 4) Bonus: LongLiveLinux!
 * 
 */

public class ChessGame {
	
	public static void main(String[] args) {
		
		//-- Board tahtanın altyapısını tutuyor
		Board tahta = new Board();

		//-- Tahtaya yerleştirilen örnekler ve tahtanın ilk hali
		tahta.sSah.setPosition(0, 4);			
		tahta.bSah.setPosition(7, 4);
		
		tahta.sVez.setPosition(0, 3);			
		tahta.bVez.setPosition(7, 3);
		
		tahta.sKale.setPosition(0, 7);
		tahta.bKale.setPosition(7, 7);		
		tahta.sKale2.setPosition(0, 0);
		tahta.bKale2.setPosition(7, 0);
		
		tahta.sFil.setPosition(0, 5);
		tahta.sFil2.setPosition(0, 2);
		tahta.bFil.setPosition(7, 5);
		tahta.bFil2.setPosition(7, 2);
		
		tahta.bAt.setPosition(7, 6);
		tahta.sAt.setPosition(0, 6);
		tahta.bAt2.setPosition(7, 1);
		tahta.sAt2.setPosition(0, 1);
		
		tahta.bp1.setPosition(6, 7);
		tahta.bp2.setPosition(6, 6);
		tahta.bp3.setPosition(6, 5);
		tahta.bp4.setPosition(6, 4);
		tahta.bp5.setPosition(6, 3);
		tahta.bp6.setPosition(6, 2);
		tahta.bp7.setPosition(6, 1);
		tahta.bp8.setPosition(6, 0);

		tahta.sp1.setPosition(1, 7);
		tahta.sp2.setPosition(1, 6);
		tahta.sp3.setPosition(1, 5);
		tahta.sp4.setPosition(1, 4);
		tahta.sp5.setPosition(1, 3);
		tahta.sp6.setPosition(1, 2);
		tahta.sp7.setPosition(1, 1);
		tahta.sp8.setPosition(1, 0);
		
		tahta.updateArray();
		
		int hamleSayisi = 0;
		int beyazHamleSayisi = 0;
		int siyahHamleSayisi = 0;
		
		tahta.displayTahta();
		System.out.println("Oyuna beyaz başlayacak..");
		boolean oyunBitti = false;
		do {
		//-- Step!
			
			tahta.step();
			tahta.updateArray();
			
			hamleSayisi += 1;

			if(tahta.turn.equalsIgnoreCase("Beyaz")) {
				beyazHamleSayisi += 1;
			} else {
				siyahHamleSayisi += 1;
			}

			if(tahta.sSah.alive == false) {
				System.out.println("Beyaz oyunu "+beyazHamleSayisi+" hamlede kazandı");
				oyunBitti = true;
			} else if(tahta.bSah.alive == false) {
				System.out.println("Siyah oyunu "+siyahHamleSayisi+" hamlede kazandı");
				oyunBitti = true;
			}
			
			tahta.changeTurn();

		} while(!oyunBitti);		
		System.out.println("gg wp");
		
		//OYUN BİTİNCE ARAYÜZÜ KAPAT!
		System.exit(0);
	}	
}
