From ba7d9e300204b72c0a09de10cf9abc361b25317a Mon Sep 17 00:00:00 2001
From: Oscar Wiberg <oscarwiberg@Oscars-MacBook-Air-3.local>
Date: Fri, 1 Dec 2023 10:54:07 +0100
Subject: [PATCH] game over screen

---
 src/HighScore.txt         |  0
 src/main/Main.java        |  1 +
 src/states/HighScore.java | 47 +++++++++++++++++++++++++
 src/states/PlayState.java | 72 ++++++++++++++++++++++++++-------------
 src/states/Player.java    | 19 +++++------
 5 files changed, 105 insertions(+), 34 deletions(-)
 create mode 100644 src/HighScore.txt
 create mode 100644 src/states/HighScore.java

diff --git a/src/HighScore.txt b/src/HighScore.txt
new file mode 100644
index 0000000..e69de29
diff --git a/src/main/Main.java b/src/main/Main.java
index 90ce02c..64200c3 100644
--- a/src/main/Main.java
+++ b/src/main/Main.java
@@ -1,6 +1,7 @@
 package main;
 
 import states.GameModel;
+
 import constants.Constants;
 
 import javafx.animation.AnimationTimer;
diff --git a/src/states/HighScore.java b/src/states/HighScore.java
new file mode 100644
index 0000000..3e2aa56
--- /dev/null
+++ b/src/states/HighScore.java
@@ -0,0 +1,47 @@
+package states;
+
+import java.io.File;
+
+import java.io.FileNotFoundException;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.Scanner;
+
+public class HighScore {
+
+
+		public void saveScore(int score) {
+			if (score > getHighScore()) {
+				try {
+					FileWriter writer = new FileWriter("src/HighScore.txt");
+					writer.write("");
+					writer.write(Integer.toString(score));
+					writer.close();
+				} catch (IOException ioe) {
+					ioe.printStackTrace();
+				}
+			}
+
+		}
+
+		public int getHighScore() {
+			int highScore = 0;
+
+			try {
+				File highScoreTxtFile = new File("src/HighScore.txt");
+				Scanner myReader = new Scanner(highScoreTxtFile);
+				while (myReader.hasNextLine()) {
+					String data = myReader.nextLine();
+					highScore = Integer.parseInt(data);
+				}
+				myReader.close();
+			} catch (FileNotFoundException e) {
+				System.out.println("File not found.");
+				e.printStackTrace();
+			}
+
+			return highScore;
+		}
+
+	}
+	
diff --git a/src/states/PlayState.java b/src/states/PlayState.java
index 31dcfe2..d7acfed 100644
--- a/src/states/PlayState.java
+++ b/src/states/PlayState.java
@@ -37,13 +37,18 @@ public class PlayState extends GameState {
 	 */
 	private String informationText;
 	private String livesleft;
+	private String gameOverText;
 	private Color bgColor;
 	private Color fontColor;
-	private boolean up = false;
 	private Player player;
 	private Enemy enemy;
 	private boolean collided = false;
+	private boolean up = false;
+	private boolean gameOver = false;
 	private MenuState menu;
+	private HighScore score = new HighScore();
+//	private int clearedEnemies;
+	private String scoreText;
 
 
 	/* Class only used for testing */
@@ -53,13 +58,16 @@ public class PlayState extends GameState {
 		super(model);
 		informationText = "Press Escape \nTo Return To The Menu";
 		livesleft = "Lives left: ";
+		gameOverText = "GAMEOVER\n" + informationText;
 		bgColor = Color.BEIGE;
 		fontColor = Color.BLUE;
+		scoreText = "Highscore: ";
+//		+ Integer.toString(score.getHighScore());
 
 		player = new Player(Constants.playerImg);
 		enemy = new Enemy(Constants.enemyImg);
-		
-//		menu = new MenuState(model);
+
+		//		menu = new MenuState(model);
 
 	}
 
@@ -72,8 +80,17 @@ public class PlayState extends GameState {
 
 		g.setFill(fontColor);
 		g.setFont(new Font(30)); // Big letters
-		g.fillText(livesleft+player.getLives(), 0, 30);
-		g.fillText(informationText, Constants.screenWidth - 300, 30);
+
+
+		if (!gameOver) {
+			g.fillText(livesleft+player.getLives(), 0, 30);
+			g.fillText(informationText, Constants.screenWidth - 300, 30);
+			g.fillText(scoreText, 0, 60);
+		} else {
+			g.fillText(gameOverText, Constants.screenWidth/2, 200);
+		}
+
+
 
 		g.setStroke(Color.BLACK);
 		g.setLineWidth(1);
@@ -109,33 +126,37 @@ public class PlayState extends GameState {
 	public void update() {
 		//om enemy position är mindre än player och collide är true kollar den inte collision
 
-		if ((enemy.getEnemyX() <= (player.getPlayerX() + 80)) && (enemy.getEnemyX() > player.getPlayerX())) {
-			if (!collided && enemy.getEnemyX() > player.getPlayerX()) {
-				checkCollision();
-			}
-		}
+		enemy.setEnemyX(enemy.getEnemyX()-10);
 
-		if (collided && enemy.getEnemyX() < player.getPlayerX()) {
-			collided = false;
-		}
+		if (!gameOver) {
 
+			if ((enemy.getEnemyX() <= (player.getPlayerX() + 80)) && (enemy.getEnemyX() > player.getPlayerX())) {
+				if (!collided && enemy.getEnemyX() > player.getPlayerX()) {
+					checkCollision();
+				}
+//				clearedEnemies ++;
+			}
 
-		enemy.setEnemyX(enemy.getEnemyX()-10);
+			if (collided && enemy.getEnemyX() < player.getPlayerX()) {
+				collided = false;
+			}
 
 
-		if (up) {
+			if (up) {
 
-			player.jump();
-		}
+				player.jump();
+			}
+
+			if (player.getPlayerY() == 265) {
+				up = false;
+			}
 
-		if (player.getPlayerY() == 265) {
-			up = false;
 		}
 
 	}
 
 	public void checkCollision() {
-
+		
 
 		//		if ((enemy.getEnemyX() <= (player.getPlayerX() + 80)) && (enemy.getEnemyX() > player.getPlayerX()) && ((player.getPlayerY() + 60) >= enemy.getEnemyY() )) {
 		//
@@ -152,13 +173,16 @@ public class PlayState extends GameState {
 		//			//			System.out.println("helo");
 		if((player.getPlayerY() + 60) >= enemy.getEnemyY() ) {
 			collided = true;
-//			System.out.println("fäk");
+			//			System.out.println("fäk");
 			if (Integer.valueOf(player.getLives()) == 0) {
-				menu = new MenuState(model);
-				model.switchState(menu);
+//								menu = new MenuState(model);
+				//				model.switchState(menu);
+				gameOver = true;
+//				score.saveScore(clearedEnemies);
+
 			}
 			player.decreaseLives();
-//			System.out.println(player.getLives());
+			//			System.out.println(player.getLives());
 
 		}
 		//				System.out.println("slipped by enemy");
diff --git a/src/states/Player.java b/src/states/Player.java
index 92648dc..3eef35d 100644
--- a/src/states/Player.java
+++ b/src/states/Player.java
@@ -20,19 +20,18 @@ public class Player {
 	private Image image;
 	private boolean down = false;
 	private boolean up = false;
-	private Rectangle rekt;
-	private ImageView playerView;
+//	private ImageView playerView;
 
 
 	public Player(String playerImg) {
 
 		try {
 			image = new Image(new FileInputStream(playerImg));
-			playerView = new ImageView(image);
-			playerView.setX(playerX);
-			playerView.setY(playerY);
-			playerView.setFitHeight(Constants.playerHeight);
-			playerView.setFitWidth(Constants.playerWidth);
+//			playerView = new ImageView(image);
+//			playerView.setX(playerX);
+//			playerView.setY(playerY);
+//			playerView.setFitHeight(Constants.playerHeight);
+//			playerView.setFitWidth(Constants.playerWidth);
 		} catch (FileNotFoundException e) {
 			// TODO Auto-generated catch block
 			e.printStackTrace();
@@ -42,9 +41,9 @@ public class Player {
 	}
 
 
-	public ImageView getPlayerView() {
-		return playerView;
-	}
+//	public ImageView getPlayerView() {
+//		return playerView;
+//	}
 
 
 	public Image getImage() {
-- 
GitLab