diff --git a/src/HighScore.txt b/src/HighScore.txt
index 25bf17fc5aaabd17402e77a2b16f95fbea7310d2..bf0d87ab1b2b0ec1a11a3973d2845b42413d9767 100644
--- a/src/HighScore.txt
+++ b/src/HighScore.txt
@@ -1 +1 @@
-18
\ No newline at end of file
+4
\ No newline at end of file
diff --git a/src/Images1/player2.png b/src/Images1/player2.png
new file mode 100644
index 0000000000000000000000000000000000000000..688812eaba4982520fa0e5a86e573f9ac64f57f9
Binary files /dev/null and b/src/Images1/player2.png differ
diff --git a/src/Images1/player2_sliding.png b/src/Images1/player2_sliding.png
new file mode 100644
index 0000000000000000000000000000000000000000..f87ac1d9abc8b7348ea582dbc05a762f9d26c34c
Binary files /dev/null and b/src/Images1/player2_sliding.png differ
diff --git a/src/constants/Constants.java b/src/constants/Constants.java
index a1007ecdf360b557619a8041c4d250afc7369189..4c8469a8a4e0c9a65bed5de0060bb1a685f0b2b8 100644
--- a/src/constants/Constants.java
+++ b/src/constants/Constants.java
@@ -27,6 +27,8 @@ public interface Constants {
 	// Player
 	String slidingPlayerImg = "src/Images1/player_sliding.png";
 	String playerImg = "src/Images1/player.png";
+	String slidingPlayerImg2 = "src/Images1/player2_sliding.png";
+	String playerImg2 = "src/Images1/player2.png";
 	double playerWidth = 100;
 	double playerHeight = 100;
 	
diff --git a/src/states/Antagonist.java b/src/states/Antagonist.java
index a451535b9007ff5b5fa464977e2dfb5c43c7d7b1..f93d6a72764dd90a54f25c8f54b6240957410b7d 100644
--- a/src/states/Antagonist.java
+++ b/src/states/Antagonist.java
@@ -27,6 +27,18 @@ public abstract class Antagonist {
 		}
 	}
 	
