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 9594f016e560088fa42c59e54e4386fee2060aea..513c8c606c6b4883bc6cb67f99b187c09332bf27 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/GameSceneController.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/GameSceneController.java
@@ -60,6 +60,7 @@ public class GameSceneController implements Initializable {
     int horizontalTileCount = 18;
     int verticalTileCount = 18;
     int diffTileCount = 5;
+    int scaledTileSize = 48;
 
 
     @Override
@@ -67,8 +68,8 @@ public class GameSceneController implements Initializable {
         graphicsContext2D = canvas2D.getGraphicsContext2D();
         graphicsContext2D.setImageSmoothing(false);
 
-        player = EntityFactory.createEntity(EntityType.PLAYER, graphicsContext2D, inputHandler, playerClass);
-        enemy = EntityFactory.createEntity(EntityType.ENEMY_PLAYER, graphicsContext2D, inputHandler, enemyClass);
+        player = EntityFactory.createEntity(EntityType.PLAYER, graphicsContext2D, inputHandler, playerClass, this);
+        enemy = EntityFactory.createEntity(EntityType.ENEMY_PLAYER, graphicsContext2D, inputHandler, enemyClass, this);
 
         tileManager = new TileManager(graphicsContext2D, diffTileCount, horizontalTileCount, verticalTileCount, mapString);
 
@@ -99,4 +100,12 @@ public class GameSceneController implements Initializable {
     public IEntity getEnemy() {
         return enemy;
     }
+
+    public TileManager getTileManager() {
+        return tileManager;
+    }
+
+    public int getScaledTileSize() {
+        return scaledTileSize;
+    }
 }
\ No newline at end of file
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
index 030f3cc715602f835b7db2e95fb3552d76968dac..9d860c1af101e6002e51c846e70d219cee7772e1 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/CollisionHandler.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/CollisionHandler.java
@@ -1,5 +1,8 @@
 package de.hdm_stuttgart.battlearena.Model.Entity;
 
+import de.hdm_stuttgart.battlearena.Controller.GameSceneController;
+import de.hdm_stuttgart.battlearena.Model.Map.ITile;
+
 import javafx.geometry.BoundingBox;
 
 import org.apache.logging.log4j.Logger;
@@ -20,8 +23,47 @@ public class CollisionHandler {
                 colliderA.getMinY() < colliderB.getMaxY();
     }
 
-    public boolean handleMapCollision() {
-        return false;
+    public boolean handleMapCollision(IEntity entity, int scaledTileSize, GameSceneController gameSceneController) {
+        int playerLeftX = (int) (entity.getBoxCollider().getMinX());
+        int playerRightX = (int) (entity.getBoxCollider().getMinX() + entity.getBoxCollider().getWidth());
+        int playerTopY = (int) (entity.getBoxCollider().getMinY());
+        int playerBottomY = (int) (entity.getBoxCollider().getMinY() + entity.getBoxCollider().getHeight());
+
+        int leftColumn = playerLeftX / scaledTileSize;
+        int rightColumn = playerRightX / scaledTileSize;
+        int topRow = playerTopY / scaledTileSize;
+        int bottomRow = playerBottomY / scaledTileSize;
+
+        int nextPlayerTop = (playerTopY - entity.getEntitySpeed()) / scaledTileSize;
+        int nextPlayerBottom = (playerBottomY + entity.getEntitySpeed()) / scaledTileSize;
+        int nextPlayerLeft = (playerLeftX - entity.getEntitySpeed()) / scaledTileSize;
+        int nextPlayerRight = (playerRightX + entity.getEntitySpeed()) / scaledTileSize;
+
+        int[][] tileMap = gameSceneController.getTileManager().getTileMap();
+        ITile[] tileSet = gameSceneController.getTileManager().getTileSet();
+        int tileOne;
+        int tileTwo;
+
+        switch (entity.getEntityDirection()) {
+            case UP:
+                tileOne = tileMap[nextPlayerTop][leftColumn];
+                tileTwo = tileMap[nextPlayerTop][rightColumn];
+                return tileSet[tileOne].getCollision() || tileSet[tileTwo].getCollision();
+            case DOWN:
+                tileOne = tileMap[nextPlayerBottom][leftColumn];
+                tileTwo = tileMap[nextPlayerBottom][rightColumn];
+                return tileSet[tileOne].getCollision() || tileSet[tileTwo].getCollision();
+            case LEFT:
+                tileOne = tileMap[topRow][nextPlayerLeft];
+                tileTwo = tileMap[bottomRow][nextPlayerLeft];
+                return tileSet[tileOne].getCollision() || tileSet[tileTwo].getCollision();
+            case RIGHT:
+                tileOne = tileMap[topRow][nextPlayerRight];
+                tileTwo = tileMap[bottomRow][nextPlayerRight];
+                return tileSet[tileOne].getCollision() || tileSet[tileTwo].getCollision();
+            default:
+                return true;
+        }
     }
 
 }
\ 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 75ae76e99d63cd951ad1ef6ec36834e015b57db2..c8fc714cc5aa2eefe30e616b5211fe76e6457ff2 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
@@ -73,5 +73,14 @@ class EnemyHandler implements IEntity{
         return health -= damageDone;
     }
 
+    @Override
+    public int getMapPosX() {
+        return 0;
+    }
+
+    @Override
+    public int getMapPosY() {
+        return 0;
+    }
 
 }
\ No newline at end of file
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/EntityFactory.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/EntityFactory.java
index fdc56cc2fd9580d781dbf299401d5976f8f7e6ab..d5b4b382213c197e503a598e855940aa18821998 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/EntityFactory.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/EntityFactory.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;
@@ -11,10 +12,10 @@ public class EntityFactory {
 
     private static final Logger log = LogManager.getLogger(EntityFactory.class);
 
-    public static IEntity createEntity(EntityType entityType, GraphicsContext gameScene, InputHandler inputHandler, EntityClass entityClass) {
+    public static IEntity createEntity(EntityType entityType, GraphicsContext gameScene, InputHandler inputHandler, EntityClass entityClass, GameSceneController gameSceneController) {
         if (entityType == EntityType.PLAYER) {
             log.debug("Entity " + entityType + " created");
-            return new Player(gameScene, inputHandler, entityClass);
+            return new Player(gameScene, inputHandler, entityClass, gameSceneController);
         } else if (entityType == EntityType.ENEMY_PLAYER) {
             log.debug("Entity " + entityType + " created");
             return new EnemyHandler();
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 8914040bf4e8122faccdb93bd431ab7b890e80bb..92ca5b53906697c1bad96c2cbb59524b7bc2c40b 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
@@ -26,4 +26,8 @@ public interface IEntity {
 
    int gotHit(int damageDone);
 
+   int getMapPosX();
+
+   int getMapPosY();
+
 }
\ 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 8472c37772342b534d8807adbfc7bee41821d4f7..fffccf712e14e8a655bbc72622fae7e4c0d5d3b8 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
@@ -21,6 +21,8 @@ class Player implements IEntity {
 
     GraphicsContext gameScene;
 
+    GameSceneController gameSceneController;
+
     private BoundingBox boxCollider;
 
     private Image directionDownOne,
@@ -45,6 +47,8 @@ class Player implements IEntity {
     private final int playerWidth = 19;
     private final int playerHeight = 35;
 
+    private int scaledTileSize;
+
     private int mapPosX;
     private int mapPosY;
     private int playerSpeed;
@@ -53,10 +57,11 @@ class Player implements IEntity {
     private int health = 10;
     private int damage = 1;
 
-    public Player(GraphicsContext gameScene, InputHandler inputHandler, EntityClass entityClass) {
+    public Player(GraphicsContext gameScene, InputHandler inputHandler, EntityClass entityClass, GameSceneController gameSceneController) {
         this.gameScene = gameScene;
         this.inputHandler = inputHandler;
         this.entityClass = entityClass;
+        this.gameSceneController = gameSceneController;
 
         initializeEntity();
         loadEntitySprites();
@@ -64,8 +69,9 @@ class Player implements IEntity {
 
     @Override
     public void initializeEntity() {
-        mapPosX = 10;
-        mapPosY = 10;
+        scaledTileSize = gameSceneController.getScaledTileSize();
+        mapPosX = 60;
+        mapPosY = 60;
         boxCollider = new BoundingBox(mapPosX+15,mapPosY+10, playerWidth, playerHeight);
         playerSpeed = 5;
         playerDirection = EntityDirection.DOWN;
@@ -156,12 +162,12 @@ class Player implements IEntity {
                 playerDirection = EntityDirection.RIGHT;
             }
 
-            boolean isMapCollision = collisionHandler.handleMapCollision();
+            boolean isWalkableTile = collisionHandler.handleMapCollision(this, scaledTileSize, gameSceneController);
 
             int lastMapPosX = mapPosX;
             int lastMapPosY = mapPosY;
 
-            if (!isMapCollision) {
+            if (isWalkableTile) {
                 switch (playerDirection) {
                     case UP:
                         mapPosY -= playerSpeed;
@@ -328,10 +334,12 @@ class Player implements IEntity {
         return health -= damageDone;
     }
 
+    @Override
     public int getMapPosX() {
         return mapPosX;
     }
 
+    @Override
     public int getMapPosY() {
         return mapPosY;
     }
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/Map/TileManager.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/Map/TileManager.java
index cc320b3a4319b544d2348a7d2cf9ae4b844a6ba1..480478d51823c0a4992de930e4eea5f2b73f82d8 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Model/Map/TileManager.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/Map/TileManager.java
@@ -80,4 +80,12 @@ public class TileManager {
             }
         }
     }
+
+    public int[][] getTileMap() {
+        return tileMap;
+    }
+
+    public ITile[] getTileSet() {
+        return tileSet;
+    }
 }
\ No newline at end of file
diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java
index 012843cfbd2aca680928e8fb4e97d58b4018663e..13a3d1d34ef25e809dd1dd1467218739070f8357 100644
--- a/src/main/java/module-info.java
+++ b/src/main/java/module-info.java
@@ -11,4 +11,5 @@ module gui {
     exports de.hdm_stuttgart.battlearena.Controller;
     exports de.hdm_stuttgart.battlearena.Model.Entity;
     exports de.hdm_stuttgart.battlearena.Model.Inputs;
+    exports de.hdm_stuttgart.battlearena.Model.Map;
 }
\ No newline at end of file