import sum.ereignis.*;
import sum.komponenten.*;
//import sum.multimedia.*;
//import sum.werkzeuge.*;

public class TicTacToe extends EBAnwendung
{
    // Objekte
    Knopf hatKnopf1;
    Knopf hatKnopf2;
    Knopf hatKnopf3;
    Knopf hatKnopf4;
    Knopf hatKnopf5;
    Knopf hatKnopf6;
    Knopf hatKnopf7;
    Knopf hatKnopf8;
    Knopf hatKnopf9;
    Knopf hatKnopfRestart;
    
    String werDran;

    public TicTacToe()
    {
        // Initialisierung der Oberklasse
        super(270, 320);
        hatKnopf1 = new Knopf(30, 20, 60, 60, " ");
        hatKnopf1.setzeBearbeiterGeklickt("hatKnopf1Geklickt");
        hatKnopf2 = new Knopf(100, 20, 60, 60, " ");
        hatKnopf2.setzeBearbeiterGeklickt("hatKnopf2Geklickt");
        hatKnopf3 = new Knopf(170, 20, 60, 60, " ");
        hatKnopf3.setzeBearbeiterGeklickt("hatKnopf3Geklickt");
        hatKnopf4 = new Knopf(30, 90, 60, 60, " ");
        hatKnopf4.setzeBearbeiterGeklickt("hatKnopf4Geklickt");
        hatKnopf5 = new Knopf(100, 90, 60, 60, " ");
        hatKnopf5.setzeBearbeiterGeklickt("hatKnopf5Geklickt");
        hatKnopf6 = new Knopf(170, 90, 60, 60, " ");
        hatKnopf6.setzeBearbeiterGeklickt("hatKnopf6Geklickt");
        hatKnopf7 = new Knopf(30, 160, 60, 60, " ");
        hatKnopf7.setzeBearbeiterGeklickt("hatKnopf7Geklickt");
        hatKnopf8 = new Knopf(100, 160, 60, 60, " ");
        hatKnopf8.setzeBearbeiterGeklickt("hatKnopf8Geklickt");
        hatKnopf9 = new Knopf(170, 160, 60, 60, " ");
        hatKnopf9.setzeBearbeiterGeklickt("hatKnopf9Geklickt");
        //Restart Button
        hatKnopfRestart = new Knopf(30, 240, 200, 60, "Neues Spiel");
        hatKnopfRestart.setzeBearbeiterGeklickt("hatKnopfRestartGeklickt");

        werDran = "X";
    }

    public void hatKnopf1Geklickt()
    {
        if (hatKnopf1.inhaltAlsText() == " ") {
        	hatKnopf1.setzeInhalt(werDran);
        	changeSpieler();
        }
    }

    public void hatKnopf2Geklickt()
    {
        if (hatKnopf2.inhaltAlsText() == " ") {
        	hatKnopf2.setzeInhalt(werDran);
        	changeSpieler();
        }
    }

    public void hatKnopf3Geklickt()
    {
        if (hatKnopf3.inhaltAlsText() == " ") {
        	hatKnopf3.setzeInhalt(werDran);
        	changeSpieler();
        }
    }

    public void hatKnopf4Geklickt()
    {
        if (hatKnopf4.inhaltAlsText() == " ") {
        	hatKnopf4.setzeInhalt(werDran);
        	changeSpieler();
        }
    }

    public void hatKnopf5Geklickt()
    {
        if (hatKnopf5.inhaltAlsText() == " ") {
        	hatKnopf5.setzeInhalt(werDran);
        	changeSpieler();
        }
    }

    public void hatKnopf6Geklickt()
    {
        if (hatKnopf6.inhaltAlsText() == " ") {
        	hatKnopf6.setzeInhalt(werDran);
        	changeSpieler();
        }
    }

    public void hatKnopf7Geklickt()
    {
        if (hatKnopf7.inhaltAlsText() == " ") {
        	hatKnopf7.setzeInhalt(werDran);
        	changeSpieler();
        }
    }

