import java.util.Scanner;
import java.util.Random;

public class Main{
    
    public static void Belegt(){
        System.out.println("Dieses Feld ist bereits belegt, versuch es noch einmal!");
        System.out.println("Du bist erneut am Zug:");
    }
    
    public static void main(String[] args) {
     Scanner scanner = new Scanner(System.in);
     Random random = new Random();
    
     String[][] meinArray = new String[3][3];
        for(int i=0; i<3; i++){
            for(int j=0; j<3; j++){
                meinArray[i][j] = "=";
            }
        }
    
     System.out.println("Willkommen zu TicTacToe!");
     System.out.println("");

     System.out.println("Bitte geben Sie ihre Namen ein: ");
    
     System.out.println("Spieler 1: ");
     String Spieler1 = scanner.nextLine();

     System.out.println("Spieler 2: ");
     String Spieler2 = scanner.nextLine();
     System.out.println("");
    
     int Zufallsname = random.nextInt(2)+1;
     String Beginner;
     String Zweiter; 
    
     if (Zufallsname == 1){
        System.out.println(Spieler1 + " ist der Beginner!");
        Beginner = Spieler1;
        Zweiter = Spieler2;
     }
     else{
        System.out.println(Spieler2 + " ist der Beginner!");
        Beginner = Spieler2;
        Zweiter = Spieler1;
     }
     System.out.println(" ");
    System.out.println("Bitte abwechselnd das Feld angeben: ");
    System.out.println("obenlinks(ol) | obenmitte(om) | obenrechts(or) ");
    System.out.println("--------------------------------------------------");
    System.out.println("mittelinks(ml) | mittemitte(mm) | mitterechts(mr)");
    System.out.println("--------------------------------------------------");
    System.out.println("untenlinks(ul) | untenmitte(um) | untenrechts(ur)");
    System.out.println(" ");

     int counter=0;
     int counterZ=0;

        
     while(counter<9){
         
//Spieler1   
      System.out.println(Beginner + " ist am Zug: ");
        
      Boolean x = false;
      while (x == false){
            
        String Position = scanner.nextLine();
        
        while (!Position.equals("obenlinks") && !Position.equals("ol") && !Position.equals("obenmitte") && !Position.equals("om") && !Position.equals("obenrechts") && !Position.equals("or") && !Position.equals("mittelinks") && !Position.equals("ml") && !Position.equals("mittemitte") && !Position.equals("mm") && !Position.equals("mitterechts") && !Position.equals("mr") && !Position.equals("untenlinks") && !Position.equals("ul") && !Position.equals("untenmitte") && !Position.equals("um") && !Position.equals("untenrechts") && !Position.equals("ur")) {
                System.out.println("Vertippt! Nochmal Bitte: ");
                Position = scanner.nextLine();
        }
        
        if(Position.equals("obenlinks") || Position.equals("ol")){
            if(meinArray[0][0]=="="){
                meinArray[0][0]="O";
                x = true;
            }
            else{Belegt();}
        }
        if(Position.equals("obenmitte") || Position.equals("om")){
            if(meinArray[0][1]=="="){
                meinArray[0][1]="O";
                x = true;
            }
            else{Belegt();}
        }
        if(Position.equals("obenrechts") || Position.equals("or")){
            if(meinArray[0][2]=="="){
                meinArray[0][2]="O";
                x = true;
            }
            else{Belegt();}
        }
        
        if(Position.equals("mittelinks") || Position.equals("ml")){
            if(meinArray[1][0]=="="){
                meinArray[1][0]="O";
                x = true;
            }
            else{Belegt();}
        }
        if(Position.equals("mittemitte") || Position.equals("mm")){
            if(meinArray[1][1]=="="){
                meinArray[1][1]="O";
                x = true;
            }
            else{Belegt();}
        }
        if(Position.equals("mitterechts") || Position.equals("mr")){
            if(meinArray[1][2]=="="){
                meinArray[1][2]="O";
                x = true;
            }
            else{Belegt();}   
        }
        
        if(Position.equals("untenlinks") || Position.equals("ul")){
            if(meinArray[2][0]=="="){
                meinArray[2][0]="O";
                x = true;
            }
            else{Belegt();}
        }
        if(Position.equals("untenmitte") || Position.equals("um")){
            if(meinArray[2][1]=="="){
                meinArray[2][1]="O";
                x = true;
            }
            else{Belegt();}
        }
        if(Position.equals("untenrechts") || Position.equals("ur")){
            if(meinArray[2][2]=="="){
                meinArray[2][2]="O";
                x = true;
            }
            else{Belegt();}
        }
      }
        
      for(int i=0; i<3; i++){
        for(int j=0; j<3; j++){
            System.out.print(meinArray[i][j]);
            System.out.print(" ");
        }
        System.out.println(" ");
      }
      
      counter++;
      counterZ++;
      System.out.println(" ");
        
      for(int k=0; k<3; k++){
        if (meinArray[k][0]==meinArray[k][1] && meinArray[k][0]==meinArray[k][2]) {
            if (meinArray[k][0] != "=" && meinArray[k][0] != "X"){
                System.out.println(Beginner + " - Sie haben nach " + counterZ + " Zuegen gewonnen!");
                counter=10;
            }
        }
      }

      for(int k=0; k<3; k++){
        if (meinArray[0][k]==meinArray[1][k] && meinArray[0][k]==meinArray[2][k]) {
            if (meinArray[0][k] != "=" && meinArray[0][k] != "X"){
                System.out.println(Beginner +" - Sie haben nach " + counterZ + " Zuegen gewonnen!");
                counter=10;
            }
        }
      }
    
      if (meinArray[0][0]==meinArray[1][1] && meinArray[0][0]==meinArray[2][2] || meinArray[0][2]==meinArray[1][1] && meinArray[0][2]==meinArray[2][0]) {
        if (meinArray[1][1] != "="){
            System.out.println(Beginner + " - Sie haben nach " + counterZ + " Zuegen gewonnen!");
            counter=10;
        }
      }
    
//Spieler2
     if(counter<9){
        System.out.println(Zweiter + " ist am Zug: ");
        
      Boolean y = false;
      while (y == false){
        
        String Position2 = scanner.nextLine();
            
        while (!Position2.equals("obenlinks") && !Position2.equals("ol") && !Position2.equals("obenmitte") && !Position2.equals("om") && !Position2.equals("obenrechts") && !Position2.equals("or") && !Position2.equals("mittelinks") && !Position2.equals("ml") && !Position2.equals("mittemitte") && !Position2.equals("mm") && !Position2.equals("mitterechts") && !Position2.equals("mr") && !Position2.equals("untenlinks") && !Position2.equals("ul") && !Position2.equals("untenmitte") && !Position2.equals("um") && !Position2.equals("untenrechts") && !Position2.equals("ur")) {
                System.out.println("Vertippt! Nochmal Bitte: ");
                Position2 = scanner.nextLine();
        }
            
        if(Position2.equals("obenlinks") || Position2.equals("ol")){
            if(meinArray[0][0]=="="){
                meinArray[0][0]="X";
                y = true;
            }
            else{Belegt();}}
        if(Position2.equals("obenmitte") || Position2.equals("om")){
            if(meinArray[0][1]=="="){
                meinArray[0][1]="X";
                y = true;
            }
            else{Belegt();}
        }
        if(Position2.equals("obenrechts") || Position2.equals("or")){
            if(meinArray[0][2]=="="){
                meinArray[0][2]="X";
                y = true;
            }
            else{Belegt();}
        }
            
        if(Position2.equals("mittelinks") || Position2.equals("ml")){
            if(meinArray[1][0]=="="){
                meinArray[1][0]="X";
                y = true;
            }
            else{Belegt();}
        }
        if(Position2.equals("mittemitte") || Position2.equals("mm")){
            if(meinArray[1][1]=="="){
                meinArray[1][1]="X";
                y = true;
            }
            else{Belegt();}
        }
        if(Position2.equals("mitterechts") || Position2.equals("mr")){
            if(meinArray[1][2]=="="){
                meinArray[1][2]="X";
                y = true;
            }
            else{Belegt();}
        }
            
        if(Position2.equals("untenlinks") || Position2.equals("ul")){
            if(meinArray[2][0]=="="){
                meinArray[2][0]="X";
                y = true;
            }
            else{Belegt();}
        }
        if(Position2.equals("untenmitte") || Position2.equals("um")){
            if(meinArray[2][1]=="="){
                meinArray[2][1]="X";
                y = true;
            }
            else{Belegt();}
        }
        if(Position2.equals("untenrechts") || Position2.equals("ur")){
            if(meinArray[2][2]=="="){
                meinArray[2][2]="X";
                y = true;
            }
            else{Belegt();}
        }
      }
            
      for(int i=0; i<3; i++){
        for(int j=0; j<3; j++){
            System.out.print(meinArray[i][j]);
            System.out.print(" ");
        }
        System.out.println(" ");
      }
      
      counter++;
      counterZ++;
      System.out.println(" ");
         
      for(int k=0; k<3; k++){
        if (meinArray[k][0]==meinArray[k][1] && meinArray[k][0]==meinArray[k][2]) {
            if (meinArray[k][0] != "=" && meinArray[k][0] != "O"){
                System.out.println(Zweiter + " - Sie haben nach " + counterZ + " Zuegen gewonnen!");
                counter=10;
            }
        }
      }

      for(int k=0; k<3; k++){
        if (meinArray[0][k]==meinArray[1][k] && meinArray[0][k]==meinArray[2][k]) {
            if (meinArray[0][k] != "=" && meinArray[0][k] != "O"){
                System.out.println(Zweiter + " - Sie haben nach " + counterZ + " Zuegen gewonnen!");
                counter=10;
            }
        }
      }
    
      if (meinArray[0][0]==meinArray[1][1] && meinArray[0][0]==meinArray[2][2] || meinArray[0][2]==meinArray[1][1] && meinArray[0][2]==meinArray[2][0]) {
        if (meinArray[1][1] != "="){
            System.out.println(Zweiter + " - Sie haben nach " + counterZ + " Zuegen gewonnen!");
            counter=10;
        }
      }
     
     }
     }
      if(counterZ == 9){
          System.out.println("Unentschieden!");
      }
    }
}