diff --git a/src/SceneController.java b/src/SceneController.java
index 3d67bf7a71f49b128a7a3a1f5efce68a76dd4c43..00f90215c8f168ad8a5a219e42fc1a747c824032 100644
--- a/src/SceneController.java
+++ b/src/SceneController.java
@@ -13,7 +13,7 @@ public class SceneController {
     private Actor player;
     private Actor enemy;
 
-    public boolean playerTurn = true;
+    public int playerTurn = 1;
 
     public void initData(Board board, Actor player, Actor enemy) {
         this.board = board;
@@ -22,7 +22,7 @@ public class SceneController {
     }
 
     public void playerTurn(){
-        this.playerTurn = true;
+        this.playerTurn = 1;
         turnlabel.setText("Your Turn");
     }
 
@@ -53,12 +53,30 @@ public class SceneController {
         buttonList.add(button9);
     }
 
-    public void aiTurn(int col, int row){
+    public void aiTurn(){
+        // AI's Turn
+        playerTurn = 0;
+        turnlabel.setText("AI's Turn");
+        int[] coordinates = enemy.makeMove(board);
+        // DEBUG
+        System.out.println("Enemy: " + coordinates[0] + ", " + coordinates[1]);
         initialize();
-        buttonList.get(col + row).setText("o");
+        buttonList.get(coordinates[0] + coordinates[1]).setText("o");
         playerTurn();
     }
 
+    public void over(){
+        if(board.checkForWin()){
+            System.out.println("Game is over!");
+            if(playerTurn == 0){
+                turnlabel.setText("You win!");
+            }else if(playerTurn == 1){
+                turnlabel.setText("You lose!");
+            }
+
+            playerTurn = -1;
+        }
+    }
 
     // Diese Funktion wird beim Button-Click aufgerufen
     @FXML
@@ -71,15 +89,16 @@ public class SceneController {
         int row = GridPane.getRowIndex(pressedButton);  // Zeilen-Koordinate
         int col = GridPane.getColumnIndex(pressedButton);  // Spalten-Koordinate
 
-        if(buttonText.equals(" ") && playerTurn) {
+        over();
+
+        if(buttonText.equals(" ") && playerTurn == 1) {
             // Setze X
             pressedButton.setText("X");
 
             player.makeMove(board, col, row);
+            over();
 
-            // AI's Turn
-            playerTurn = false;
-            turnlabel.setText("AI's Turn");
+            aiTurn();
         }
 
     }
diff --git a/src/TicTacToe.java b/src/TicTacToe.java
index 0e6bd068002ae61e4744119dfb13c9a22381a997..2e475b3f9f64a367d083ce3e87430dbb56ac21db 100644
--- a/src/TicTacToe.java
+++ b/src/TicTacToe.java
@@ -42,26 +42,6 @@ public class TicTacToe extends Application {
 
         launch(args);
 
-        while (!board.checkForWin()){
-
-            if (sceneController.playerTurn) {
-                // TODO Spieler ist am Zug
-                continue;
-
-            } else {
-                // TODO Gegner ist am Zug
-
-
-            }
-            // TODO Spielablauf
-
-        }
-
-        // TODO Spiel beenden
-
-        // TODO Gewinner verkünden
-
-        // TODO Option zum Neustart
 
     }
 }
diff --git a/src/logic/Actor.java b/src/logic/Actor.java
index ded26e333faffc6c585e6c89129a791716b64175..fe7d09658d415531c70883f348fc3a741f6ea595 100644
--- a/src/logic/Actor.java
+++ b/src/logic/Actor.java
@@ -8,4 +8,20 @@ public interface Actor {
     public char getSymbol();
     public void setSymbol(char symbol);
 
+    // Methode für Spieler mit Koordinaten
+    default boolean makeMove(Board board, int x, int y) {
+        return board.placeToken(x, y, symbol);
+    }
+
+    // Methode für Gegner (Zufallsgenerator)
+    default int[] makeMove(Board board) {
+        Random random = new Random();
+        int x, y;
+        do {
+            x = random.nextInt(3);
+            y = random.nextInt(3);
+        } while (!board.placeToken(x, y, symbol));
+        int[] coordinates = {x, y};
+        return coordinates;
+    }
 }
diff --git a/src/logic/Enemy.java b/src/logic/Enemy.java
index 215d22acb597b28c49eef8d0530dfbd771408d17..14bc12b474aabb6764b3584b283b1e3d5db434a8 100644
--- a/src/logic/Enemy.java
+++ b/src/logic/Enemy.java
@@ -1,7 +1,5 @@
 package logic;
 
-import java.util.Random;
-
 public class Enemy implements Actor {
     public char symbol;
     public Enemy() {
@@ -18,16 +16,4 @@ public class Enemy implements Actor {
         this.symbol = symbol;
     }
 
-    // Methode, um den nächsten Zug des Akteurs zu machen
-    public boolean makeMove(Board board) {
-        Random random = new Random();
-        int x;
-        int y;
-        do {
-            x = random.nextInt(3);
-            y = random.nextInt(3);
-        } while (!board.placeToken(x, y, symbol));
-        return true;
-    }
-
 }
diff --git a/src/logic/Player.java b/src/logic/Player.java
index 1c5bf77e745029a2c80f14ededd6d56d0a0f7659..a7b263ba0e45e31f4d01ccd2ae7cf2e662524117 100644
--- a/src/logic/Player.java
+++ b/src/logic/Player.java
@@ -16,10 +16,4 @@ public class Player implements Actor {
         this.symbol = symbol;
     }
 
-    // Methode, um den nächsten Zug des Akteurs zu machen
-
-    public boolean makeMove(Board board, int x, int y) {
-        return board.placeToken(x, y, symbol);
-    }
-
 }