Skip to content
Snippets Groups Projects
Commit a6771d51 authored by Oscar Wiberg's avatar Oscar Wiberg
Browse files

båda enemy samspelar nu

parent a7fef7c6
No related branches found
No related tags found
1 merge request!2Newmode
...@@ -49,7 +49,9 @@ public abstract class Antagonist { ...@@ -49,7 +49,9 @@ public abstract class Antagonist {
return x; return x;
} }
public abstract double getY(); public double getY() {
return y;
}
public Image getImage() { public Image getImage() {
......
...@@ -3,7 +3,10 @@ package states; ...@@ -3,7 +3,10 @@ package states;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
import constants.Constants;
import javafx.geometry.Bounds;
import javafx.scene.image.Image; import javafx.scene.image.Image;
import javafx.scene.shape.Rectangle;
public class Bomb { public class Bomb {
...@@ -27,7 +30,10 @@ public class Bomb { ...@@ -27,7 +30,10 @@ public class Bomb {
} }
public Bounds getBoundingBox() {
return new Rectangle( startX, posY, Constants.bombWidth, Constants.bombHeight).getBoundsInParent();
}
public double getX() { public double getX() {
......
...@@ -5,8 +5,10 @@ import java.io.FileInputStream; ...@@ -5,8 +5,10 @@ import java.io.FileInputStream;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
import constants.Constants; import constants.Constants;
import javafx.geometry.Bounds;
import javafx.scene.image.Image; import javafx.scene.image.Image;
import javafx.scene.image.ImageView; import javafx.scene.image.ImageView;
import javafx.scene.shape.Rectangle;
public class Enemy extends Antagonist{ public class Enemy extends Antagonist{
...@@ -45,7 +47,9 @@ public class Enemy extends Antagonist{ ...@@ -45,7 +47,9 @@ public class Enemy extends Antagonist{
} }
public Bounds getBoundingBox() {
return new Rectangle(x, y, Constants.enemyWidth, Constants.enemyHeight).getBoundsInParent();
}
@Override @Override
......
...@@ -35,23 +35,23 @@ public class FlyingEnemy extends Antagonist{ ...@@ -35,23 +35,23 @@ public class FlyingEnemy extends Antagonist{
public Bomb dropBomb() { public Bomb dropBomb() {
if (!bombDropped && this.getX() >= bombDropX - 50 && this.getX() <= bombDropX + 50) { if (!bombDropped && this.getX() >= bombDropX - 50 && this.getX() <= bombDropX + 50) {
Bomb bomb = new Bomb(bombDropX, Constants.bombImg); // Drop the bomb at bombDropX Bomb bomb = new Bomb(bombDropX, Constants.bombImg); // Drop the bomb at bombDropX
System.out.println("Bomb dropped at: " + bombDropX); System.out.println("Bomb dropped at: " + bombDropX);
bombDropped = true; // Mark that the bomb has been dropped bombDropped = true; // Mark that the bomb has been dropped
// Optionally, reset bombDropX to a new random location after dropping the bomb // Optionally, reset bombDropX to a new random location after dropping the bomb
bombDropX = dropNextBombX(); bombDropX = dropNextBombX();
return bomb; return bomb;
} }
return null; return null;
}
public void resetBombDrop() {
bombDropped = false;
} }
public void resetBombDrop() {
bombDropped = false;
}
@Override @Override
public boolean playerAntagonistCollision(Player player) { public boolean playerAntagonistCollision(Player player) {
...@@ -60,11 +60,6 @@ public class FlyingEnemy extends Antagonist{ ...@@ -60,11 +60,6 @@ public class FlyingEnemy extends Antagonist{
} }
@Override
public double getY() {
// TODO Auto-generated method stub
return 0;
}
......
...@@ -61,6 +61,7 @@ public class PlayState extends GameState { ...@@ -61,6 +61,7 @@ public class PlayState extends GameState {
private String slidingPlayer; private String slidingPlayer;
private int movingSpeed = 10; private int movingSpeed = 10;
private Bomb bomb; private Bomb bomb;
private boolean isFlyingEnemyActive = false;
...@@ -95,7 +96,7 @@ public class PlayState extends GameState { ...@@ -95,7 +96,7 @@ public class PlayState extends GameState {
slidingPlayer = Constants.slidingPlayerImg; slidingPlayer = Constants.slidingPlayerImg;
enemy = new Enemy(Constants.enemyImg, 800.00, 270.00); enemy = new Enemy(Constants.enemyImg, 800.00, 270.00);
extraLife = new ExtraLifePowerUp(Constants.lifeImg); extraLife = new ExtraLifePowerUp(Constants.lifeImg);
flyingEnemy = new FlyingEnemy(Constants.flyingEnemyImg, -200.00, 100.00); flyingEnemy = new FlyingEnemy(Constants.flyingEnemyImg, -200.00, 20.00);
// flyingEnemy.setAntagonistX(800.00); // flyingEnemy.setAntagonistX(800.00);
// tempy = flyingEnemy.getY(); // tempy = flyingEnemy.getY();
bgColor = Color.ROYALBLUE; bgColor = Color.ROYALBLUE;
...@@ -108,7 +109,7 @@ public class PlayState extends GameState { ...@@ -108,7 +109,7 @@ public class PlayState extends GameState {
slidingPlayer = Constants.slidingPlayerImg2; slidingPlayer = Constants.slidingPlayerImg2;
enemy = new Enemy(Constants.enemyImg, 800.00, 250.00); enemy = new Enemy(Constants.enemyImg, 800.00, 250.00);
extraLife = new ExtraLifePowerUp(Constants.lifeImg); extraLife = new ExtraLifePowerUp(Constants.lifeImg);
flyingEnemy = new FlyingEnemy(Constants.flyingEnemyImg, -200.00, 100.00); flyingEnemy = new FlyingEnemy(Constants.flyingEnemyImg, -200.00, 20.00);
// flyingEnemy.setAntagonistX(800.00); // flyingEnemy.setAntagonistX(800.00);
// tempy = flyingEnemy.getY(); // tempy = flyingEnemy.getY();
bgColor = Color.BEIGE; bgColor = Color.BEIGE;
...@@ -150,10 +151,10 @@ public class PlayState extends GameState { ...@@ -150,10 +151,10 @@ public class PlayState extends GameState {
// Detta block används för att rita ut rectanglarna runt spelare och enemy // Detta block används för att rita ut rectanglarna runt spelare och enemy
g.setStroke(Color.BLACK); // Set the rectangle's border color // g.setStroke(Color.BLACK); // Set the rectangle's border color
g.setLineWidth(2); // Set the border width // g.setLineWidth(2); // Set the border width
// g.strokeRect(flyingEnemy.getX(), tempy, Constants.enemyWidth, Constants.enemyHeight); // // g.strokeRect(flyingEnemy.getX(), tempy, Constants.enemyWidth, Constants.enemyHeight);
g.strokeRect(player.getPlayerX(), player.getRect(), Constants.playerWidth, Constants.playerHeight); // g.strokeRect(player.getPlayerX(), player.getRect(), Constants.playerWidth, Constants.playerHeight);
...@@ -167,39 +168,44 @@ public class PlayState extends GameState { ...@@ -167,39 +168,44 @@ public class PlayState extends GameState {
public void drawEnemy(GraphicsContext g) { public void drawEnemy(GraphicsContext g) {
engen = new Random(); engen = new Random();
// if (!isFlyingEnemyActive) {
// 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);
//
// if (player.getPasses() % 5 == 0) {
// movingSpeed += 4;
// }
// }
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);
g.drawImage(flyingEnemy.getImage(), flyingEnemy.getX(), flyingEnemy.getY(), Constants.enemyWidth, Constants.enemyHeight); if (engen.nextInt(2) == 1) { // 50% chance
isFlyingEnemyActive = true;
flyingEnemy.setAntagonistX(Constants.screenWidth); // Reset position
}
}
} else {
if (flyingEnemy.getX() < 0 - Constants.enemyWidth) { g.drawImage(flyingEnemy.getImage(), flyingEnemy.getX(), flyingEnemy.getY(), Constants.enemyWidth, Constants.enemyHeight);
flyingEnemy.setAntagonistX(Constants.screenWidth); // Reset the enemy's position
player.updatePasses(1);
// Reset bomb drop flag to allow the next bomb drop if (flyingEnemy.getX() < 0 - Constants.enemyWidth) {
flyingEnemy.resetBombDrop(); isFlyingEnemyActive = false;
// flyingEnemy.setAntagonistX(Constants.screenWidth); // Reset the enemy's position
// player.updatePasses(1);
if (player.getPasses() % 5 == 0) { // Reset bomb drop flag to allow the next bomb drop
movingSpeed += 2; flyingEnemy.resetBombDrop();
}
}
// Render the bomb if it exists // if (player.getPasses() % 5 == 0) {
if (bomb != null) { // movingSpeed += 2;
g.drawImage(bomb.getImage(), bomb.getX(), bomb.getY(), Constants.bombWidth, Constants.bombHeight); // }
} }
} }
// Render the bomb if it exists
if (bomb != null) {
g.drawImage(bomb.getImage(), bomb.getX(), bomb.getY(), Constants.bombWidth, Constants.bombHeight);
}
}
...@@ -274,19 +280,28 @@ public class PlayState extends GameState { ...@@ -274,19 +280,28 @@ public class PlayState extends GameState {
// Enemy hoppar 10 snäpp till vänster för varje update // Enemy hoppar 10 snäpp till vänster för varje update
// enemy.setAntagonistX(enemy.getX()-10); // enemy.setAntagonistX(enemy.getX()-10);
// enemy.setAntagonistX(enemy.getX()-movingSpeed); // enemy.setAntagonistX(enemy.getX()-movingSpeed);
flyingEnemy.setAntagonistX(flyingEnemy.getX() -movingSpeed); if (isFlyingEnemyActive) {
Bomb droppedBomb = flyingEnemy.dropBomb(); flyingEnemy.setAntagonistX(flyingEnemy.getX() -movingSpeed);
Bomb droppedBomb = flyingEnemy.dropBomb();
if (droppedBomb != null) { if (droppedBomb != null) {
bomb = droppedBomb; bomb = droppedBomb;
}
} else {
enemy.setAntagonistX(enemy.getX() - movingSpeed);
} }
if (bomb != null) { if (bomb != null) {
bomb.render(movingSpeed); bomb.render(movingSpeed);
// If the bomb goes off-screen, remove it if (bomb.getBoundingBox().intersects(player.getBoundingBox())) {
if (bomb.getY() > Constants.screenHeight) { System.out.println("Bomb hit the player!");
player.decreaseLives(); // Assume there's a method to decrement player lives
bomb = null; // Destroy the bomb after collision
} else if (bomb.getY() > Constants.screenHeight) {
bomb = null; // Destroy the bomb if it goes off-screen bomb = null; // Destroy the bomb if it goes off-screen
System.out.println("Bomb went off-screen and was destroyed"); System.out.println("Bomb went off-screen and was destroyed");
} }
......
...@@ -6,6 +6,7 @@ import java.io.FileInputStream; ...@@ -6,6 +6,7 @@ import java.io.FileInputStream;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
import constants.Constants; import constants.Constants;
import javafx.geometry.Bounds;
import javafx.scene.image.Image; import javafx.scene.image.Image;
import javafx.scene.image.ImageView; import javafx.scene.image.ImageView;
import javafx.scene.input.KeyCode; import javafx.scene.input.KeyCode;
...@@ -65,6 +66,11 @@ public class Player { ...@@ -65,6 +66,11 @@ public class Player {
currImage = image; currImage = image;
} }
public Bounds getBoundingBox() {
return new Rectangle(playerX, playerY, Constants.playerWidth, Constants.playerHeight).getBoundsInParent();
}
public double getRect() { public double getRect() {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment