From 36a981b211fe44592ab5b4d5a0b855a619b81413 Mon Sep 17 00:00:00 2001 From: Oscar Wiberg <oscarwiberg@Oscars-MacBook-Air-4.local> Date: Thu, 30 Jan 2025 16:25:44 +0100 Subject: [PATCH] fixa om lite med powerups nu --- src/states/ExtraLifePowerUp.java | 4 +-- src/states/Object.java | 44 +++++++++++++++++++++----------- src/states/PlayState.java | 25 ++++++++---------- src/states/PowerUp.java | 9 +++++-- src/states/SpeedPowerUp.java | 4 +-- 5 files changed, 51 insertions(+), 35 deletions(-) diff --git a/src/states/ExtraLifePowerUp.java b/src/states/ExtraLifePowerUp.java index e65f26a..094b317 100644 --- a/src/states/ExtraLifePowerUp.java +++ b/src/states/ExtraLifePowerUp.java @@ -8,8 +8,8 @@ package states; public class ExtraLifePowerUp extends PowerUp { - public ExtraLifePowerUp(String image, double x, double y, double h, double w) { - super(image, x, y, h, w); + public ExtraLifePowerUp(String image, double x, double h, double w) { + super(image, x, h, w); } @Override diff --git a/src/states/Object.java b/src/states/Object.java index 026a78f..93b8af2 100644 --- a/src/states/Object.java +++ b/src/states/Object.java @@ -13,7 +13,7 @@ import javafx.scene.shape.Rectangle; * */ public abstract class Object { - + protected double posX; protected double posY; private double height; @@ -21,21 +21,35 @@ public abstract class Object { private Image img; public Object(String image, double x, double y, double h, double w) { - + posY = y; posX = x; width = w; height = h; - + try { img = new Image(new FileInputStream(image)); - + } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } - + + public Object(String image, double x, double h, double w) { + posX = x; + width = w; + height = h; + + try { + img = new Image(new FileInputStream(image)); + + } catch (FileNotFoundException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + public double getX() { return posX; } @@ -47,8 +61,8 @@ public abstract class Object { public Image getImage() { return img; } - - + + public void setX(double posX) { this.posX = posX; } @@ -67,7 +81,7 @@ public abstract class Object { public boolean playerObjectCollision(Player player) { boolean hit = false; - + double playerX = player.getPlayerX(); double playerY = player.getPlayerY(); @@ -79,7 +93,7 @@ public abstract class Object { double centeredX = playerX + (Constants.playerWidth - smallerWidth) / 2; double centeredY = playerY + (Constants.playerHeight - smallerHeight) / 2; - + Bounds playerRect = new Rectangle(centeredX, centeredY, smallerWidth, smallerHeight).getBoundsInParent(); @@ -88,12 +102,12 @@ public abstract class Object { if (playerRect.intersects(objectRect)) { hit = true; } - + return hit; } - - - -// här kommer de två olika powerupsen avgöra vad som händer när ma ta den, denna klass kallar på kollisionen - + + + + // här kommer de två olika powerupsen avgöra vad som händer när ma ta den, denna klass kallar på kollisionen + } diff --git a/src/states/PlayState.java b/src/states/PlayState.java index d56e72a..6824c83 100644 --- a/src/states/PlayState.java +++ b/src/states/PlayState.java @@ -37,12 +37,12 @@ public class PlayState extends GameState { private boolean isPowerUpActive; private int num; private String bombImg; - private PowerUp last = null; + private PowerUp last; + private PowerUp pw; private boolean speedActive; - public PlayState(GameModel model, boolean mode) { super(model); informationText = "Press Escape \nTo Return To The Menu"; @@ -50,7 +50,8 @@ public class PlayState extends GameState { gameOverText = "GAMEOVER\n" + informationText; fontColor = Color.BLACK; scoreText = "Highscore: " + Integer.toString(score.getHighScore()); - + + if (mode) { mode1(); } else { @@ -61,9 +62,7 @@ public class PlayState extends GameState { public void mode1() { player = new Player(Constants.playerImg); - enemy = new Enemy(Constants.enemyImg, 900.00, 270.00, Constants.enemyHeight, Constants.enemyWidth); - extraLife = new ExtraLifePowerUp(Constants.lifeImg, 1200.00, 170, Constants.powerHeight, Constants.powerWidth); - speedUp = new SpeedPowerUp(Constants.powerImg, 1200.00, 265.00, Constants.powerHeight, Constants.powerWidth); + enemy = new Enemy(Constants.enemyImg, 900.00, 270.00, Constants.enemyHeight, Constants.enemyWidth); flyingEnemy = new FlyingEnemy(Constants.flyingEnemyImg, 900.00, 20.00, Constants.enemyHeight, Constants.enemyWidth); bombImg = Constants.bombImg; bgColor = Color.ROYALBLUE; @@ -74,8 +73,6 @@ public class PlayState extends GameState { public void mode2() { player = new Player(Constants.playerImg2); enemy = new Enemy(Constants.enemyImg2, 900.00, 270.00, Constants.enemyHeight, Constants.enemyWidth); - extraLife = new ExtraLifePowerUp(Constants.lifeImg, -100.00, 270, Constants.powerHeight, Constants.powerWidth); - speedUp = new SpeedPowerUp(Constants.powerImg, -100.00, 265.00, Constants.powerHeight, Constants.powerWidth); flyingEnemy = new FlyingEnemy(Constants.flyingEnemyImg2, 900.00, 20.00, Constants.enemyHeight, Constants.enemyWidth); bombImg = Constants.bombImg2; bgColor = Color.BEIGE; @@ -138,11 +135,11 @@ public class PlayState extends GameState { } if (num == 0) { drawSpeedUp(g); - last = null; + last = speedUp; } else if (num == 1){ drawExtraLife(g); - last = null; + last = extraLife; } } } @@ -154,8 +151,6 @@ public class PlayState extends GameState { } g.drawImage(speedUp.getImage(), speedUp.getX(), speedUp.getY(), Constants.powerWidth, Constants.powerHeight); - - last = speedUp; } public void drawExtraLife(GraphicsContext g) { @@ -165,7 +160,6 @@ public class PlayState extends GameState { } g.drawImage(extraLife.getImage(), extraLife.getX(), extraLife.getY(), Constants.powerWidth, Constants.powerHeight); - last = extraLife; } public void drawEnemies(GraphicsContext g) { @@ -230,11 +224,14 @@ public class PlayState extends GameState { //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 + +// kör modulo 6, 10, 15 +// dessa returnerar bara samma på nummer som är delbara med 30 public void speedCheck() { if (player.getPasses() % 5 == 0) { movingSpeed += 1; System.out.println("speed set to: " + Integer.toString(movingSpeed)); - } else if (player.getPasses() > 10 && player.getPasses() % 2 == 0) { + } else if (player.getPasses() > 10 && player.getPasses() % 2 == 0) { //denna bör ändras till något som aldrig klaffar med den ovan // if (movingSpeed < 100) { isPowerUpActive = true; num = getRandom(); diff --git a/src/states/PowerUp.java b/src/states/PowerUp.java index f271fab..34107c7 100644 --- a/src/states/PowerUp.java +++ b/src/states/PowerUp.java @@ -15,10 +15,15 @@ public abstract class PowerUp extends Object{ private int maxH = 110; private int minH = 265; - public PowerUp(String image, double x, double y, double h, double w) { - super(image, x, y, h, w); + public PowerUp(String image, double x, double h, double w) { + super(image, x, h, w); this.posY = spawn(); } + + + +// lägg in en ny constructor som bara tar in String image +// lägg till en funktion som returnerar en powerup, likt det som har gjortd för bomben i flying enemy public double spawn() { diff --git a/src/states/SpeedPowerUp.java b/src/states/SpeedPowerUp.java index 9b3dd7f..95d9263 100644 --- a/src/states/SpeedPowerUp.java +++ b/src/states/SpeedPowerUp.java @@ -12,8 +12,8 @@ public class SpeedPowerUp extends PowerUp { private int speed; private int start; - public SpeedPowerUp(String image, double x, double y, double h, double w) { - super(image, x, y, h, w); + public SpeedPowerUp(String image, double x, double h, double w) { + super(image, x, h, w); } @Override -- GitLab