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