diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/GameSceneController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/GameSceneController.java
index c04aa065b335ea5b282593312124df244dc4d84f..6d0c7fe104b1d1573dd550ebac22f5b9e8a4e51b 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/GameSceneController.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/GameSceneController.java
@@ -29,6 +29,7 @@ public class GameSceneController implements Initializable {
     InputHandler inputHandler = InputHandler.getInstance();
 
     IEntity player;
+    IEntity enemy;
 
 
     @Override
@@ -36,6 +37,7 @@ public class GameSceneController implements Initializable {
         graphicsContext2D = canvas2D.getGraphicsContext2D();
 
         player = EntityFactory.createEntity(EntityType.PLAYER, graphicsContext2D, inputHandler);
+        enemy = EntityFactory.createEntity(EntityType.ENEMY_PLAYER, graphicsContext2D, inputHandler);
 
         AnimationTimer gameLoop = new AnimationTimer() {
             @Override
@@ -50,10 +52,16 @@ public class GameSceneController implements Initializable {
     }
 
     private void updateContent() {
-        player.updateEntityMovement();
+        player.updateEntityMovement(this);
+        enemy.updateEntityMovement(this);
     }
 
     private void renderContent(GraphicsContext graphicsContext) {
         player.renderEntity(graphicsContext);
+        enemy.renderEntity(graphicsContext);
+    }
+
+    public IEntity getEnemy() {
+        return enemy;
     }
 }
\ No newline at end of file
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Main/Main.java b/src/main/java/de/hdm_stuttgart/battlearena/Main/Main.java
index 171f21c307d9d4270255b6ce47f43e1f47ba77cb..db7be08c430fdc16415e617929e3488bc5c148f0 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Main/Main.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Main/Main.java
@@ -24,7 +24,7 @@ public class Main extends Application {
 
     @Override
     public void start(Stage stage) throws Exception {
-        Parent root = FXMLLoader.load(Objects.requireNonNull(getClass().getResource("/fxml/MainMenu.fxml")));
+        Parent root = FXMLLoader.load(Objects.requireNonNull(getClass().getResource("/fxml/GameScene.fxml")));
 
         Scene scene = new Scene(root);
 
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/CollisionHandler.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/CollisionHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..2cd9e59ca6dc079a24d0eb2d1cfae61caa177915
--- /dev/null
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/CollisionHandler.java
@@ -0,0 +1,70 @@
+package de.hdm_stuttgart.battlearena.Model.Entity;
+
+import javafx.scene.shape.Rectangle;
+
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+
+public class CollisionHandler {
+
+    private static final Logger log = LogManager.getLogger(CollisionHandler.class);
+
+    public CollisionHandler() {
+        log.debug("CollisionHandler initialized");
+    }
+
+    public boolean handleEntityCollision(IEntity player, IEntity entity) {
+        Rectangle playerBoxCollider = player.getBoxCollider();
+        Rectangle entityBoxCollider = entity.getBoxCollider();
+
+        int playerColliderLeftX = (int) playerBoxCollider.getX();
+        int playerColliderRightX = (int) (playerBoxCollider.getX() + playerBoxCollider.getWidth());
+        int playerColliderTopY = (int) playerBoxCollider.getY();
+        int playerColliderBottomY = (int) (playerBoxCollider.getY() + playerBoxCollider.getHeight());
+
+        int entityColliderLeftX = (int) entityBoxCollider.getX();
+        int entityColliderRightX = (int) (entityBoxCollider.getX() + entityBoxCollider.getWidth());
+        int entityColliderTopY = (int) entityBoxCollider.getY();
+        int entityColliderBottomY = (int) (entityBoxCollider.getY() + entityBoxCollider.getHeight());
+
+        int playerSpeed = player.getEntitySpeed();
+        int nextPlayerXPos;
+        int nextPlayerYPos;
+
+        switch (player.getEntityDirection()) {
+            case UP:
+                nextPlayerYPos = playerColliderTopY - playerSpeed;
+                return nextPlayerYPos <= entityColliderBottomY &&
+                        playerColliderLeftX <= entityColliderRightX &&
+                        playerColliderRightX >= entityColliderLeftX;
+            case DOWN:
+                nextPlayerYPos = playerColliderBottomY + playerSpeed;
+                return nextPlayerYPos >= entityColliderTopY &&
+                        playerColliderLeftX <= entityColliderRightX &&
+                        playerColliderRightX >= entityColliderLeftX;
+            case LEFT:
+                nextPlayerXPos = playerColliderLeftX - playerSpeed;
+                return nextPlayerXPos <= entityColliderRightX &&
+                        playerColliderLeftX > entityColliderRightX &&
+                        playerColliderTopY >= entityColliderTopY &&
+                        playerColliderTopY <= entityColliderBottomY ||
+                        nextPlayerXPos <= entityColliderRightX &&
+                        playerColliderLeftX > entityColliderRightX &&
+                        playerColliderBottomY >= entityColliderTopY &&
+                        playerColliderBottomY <= entityColliderBottomY;
+            case RIGHT:
+                nextPlayerXPos = playerColliderRightX + playerSpeed;
+                return nextPlayerXPos >= entityColliderLeftX &&
+                        playerColliderLeftX < entityColliderLeftX &&
+                        playerColliderTopY >= entityColliderTopY &&
+                        playerColliderTopY <= entityColliderBottomY ||
+                        nextPlayerXPos >= entityColliderLeftX &&
+                        playerColliderLeftX < entityColliderLeftX &&
+                        playerColliderBottomY >= entityColliderTopY &&
+                        playerColliderBottomY <= entityColliderBottomY;
+            default:
+                return false;
+        }
+    }
+
+}
\ No newline at end of file
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/EnemyHandler.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/EnemyHandler.java
index c8e2638a33859d0ef3ad6b0d73f4ad9e5162570f..258a5e095acdc1372883a7869d23dbedde972915 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/EnemyHandler.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/EnemyHandler.java
@@ -1,6 +1,9 @@
 package de.hdm_stuttgart.battlearena.Model.Entity;
 
+import de.hdm_stuttgart.battlearena.Controller.GameSceneController;
 import javafx.scene.canvas.GraphicsContext;
+import javafx.scene.paint.Color;
+import javafx.scene.shape.Rectangle;
 import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.LogManager;
 
@@ -8,6 +11,11 @@ class EnemyHandler implements IEntity{
 
     private static final Logger log = LogManager.getLogger(EnemyHandler.class);
 
+    private final Rectangle boxCollider = new Rectangle(300, 200, 48, 48);
+
+    private EntityDirection entityDirection = EntityDirection.DOWN;
+
+    private int entitySpeed = 3;
 
     @Override
     public void initializeEntity() {
@@ -20,7 +28,7 @@ class EnemyHandler implements IEntity{
     }
 
     @Override
-    public void updateEntityMovement() {
+    public void updateEntityMovement(GameSceneController gameScene) {
 
     }
 
@@ -31,6 +39,23 @@ class EnemyHandler implements IEntity{
 
     @Override
     public void renderEntity(GraphicsContext graphicsContext) {
+        graphicsContext.setFill(Color.BLACK);
+        graphicsContext.fillRect(300, 200, 48, 48);
+    }
 
+    @Override
+    public Rectangle getBoxCollider() {
+        return boxCollider;
     }
+
+    @Override
+    public EntityDirection getEntityDirection() {
+        return entityDirection;
+    }
+
+    @Override
+    public int getEntitySpeed() {
+        return 3;
+    }
+
 }
\ No newline at end of file
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/IEntity.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/IEntity.java
index a8e2b2d10468df8016c0dee0a4937ee53ae23854..05611410257c5b1f5af16bf6dda8e04d53a0e282 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/IEntity.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/IEntity.java
@@ -1,6 +1,8 @@
 package de.hdm_stuttgart.battlearena.Model.Entity;
 
+import de.hdm_stuttgart.battlearena.Controller.GameSceneController;
 import javafx.scene.canvas.GraphicsContext;
+import javafx.scene.shape.Rectangle;
 
 public interface IEntity {
 
@@ -8,10 +10,16 @@ public interface IEntity {
 
    void loadEntitySprites();
 
-   void updateEntityMovement();
+   void updateEntityMovement(GameSceneController gameScene);
 
    void updateEntityAnimation();
 
    void renderEntity(GraphicsContext graphicsContext);
 
+   Rectangle getBoxCollider();
+
+   EntityDirection getEntityDirection();
+
+   int getEntitySpeed();
+
 }
\ No newline at end of file
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/Player.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/Player.java
index 92ad7f7d51dcfd72adda10723f534e3607f29f4d..4fc28e5bdf7d05fefbdffd35488a6ad11d505f2f 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/Player.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/Player.java
@@ -1,5 +1,6 @@
 package de.hdm_stuttgart.battlearena.Model.Entity;
 
+import de.hdm_stuttgart.battlearena.Controller.GameSceneController;
 import de.hdm_stuttgart.battlearena.Model.Inputs.InputHandler;
 
 import javafx.scene.canvas.GraphicsContext;
@@ -16,10 +17,11 @@ class Player implements IEntity {
     private static final Logger log = LogManager.getLogger(Player.class);
 
     InputHandler inputHandler;
+    CollisionHandler collisionHandler = new CollisionHandler();
 
     GraphicsContext gameScene;
 
-    private final Rectangle boxCollider = new Rectangle(8, 16, 32, 32);
+    private  Rectangle boxCollider;
 
     private Image directionDownOne, directionDownTwo, directionUpOne, directionUpTwo, directionLeftOne, directionLeftTwo, directionRightOne, directionRightTwo;
 
@@ -43,6 +45,7 @@ class Player implements IEntity {
     public void initializeEntity() {
         mapPosX = 10;
         mapPosY = 10;
+        boxCollider = new Rectangle(mapPosX+10, mapPosY+10, 32, 32);
         playerSpeed = 3;
         playerDirection = EntityDirection.DOWN;
     }
@@ -64,7 +67,7 @@ class Player implements IEntity {
     }
 
     @Override
-    public void updateEntityMovement() {
+    public void updateEntityMovement(GameSceneController gameScene) {
         if (inputHandler.isMoveUp() || inputHandler.isMoveDown() || inputHandler.isMoveLeft() || inputHandler.isMoveRight()) {
             if (inputHandler.isMoveUp()) {
                 playerDirection = EntityDirection.UP;
@@ -76,7 +79,7 @@ class Player implements IEntity {
                 playerDirection = EntityDirection.RIGHT;
             }
 
-            boolean isColliding = false;
+            boolean isColliding = collisionHandler.handleEntityCollision(this, gameScene.getEnemy());
 
             if (!isColliding) {
                 switch (playerDirection) {
@@ -94,6 +97,8 @@ class Player implements IEntity {
                 }
             }
 
+            boxCollider = new Rectangle(mapPosX + 10, mapPosY + 10, 32, 32);
+
             updateEntityAnimation();
 
         }
@@ -117,6 +122,8 @@ class Player implements IEntity {
     public void renderEntity(GraphicsContext graphicsContext) {
         Image playerSprite = null;
 
+        graphicsContext.strokeRect(boxCollider.getX(), boxCollider.getY(), boxCollider.getWidth(), boxCollider.getHeight());
+
         switch (playerDirection) {
             case UP:
                 if (spriteNumber == 1) {
@@ -152,7 +159,22 @@ class Player implements IEntity {
                 break;
         }
 
-        graphicsContext.drawImage(playerSprite, mapPosX, mapPosY, 128, 128);
+        graphicsContext.drawImage(playerSprite, mapPosX, mapPosY, 48, 48);
+    }
+
+    @Override
+    public Rectangle getBoxCollider() {
+        return boxCollider;
+    }
+
+    @Override
+    public EntityDirection getEntityDirection() {
+        return playerDirection;
+    }
+
+    @Override
+    public int getEntitySpeed() {
+        return playerSpeed;
     }
 
     public int getMapPosX() {