    public void hatKnopf8Geklickt()
    {
        if (hatKnopf8.inhaltAlsText() == " ") {
        	hatKnopf8.setzeInhalt(werDran);
        	changeSpieler();
        }
    }

    public void hatKnopf9Geklickt()
    {
        if (hatKnopf9.inhaltAlsText() == " ") {
        	hatKnopf9.setzeInhalt(werDran);
        	changeSpieler();
        }
    }
    
    public void hatKnopfRestartGeklickt()
    {
    	hatKnopf1.setzeInhalt(" ");
    	hatKnopf2.setzeInhalt(" ");
    	hatKnopf3.setzeInhalt(" ");
    	hatKnopf4.setzeInhalt(" ");
    	hatKnopf5.setzeInhalt(" ");
    	hatKnopf6.setzeInhalt(" ");
    	hatKnopf7.setzeInhalt(" ");
    	hatKnopf8.setzeInhalt(" ");
    	hatKnopf9.setzeInhalt(" ");
    }
    
    public void changeSpieler(){
        if (!checkWinner()){
        	//Wenn kein Gewinner, dann Spielerwechsel
        	if (werDran == "X"){
        		werDran = "O";
        	} else {
        		werDran = "X";
        	}
        } else {
        	//Wenn Gewinner, dann Spielende und Gewinner anzeigen
        	hatKnopf1.setzeInhalt("G");
        	hatKnopf2.setzeInhalt("E");
        	hatKnopf3.setzeInhalt("W");
        	hatKnopf4.setzeInhalt("O");
        	hatKnopf5.setzeInhalt("N");
        	hatKnopf6.setzeInhalt("N");
        	hatKnopf7.setzeInhalt("E");
        	hatKnopf8.setzeInhalt("N");
        	hatKnopf9.setzeInhalt(werDran);
        }

    }
    
    public boolean checkWinner(){
    	boolean lIsWinner = false;
    	// 1. Zeile
     	if (   hatKnopf1.inhaltAlsText() == werDran 
    		&& hatKnopf2.inhaltAlsText() == werDran
      		&& hatKnopf3.inhaltAlsText() == werDran){
    		lIsWinner = true;
    	}
    	// 2. Zeile
     	else if (   hatKnopf4.inhaltAlsText() == werDran 
    		&& hatKnopf5.inhaltAlsText() == werDran
      		&& hatKnopf6.inhaltAlsText() == werDran){
    		lIsWinner = true;
    	}
    	// 3. Zeile
     	else if (   hatKnopf7.inhaltAlsText() == werDran 
    		&& hatKnopf8.inhaltAlsText() == werDran
      		&& hatKnopf9.inhaltAlsText() == werDran){
    		lIsWinner = true;
    	}
    	// 1. Spalte
     	else if (   hatKnopf1.inhaltAlsText() == werDran 
    		&& hatKnopf4.inhaltAlsText() == werDran
      		&& hatKnopf7.inhaltAlsText() == werDran){
    		lIsWinner = true;
    	}
    	// 2. Spalte
     	else if (   hatKnopf2.inhaltAlsText() == werDran 
    		&& hatKnopf5.inhaltAlsText() == werDran
      		&& hatKnopf8.inhaltAlsText() == werDran){
    		lIsWinner = true;
    	}
    	// 3. Spalte
     	else if (   hatKnopf3.inhaltAlsText() == werDran 
    		&& hatKnopf6.inhaltAlsText() == werDran
      		&& hatKnopf9.inhaltAlsText() == werDran){
    		lIsWinner = true;
    	}
    	// 1. Diagonale
     	else if (   hatKnopf1.inhaltAlsText() == werDran 
    		&& hatKnopf5.inhaltAlsText() == werDran
      		&& hatKnopf9.inhaltAlsText() == werDran){
    		lIsWinner = true;
    	}
    	// 2. Diagonale
     	else if (   hatKnopf3.inhaltAlsText() == werDran 
    		&& hatKnopf5.inhaltAlsText() == werDran
      		&& hatKnopf7.inhaltAlsText() == werDran){
    		lIsWinner = true;
    	}
     	//R?ckgabe ob Winner
     	return lIsWinner;
    }

}