+	public Antagonist(String image) {
+		this.collisionDetected = false;
+
+		try {
+			this.img = new Image(new FileInputStream(image));
+
+		} catch (FileNotFoundException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+	}
+	
 	public abstract boolean playerAntagonistCollision(Player player);
 	
 	public void setAntagonistX(double pos) {
diff --git a/src/states/Enemy.java b/src/states/Enemy.java
index 778e529a011c946fa27750f7d42f08ff81f42114..b3b2a9fc85342fecb01449e8e41098884ab04022 100644
--- a/src/states/Enemy.java
+++ b/src/states/Enemy.java
@@ -8,70 +8,66 @@ import constants.Constants;
 import javafx.scene.image.Image;
 import javafx.scene.image.ImageView;
 
-public class Enemy {
+public class Enemy extends Antagonist{
 
 	private double enemyX = -100.00;
 	private double enemyY = 250.00;
 	private Image image;
 	private ImageView enemyView;
 
-	public Enemy(String enemyImg) {
+	public Enemy(String enemyImg, double x, double y) {
+		super(enemyImg, x, y);
 
-		try {
-			image = new Image(new FileInputStream(enemyImg));
-
-		} catch (FileNotFoundException e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		}
 	}
 
 	//	if (collided && enemy.getEnemyX() < player.getPlayerX()) {
 	//		collided = false;
 	//	}
 
-	public boolean playerEnemyCollision(Player player) {
-		boolean hit = false;
-
-		if ((enemyX < (player.getPlayerX() + 80.00)) && ((enemyX) > player.getPlayerX())) { //borde vara +80 på enemyx men funkar ej
-//			if((player.getPlayerY() + 60.00) >= enemyY) {
-//			if((player.getPlayerY() + 60.00) >= enemyY) {
-				//			if ((enemyY + 80  > (player.getPlayerY())) && ((player.getPlayerY() + 80) > enemyY))  {
+	@Override
+	public boolean playerAntagonistCollision(Player player) {
+//		boolean hit = false;
+
+		boolean collisionX = player.getPlayerX() < (x + 60.00) && (player.getPlayerX() + 60.00) > x;
+
+		// Check for collision on the y-axis
+		boolean collisionY = player.getPlayerY() < (y + 45.00) && (player.getPlayerY() + 60.00) > y;
+
+		if (collisionY && collisionX && !collisionDetected) {
+			player.decreaseLives();
+
+			 collisionDetected = true;
+		        return true;
+		    }
+		    
+		    if (!collisionX) {
+	            collisionDetected = false;
+	        }
+		
+		return false;
+		//		if ((enemyX < (player.getPlayerX() + 80.00)) && ((enemyX) > player.getPlayerX())) { //borde vara +80 på enemyx men funkar ej
+		////			if((player.getPlayerY() + 60.00) >= enemyY) {
+		////			if((player.getPlayerY() + 60.00) >= enemyY) {
+		//				//			if ((enemyY + 80  > (player.getPlayerY())) && ((player.getPlayerY() + 80) > enemyY))  {
+		//				hit = true;
+		//				player.decreaseLives();
+		////				if (hit && enemyX < player.getPlayerX() + 100) {
+		////					hit = false;
+		////				}
+		//
+		//			}
+		//	
+		//		System.out.println("helooooooooo");
+		//
+		//		return hit;
+	}  
 
-				hit = true;
-				player.decreaseLives();
-//				if (hit && enemyX < player.getPlayerX() + 100) {
-//					hit = false;
-//				}
 
-			}
 	
 
-		return hit;
-	}
-
-
-
-	public void setEnemyX(double pos) {
-
-		this.enemyX = pos;
-
-	}
-
-	public Image getImage() {
-		return image;
-	}
-
-	public double getEnemyX() {
-		return enemyX;
-	}
-
-	public ImageView getEnemyView() {
-		return enemyView;
-	}
-
-	public double getEnemyY() {
-		return enemyY;
+	@Override
+	public double getY() {
+		return y;
 	}
 
 
diff --git a/src/states/FlyingEnemy.java b/src/states/FlyingEnemy.java
index d31642b64020448ff66e34c92403a67928543ee1..66f5baf705f4b2749696c93af3b43c46c780d7c4 100644
--- a/src/states/FlyingEnemy.java
+++ b/src/states/FlyingEnemy.java
@@ -64,6 +64,15 @@ public class FlyingEnemy extends Antagonist{
 //		//		
 //	}
 
+	public FlyingEnemy(String enemyImg) {
+		super(enemyImg);
+		this.enemyY = new ArrayList<Double>();
+//		this.enemyY.add(200.00);
+		this.enemyY.add(210.00);
+//		this.enemyY.add(220.00);
+		this.enemyY.add(250.00);
+	}
+
 	@Override
 	public boolean playerAntagonistCollision(Player player) {
 //		boolean hit = false;
@@ -73,10 +82,10 @@ public class FlyingEnemy extends Antagonist{
 //	    // Check for collision on the y-axis
 //	    boolean collisionY = player.getPlayerY() < (currY + Constants.enemyHeight) && (player.getPlayerY() + Constants.playerHeight) > currY;
 		
-		boolean collisionX = player.getPlayerX() < (x + 60) && (player.getPlayerX() + 60) > x;
+		boolean collisionX = player.getPlayerX() < (x + 60.00) && (player.getPlayerX() + 60.00) > x;
 
 	    // Check for collision on the y-axis
-	    boolean collisionY = player.getPlayerY() < (currY + 60) && (player.getPlayerY() + 60) > currY;
+	    boolean collisionY = player.getPlayerY() < (currY + 45.00) && (player.getPlayerY() + 60.00) > currY;
 
 
 	    if (collisionX && collisionY && !collisionDetected) {
diff --git a/src/states/MenuState.java b/src/states/MenuState.java
index 1c2fe4006256b864bb2c9d1740bf41d4ca27a92f..47b2e6e33c7a5d3e963020cb4e8470560b321e28 100644
--- a/src/states/MenuState.java
+++ b/src/states/MenuState.java
@@ -31,11 +31,11 @@ public class MenuState extends GameState {
 	// A PlayState, so we can change to the PlayState from the menu.
 	private PlayState playState;
 	private Image dinosaur;
+	private boolean mode1;
 
 	public MenuState(GameModel model) {
 		super(model);
-		playState = new PlayState(model);
-		informationText = "Welcome to the Dino game!\nTo play, press ENTER for mode 1 or SPACE for mode 2\nEscape to exit game";
+		informationText = "Welcome to the Dino game!\nTo play, press 1 for mode 1 or 2 for mode 2\nEscape to exit game";
 		bgColor = Color.GREY;
 		fontColor = Color.LIGHTBLUE;
 		
@@ -70,11 +70,18 @@ public class MenuState extends GameState {
 	public void keyPressed(KeyEvent key) {
 		System.out.println("Trycker på " + key.getText() + " i MenuState");
 
-		if (key.getCode() == KeyCode.ENTER) {
+		if (key.getCode() == KeyCode.DIGIT1) {
+			mode1 = true;
+			playState = new PlayState(model, mode1);
+			model.switchState(playState);
+		} else if (key.getCode() == KeyCode.DIGIT2) {
+			mode1 = false;
+			playState = new PlayState(model, mode1);
 			model.switchState(playState);
 		} else if (key.getCode() == KeyCode.ESCAPE) {
 			System.exit(0);
 		}
+		
 	}
 
 	@Override
diff --git a/src/states/PlayState.java b/src/states/PlayState.java
index 653bfd0796b72bf6e7645b545e5c7932113ba354..acc0f77cfcc71a961a619148cc79285ff131c88b 100644
--- a/src/states/PlayState.java
+++ b/src/states/PlayState.java
@@ -41,6 +41,7 @@ public class PlayState extends GameState {
 	private String livesleft;
 	private String gameOverText;
 	private Color bgColor;
+	private Color lineColor;
 	private Color fontColor;
 	private Player player;
 	private Enemy enemy;
@@ -56,6 +57,7 @@ public class PlayState extends GameState {
 	private FlyingEnemy flyingEnemy;
 	private double tempy;
 	private Random engen;
+	private String slidingPlayer;
 
 
 	/* Class only used for testing */
@@ -63,22 +65,49 @@ public class PlayState extends GameState {
 	//	TODO nästa steg, lägg in en flygande enemy för att testa glid funktionen, ändra boundsen på den glidande bilden!
 	// 	TODO kanske ta bort att skicka med image när man instansierar player
 
-	public PlayState(GameModel model) {
+	public PlayState(GameModel model, boolean mode) {
 		super(model);
 		informationText = "Press Escape \nTo Return To The Menu";
 		livesleft = "Lives left: ";
 		gameOverText = "GAMEOVER\n" + informationText;
-		bgColor = Color.BEIGE;
-		fontColor = Color.BLUE;
+		fontColor = Color.BLACK;
 		scoreText = "Highscore: " + Integer.toString(score.getHighScore());
 		//		+ Integer.toString(score.getHighScore());
 
+		if (mode) {
+			mode1();
+		} else {
+			mode2();
+		}
+
+		//		menu = new MenuState(model);
+
+	}
+
+	public void mode1() {
 		player = new Player(Constants.playerImg);
-		enemy = new Enemy(Constants.enemyImg);
+		slidingPlayer = Constants.slidingPlayerImg;
+		enemy = new Enemy(Constants.enemyImg, 800.00, 250.00);
 		extraLife = new ExtraLifePowerUp(Constants.lifeImg);
-		flyingEnemy = new FlyingEnemy(Constants.flyingEnemyImg, 800.00, 0.00);
+		flyingEnemy = new FlyingEnemy(Constants.flyingEnemyImg);
+		flyingEnemy.setAntagonistX(800.00);
+		tempy = flyingEnemy.getY();
+		bgColor = Color.ROYALBLUE;
+		lineColor = Color.WHITE;
+
+	}
+
+	public void mode2() {
+		player = new Player(Constants.playerImg2);
+		slidingPlayer = Constants.slidingPlayerImg2;
+		enemy = new Enemy(Constants.enemyImg, 800.00, 250.00);
+		extraLife = new ExtraLifePowerUp(Constants.lifeImg);
+		flyingEnemy = new FlyingEnemy(Constants.flyingEnemyImg);
+		flyingEnemy.setAntagonistX(800.00);
+		tempy = flyingEnemy.getY();
+		bgColor = Color.BEIGE;
+		lineColor = Color.BLACK;
 
-		//		menu = new MenuState(model);
 
 	}
 
@@ -104,19 +133,18 @@ public class PlayState extends GameState {
 
 		//		ritar ut marklinjen
 
-		g.setStroke(Color.BLACK);
+		g.setStroke(lineColor);
 		g.setLineWidth(1);
 		g.setLineDashes(2);
 		g.strokeLine(Constants.screenWidth, 350, 0, 350);
 
-		//		om enemy är ute ur frame, ställer dem om positionen på den så att den börjar om
-
+		//		om enemy är ute ur frame, ställer dem om positionen på den så att1
 
 
 		//		Ritar enemy och player
-//		g.drawImage(extraLife.getImage(), extraLife.getPowerUpX(), extraLife.getPowerUpY(), 40, 40);
+		//		g.drawImage(extraLife.getImage(), extraLife.getPowerUpX(), extraLife.getPowerUpY(), 40, 40);
 		g.drawImage(player.getImage(), player.getPlayerX(), player.getPlayerY(), Constants.playerWidth, Constants.playerHeight);
-//		g.drawImage(enemy.getImage(), enemy.getEnemyX(), enemy.getEnemyY(), Constants.enemyWidth, Constants.enemyHeight);
+		//		g.drawImage(enemy.getImage(), enemy.getEnemyX(), enemy.getEnemyY(), Constants.enemyWidth, Constants.enemyHeight);
 		drawEnemy(g);
 
 		//		TODO kanske göra en random här också, som väljer om vi ska rita de olika enemies eller powerupsen. Vid en viss score
@@ -127,49 +155,28 @@ public class PlayState extends GameState {
 
 	public void drawEnemy(GraphicsContext g) {
 		engen = new Random(); 
-		
-//		
-//		if (player.getPasses() > 5) {
-//			boolean b = engen.nextBoolean();
-//			System.out.println(b);
-//			
-//			if (b) {
-				g.drawImage(flyingEnemy.getImage(), flyingEnemy.getX(), tempy, 80, 80);
-				if (flyingEnemy.getX() < 0 - Constants.enemyWidth) {
-					flyingEnemy.setAntagonistX(Constants.screenWidth);
-					tempy = flyingEnemy.getY();
-					player.updatePasses(1);
 
-				}
-//			} else if (!b){
-//				g.drawImage(enemy.getImage(), enemy.getEnemyX(), enemy.getEnemyY(), Constants.enemyWidth, Constants.enemyHeight);
-//				if (enemy.getEnemyX() < 0 - Constants.enemyWidth) {
-//					enemy.setEnemyX(Constants.screenWidth);
-//					player.updatePasses(1);
-//				}
 
-//			}
-//		} else {
-//			g.drawImage(enemy.getImage(), enemy.getEnemyX(), enemy.getEnemyY(), Constants.enemyWidth, Constants.enemyHeight);
-//			if (enemy.getEnemyX() < 0 - Constants.enemyWidth) {
-//				enemy.setEnemyX(Constants.screenWidth);
-//				player.updatePasses(1);
-//			}
+		g.drawImage(enemy.getImage(), enemy.getX(), enemy.getY(), Constants.enemyWidth, Constants.enemyHeight);
+		if (enemy.getX() < 0 - Constants.enemyWidth) {
+			enemy.setAntagonistX(Constants.screenWidth);
+			player.updatePasses(1);
+		}
+
+	}
 
-//		}
-		
-		//		enemy = new Enemy(Constants.enemyImg);
-	
 
 
 
-		//TODO om score är större än visst antal --> lotta mellan flying och vanlig, vi kan göra en random med 2 int, ochberoende på vad den blir kan vi rita en
-		//TODO göra en variabel för y positionen som hämtas om vi ritar flygande, för att den ska behålla samma position på hela y axeln
+
+	//TODO om score är större än visst antal --> lotta mellan flying och vanlig, vi kan göra en random med 2 int, ochberoende på vad den blir kan vi rita en
+	//TODO göra en variabel för y positionen som hämtas om vi ritar flygande, för att den ska behålla samma position på hela y axeln
+
+
 
 
 
 
-		
 
 
 
@@ -177,7 +184,6 @@ public class PlayState extends GameState {
 
 
 
-	}
 
 
 	@Override
@@ -220,41 +226,28 @@ public class PlayState extends GameState {
 	public void update() {
 		//om enemy position är mindre än player och collide är true kollar den inte collision
 
-		clearedEnemies ++;
-
 		//		Enemy hoppar 10 snäpp till vänster för varje update
-//		enemy.setEnemyX(enemy.getEnemyX()-10);
-		flyingEnemy.setAntagonistX(flyingEnemy.getX() -10);
+		enemy.setAntagonistX(enemy.getX()-10);
+		//		flyingEnemy.setAntagonistX(flyingEnemy.getX() -10);
 
 		//		Om 
 		if (!gameOver) {
 
 			if (!collided) {
-//				collided = enemy.playerEnemyCollision(player);
-				collided = flyingEnemy.playerAntagonistCollision(player);
+				collided = enemy.playerAntagonistCollision(player);
+
+
 				if (Integer.valueOf(player.getLives()) == 0) {
 					gameOver = true;
-				}
+				} 
 			}
-			if (collided && flyingEnemy.getX() < player.getPlayerX()) {
+			if (collided && enemy.getX() < player.getPlayerX()) {
 				collided = false;
 			}
 
 
 
-			////		Så länge enemy och player har överlappande X koordinat(och inte redan har kolliderat), kollar vi om dem kolliderar på Y axeln
-			//			if ((enemy.getEnemyX() <= (player.getPlayerX() + 80)) && (enemy.getEnemyX() > player.getPlayerX())) {
-			//				//				if (!collided && enemy.getEnemyX() > player.getPlayerX()) {
-			//				if (!collided) {
-			//					checkCollision();
-			//				}
-			//				//				clearedEnemies ++;
-			//			}
-			//
-			//			if (collided && enemy.getEnemyX() < player.getPlayerX()) {
-			//				collided = false;
-			//			}
-
+			
 
 			if (up) {
 
@@ -267,53 +260,14 @@ public class PlayState extends GameState {
 
 			if (down) {
 
-				player.slide();
+				player.slide(slidingPlayer);
 			}
 
 		}
 
 	}
 
-	public void checkCollision() {
-
-		//		Om vi kolliderar på Y axeln
-
-		//		if ((enemy.getEnemyX() <= (player.getPlayerX() + 80)) && (enemy.getEnemyX() > player.getPlayerX()) && ((player.getPlayerY() + 60) >= enemy.getEnemyY() )) {
-		//
-		//			collided = true;
-		//			System.out.println("helo");
-		//			//			Sätta någon variabel till något värde. Om denna variabel eller boolean inte är tom nästa update så har en krock skett.
-		//
-		//		} 
-		//
-		//		player.decreaseLives(collided);
-
 
-		//		if ((enemy.getEnemyX() <= (player.getPlayerX() + 80)) && (enemy.getEnemyX() > player.getPlayerX())) {
-		//			//			System.out.println("helo");
-		if((player.getPlayerY() + 60) >= enemy.getEnemyY() ) {
-			collided = true;
-			//			System.out.println("fäk");
-			if (Integer.valueOf(player.getLives()) == 1) {
-				//								menu = new MenuState(model);
-				//				model.switchState(menu);
-				gameOver = true;
-				score.saveScore(clearedEnemies);
-
-			}
-			player.decreaseLives();
-			//			System.out.println(player.getLives());
-
-		}
-		//				System.out.println("slipped by enemy");
-		//			}
-		//		} 
-
-
-		//				clearedEnemies ++;
-
-
-	}
 
 
 
diff --git a/src/states/Player.java b/src/states/Player.java
index 8378c54ae8a5796a4254ce32ac0bbf0e8cd545e0..9b9b706612cad69b19c8d573e7fd2448b655b4fd 100644
--- a/src/states/Player.java
+++ b/src/states/Player.java
@@ -28,6 +28,14 @@ public class Player {
 	//	private ImageView playerView;
 
 
+//	public double getPlayerHeight() {
+//		return playerHeight;
+//	}
+
+
+
+
+
 	public int getPasses() {
 		return passes;
 	}
@@ -48,7 +56,7 @@ public class Player {
 
 		try {
 			image = new Image(new FileInputStream(playerImg));
-			slidingImage = new Image(new FileInputStream(Constants.slidingPlayerImg));
+			//slidingImage = new Image(new FileInputStream(Constants.slidingPlayerImg));
 	
 		} catch (FileNotFoundException e) {
 			// TODO Auto-generated catch block
@@ -123,9 +131,19 @@ public class Player {
 	}
 
 
-	public void slide() {
+	public void slide(String img) {
+		try {
+			slidingImage = new Image(new FileInputStream(img));
+			//slidingImage = new Image(new FileInputStream(Constants.slidingPlayerImg));
+	
+		} catch (FileNotFoundException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
 
+	
 		currImage = slidingImage;
+		
 			
 	}