diff --git a/src/HighScore.txt b/src/HighScore.txt index 2e66562e2705f8e5c5ddccceeecaab861194f30a..147ea53ba1b4b991eb9a128a1231e006722485a3 100644 --- a/src/HighScore.txt +++ b/src/HighScore.txt @@ -1 +1 @@ -49 \ No newline at end of file +158 \ No newline at end of file diff --git a/src/Images1/8ball.png b/src/Images1/8ball.png new file mode 100644 index 0000000000000000000000000000000000000000..86a16f6f593a3626a93b5f8d1e63cee76cf5f2c7 Binary files /dev/null and b/src/Images1/8ball.png differ diff --git a/src/Images1/fire_engine.png b/src/Images1/fire_engine.png new file mode 100644 index 0000000000000000000000000000000000000000..0fc5d9fd1edb2d256849a3f11c98b73a393d9421 Binary files /dev/null and b/src/Images1/fire_engine.png differ diff --git a/src/Images1/helicopter.png b/src/Images1/helicopter.png new file mode 100644 index 0000000000000000000000000000000000000000..2da3f0284df9edac0f115da382168149a3d9a4c5 Binary files /dev/null and b/src/Images1/helicopter.png differ diff --git a/src/constants/Constants.java b/src/constants/Constants.java index c83009cc7cf37ea5104b41a479df964ae526d459..1182b0f15143a5091031846a8aa47dc67d03c9b1 100644 --- a/src/constants/Constants.java +++ b/src/constants/Constants.java @@ -25,7 +25,13 @@ public interface Constants { //enemies String enemyImg = "src/Images1/lorry.png"; + String enemyImg2 = "src/Images1/fire_engine.png"; String flyingEnemyImg = "src/Images1/saucer.png"; + String flyingEnemyImg2 = "src/Images1/helicopter.png"; + String bombImg = "src/Images1/bomb.png"; + String bombImg2 = "src/Images1/8ball.png"; + double bombWidth = 50; + double bombHeight = 50; double enemyWidth = 80; double enemyHeight = 80; @@ -35,7 +41,5 @@ public interface Constants { double powerWidth = 40; double powerHeight = 40; - String bombImg = "src/Images1/bomb.png"; - double bombWidth = 50; - double bombHeight = 50; + } diff --git a/src/states/FlyingEnemy.java b/src/states/FlyingEnemy.java index d7b93d077accd6663488af2ccf737bc5d9d07261..10bc96540e2a679943a802495872fc23820347eb 100644 --- a/src/states/FlyingEnemy.java +++ b/src/states/FlyingEnemy.java @@ -37,10 +37,10 @@ public class FlyingEnemy extends Object{ //om man vill kan man skicka med players x pos på dirren, blir lite svårare då ba - public Enemy dropBomb(Player p) { + public Enemy dropBomb(Player p, String s) { if (!bombDropped && this.getX() >= bombDropX - 50 && this.getX() <= bombDropX + 50) { - Enemy bomb = new Enemy(Constants.bombImg, bombDropX, 50, Constants.bombHeight, Constants.bombWidth); // Drop the bomb at bombDropX + Enemy bomb = new Enemy(s, bombDropX, 50, Constants.bombHeight, Constants.bombWidth); // Drop the bomb at bombDropX System.out.println("Bomb dropped at: " + bombDropX); bombDropped = true; // Mark that the bomb has been dropped diff --git a/src/states/PlayState.java b/src/states/PlayState.java index 979d637a9ff0d96fd20209bb9284434022c2b99d..b9bb0ce84745ecd10438bc11966c596f3e345d95 100644 --- a/src/states/PlayState.java +++ b/src/states/PlayState.java @@ -4,7 +4,6 @@ import javafx.scene.canvas.GraphicsContext; import javafx.scene.input.KeyEvent; import javafx.scene.paint.Color; import javafx.scene.text.Font; -import java.util.Random; import java.util.concurrent.ThreadLocalRandom; import constants.Constants; @@ -29,8 +28,6 @@ public class PlayState extends GameState { private String scoreText; private ExtraLifePowerUp extraLife; private FlyingEnemy flyingEnemy; - // private double tempy; - private Random engen = new Random(); private int movingSpeed = 10; private Enemy bomb; private boolean isFlyingEnemyActive = false; @@ -39,6 +36,9 @@ public class PlayState extends GameState { private SpeedPowerUp speedUp; private boolean isPowerUpActive; private int num; + private String bombImg; + private PowerUp last = null; + @@ -60,10 +60,11 @@ public class PlayState extends GameState { public void mode1() { player = new Player(Constants.playerImg); - enemy = new Enemy(Constants.enemyImg, -100.00, 270.00, Constants.enemyHeight, Constants.enemyWidth); - extraLife = new ExtraLifePowerUp(Constants.lifeImg, 900.00, 170, Constants.powerHeight, Constants.powerWidth); - speedUp = new SpeedPowerUp(Constants.powerImg, 900.00, 265.00, Constants.powerHeight, Constants.powerWidth); - flyingEnemy = new FlyingEnemy(Constants.flyingEnemyImg, -200.00, 20.00, Constants.enemyHeight, Constants.enemyWidth); + 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); + flyingEnemy = new FlyingEnemy(Constants.flyingEnemyImg, 900.00, 20.00, Constants.enemyHeight, Constants.enemyWidth); + bombImg = Constants.bombImg; bgColor = Color.ROYALBLUE; lineColor = Color.WHITE; @@ -71,10 +72,11 @@ public class PlayState extends GameState { public void mode2() { player = new Player(Constants.playerImg2); - enemy = new Enemy(Constants.enemyImg, -100.00, 270.00, Constants.enemyHeight, Constants.enemyWidth); + 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.flyingEnemyImg, -200.00, 20.00, Constants.enemyHeight, Constants.enemyWidth); + flyingEnemy = new FlyingEnemy(Constants.flyingEnemyImg2, 900.00, 20.00, Constants.enemyHeight, Constants.enemyWidth); + bombImg = Constants.bombImg2; bgColor = Color.BEIGE; lineColor = Color.BLACK; @@ -128,28 +130,41 @@ public class PlayState extends GameState { private void drawPowerUps(GraphicsContext g) { - if (isPowerUpActive) { + if (isPowerUpActive && movingSpeed < 100) { + if (last == speedUp) { + num = 1; + } if (num == 0) { + drawSpeedUp(g); + last = null; - if(speedUp.getX() < 0 - Constants.playerWidth) { - speedUp.setX(Constants.screenWidth); - isPowerUpActive = false; - } + } else if (num == 1){ + drawExtraLife(g); + last = null; + } + } + } - g.drawImage(speedUp.getImage(), speedUp.getX(), speedUp.getY(), Constants.powerWidth, Constants.powerHeight); + public void drawSpeedUp(GraphicsContext g) { + if(speedUp.getX() < 0 - Constants.playerWidth) { + speedUp.setX(Constants.screenWidth); + isPowerUpActive = false; + } - } else if (num == 1){ + g.drawImage(speedUp.getImage(), speedUp.getX(), speedUp.getY(), Constants.powerWidth, Constants.powerHeight); - if(extraLife.getX() < 0 - Constants.playerWidth) { - extraLife.setX(Constants.screenWidth); - isPowerUpActive = false; - } - g.drawImage(extraLife.getImage(), extraLife.getX(), extraLife.getY(), Constants.powerWidth, Constants.powerHeight); + last = speedUp; + } - } + public void drawExtraLife(GraphicsContext g) { + if(extraLife.getX() < 0 - Constants.playerWidth) { + extraLife.setX(Constants.screenWidth); + isPowerUpActive = false; } + g.drawImage(extraLife.getImage(), extraLife.getX(), extraLife.getY(), Constants.powerWidth, Constants.powerHeight); + last = extraLife; } public void drawEnemies(GraphicsContext g) { @@ -173,15 +188,18 @@ public class PlayState extends GameState { g.drawImage(flyingEnemy.getImage(), flyingEnemy.getX(), flyingEnemy.getY(), Constants.enemyWidth, Constants.enemyHeight); if (flyingEnemy.getX() < 0 - Constants.enemyWidth) { - isFlyingEnemyActive = false; + flyingEnemy.setX(Constants.screenWidth); player.updatePasses(1); - - // Reset bomb drop flag to allow the next bomb drop flyingEnemy.resetBombDrop(); - speedCheck(); + int r = getRandom(); + + if(r == 1) { + isFlyingEnemyActive = false; + } + } } @@ -200,9 +218,10 @@ public class PlayState extends GameState { speedCheck(); - if (getRandom() == 1 && player.getPasses() > 2) { // 50% chance after player hase passed + if (player.getPasses() > 4 && getRandom() == 0) { // 50% chance after player hase passed isFlyingEnemyActive = true; - flyingEnemy.setX(Constants.screenWidth); // Reset position + // Reset position + System.out.println("Stage one activated, flyingenemy added to the mix"); } } } @@ -214,11 +233,10 @@ public class PlayState extends GameState { if (player.getPasses() % 5 == 0) { movingSpeed += 1; System.out.println("speed set to: " + Integer.toString(movingSpeed)); - } else if (player.getPasses() % 2 == 0) { - + } else if (player.getPasses() > 10 && player.getPasses() % 2 == 0) { isPowerUpActive = true; - // num = 0; num = getRandom(); + } } @@ -359,7 +377,7 @@ public class PlayState extends GameState { flyingEnemy.setX(flyingEnemy.getX() -movingSpeed); - Enemy droppedBomb = flyingEnemy.dropBomb(player); + Enemy droppedBomb = flyingEnemy.dropBomb(player, bombImg); if (droppedBomb != null) { bomb = droppedBomb; diff --git a/src/states/SpeedPowerUp.java b/src/states/SpeedPowerUp.java index 5d2ff7b907c8e9cfb0db17bfea41c6cbfd1ddb50..9b3dd7f54fc1bea9065eed9f4faf0b7335313303 100644 --- a/src/states/SpeedPowerUp.java +++ b/src/states/SpeedPowerUp.java @@ -19,6 +19,8 @@ public class SpeedPowerUp extends PowerUp { @Override public void use(Player player, PlayState playState) { + + player.lockLives(true); playState.setSpeed(100); @@ -37,7 +39,7 @@ public class SpeedPowerUp extends PowerUp { } else { - if ((player.getPasses() - start) >= 10) { + if ((player.getPasses() - start) >= 5) { playState.setSpeed(speed); player.lockLives(false); player.setPlayerY(265);