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

flygande enemy släpper bomber

parent 556cb85f
No related branches found
No related tags found
1 merge request!2Newmode
src/Images1/bomb.png

25.7 KiB

......@@ -41,11 +41,14 @@ public interface Constants {
//enemies
String enemyImg = "src/Images1/lorry.png";
String flyingEnemyImg = "src/Images1/saucer.png";
double enemyWidth = 100;
double enemyHeight = 100;
double enemyWidth = 80;
double enemyHeight = 80;
// powerups
String lifeImg = "src/Images1/heart2.png";
String powerImge = "src/Images1/blixt.png";
String powerImg = "src/Images1/blixt.png";
String bombImg = "src/Images1/bomb.png";
double bombWidth = 50;
double bombHeight = 50;
}
package states;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import javafx.scene.image.Image;
public class Bomb {
private double startX;
private double posY = 100;
private Image image;
public Bomb(double bombDropX, String bombImg) {
try {
image = new Image(new FileInputStream(bombImg));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
this.startX = bombDropX;
}
public double getX() {
return startX;
}
public double getY() {
return posY;
}
public Image getImage() {
return image;
}
public void render(int speed) {
this.posY += speed;
}
}
......@@ -10,10 +10,7 @@ import javafx.scene.image.ImageView;
public class Enemy extends Antagonist{
private double enemyX = -100.00;
private double enemyY = 250.00;
private Image image;
private ImageView enemyView;
public Enemy(String enemyImg, double x, double y) {
super(enemyImg, x, y);
......
......@@ -8,100 +8,66 @@ import javafx.scene.image.Image;
public class FlyingEnemy extends Antagonist{
// private double enemyX = 800.00;
private ArrayList<Double> enemyY;
private double currY;
private Random rnd = new Random();
private Random drop;
private int margin = 50;
private Bomb bomb;
private double bombDropX;
private boolean bombDropped = false;
public FlyingEnemy(String enemyImg, double x, double y) {
super(enemyImg, x, y);
this.enemyY = new ArrayList<Double>();
this.enemyY.add(150.0);
this.enemyY.add(180.0);
this.enemyY.add(200.0);
this.enemyY.add(250.0);
// enemyY.add(265.00);
// enemyY.add(265.00);
// enemyY.add(265.00);
// enemyY.add(265.00);
// double[] enemyY = {250, 200, 150,100};
// enemyY[0] = 100.0;
// enemyY[1] = 150.0;
// enemyY[2] = 200.0;
// enemyY[3] = 250.0;
}
this.drop = new Random();
this.bombDropX = dropNextBombX();
// System.out.println(weather.get(rnd.nextInt(weather.size())));
// public boolean playerFlyingEnemyCollision(Player player) {
// boolean hit = false;
//
// if ((enemyX < (player.getPlayerX() + 80.00)) && ((enemyX) > player.getPlayerX())) { //borde vara +80 på enemyx men funkar ej
// // if((player.getPlayerY() + 60.00) >= enemyY) {
// if((player.getPlayerY() + 60.00) >= currY) {
// // if ((enemyY + 80 > (player.getPlayerY())) && ((player.getPlayerY() + 80) > enemyY)) {
//
// hit = true;
// player.decreaseLives();
// // if (hit && enemyX < player.getPlayerX() + 100) {
// // hit = false;
// // }
//
// }
//
// }
//
// return hit;
//
// // public void setEnemyY() {
// // enemyY = 0.0;
// //
// }
public FlyingEnemy(String enemyImg) {
super(enemyImg);
this.enemyY = new ArrayList<Double>();
this.enemyY.add(200.00); //går att stå under
this.enemyY.add(210.00); //behöver ducka
this.enemyY.add(220.00); //behöver ducka
this.enemyY.add(250.00); //behöver hoppa
}
@Override
public boolean playerAntagonistCollision(Player player) {
boolean collisionX = player.getPlayerX() < (x + 60.00) && (player.getPlayerX() + 60.00) > x;
// Check for collision on the y-axis
boolean collisionY = player.getRect() < (currY + 60.00) && (player.getRect() + 60.00) > currY;
private double dropNextBombX() {
int minX = margin;
int maxX = Constants.screenWidth - margin;
return drop.nextInt(maxX - minX + 1) + minX;
}
public Bomb dropBomb() {
if (!bombDropped && this.getX() >= bombDropX - 50 && this.getX() <= bombDropX + 50) {
Bomb bomb = new Bomb(bombDropX, Constants.bombImg); // Drop the bomb at bombDropX
System.out.println("Bomb dropped at: " + bombDropX);
bombDropped = true; // Mark that the bomb has been dropped
if (collisionX && collisionY && !collisionDetected) {
player.decreaseLives();
collisionDetected = true;
return true;
}
if (!collisionX) {
collisionDetected = false;
// Optionally, reset bombDropX to a new random location after dropping the bomb
bombDropX = dropNextBombX();
return bomb;
}
return null;
}
@Override
public boolean playerAntagonistCollision(Player player) {
// TODO Auto-generated method stub
return false;
}
@Override
public double getY() {
currY = enemyY.get(rnd.nextInt(enemyY.size()));
return currY;
// TODO Auto-generated method stub
return 0;
}
}
......@@ -56,10 +56,12 @@ public class PlayState extends GameState {
private String scoreText;
private ExtraLifePowerUp extraLife;
private FlyingEnemy flyingEnemy;
private double tempy;
// private double tempy;
private Random engen;
private String slidingPlayer;
private int movingSpeed = 10;
private Bomb bomb;
/* Class only used for testing */
......@@ -91,11 +93,11 @@ public class PlayState extends GameState {
public void mode1() {
player = new Player(Constants.playerImg);
slidingPlayer = Constants.slidingPlayerImg;
enemy = new Enemy(Constants.enemyImg, 800.00, 250.00);
enemy = new Enemy(Constants.enemyImg, 800.00, 270.00);
extraLife = new ExtraLifePowerUp(Constants.lifeImg);
flyingEnemy = new FlyingEnemy(Constants.flyingEnemyImg);
flyingEnemy.setAntagonistX(800.00);
tempy = flyingEnemy.getY();
flyingEnemy = new FlyingEnemy(Constants.flyingEnemyImg, -200.00, 100.00);
// flyingEnemy.setAntagonistX(800.00);
// tempy = flyingEnemy.getY();
bgColor = Color.ROYALBLUE;
lineColor = Color.WHITE;
......@@ -106,9 +108,9 @@ public class PlayState extends GameState {
slidingPlayer = Constants.slidingPlayerImg2;
enemy = new Enemy(Constants.enemyImg, 800.00, 250.00);
extraLife = new ExtraLifePowerUp(Constants.lifeImg);
flyingEnemy = new FlyingEnemy(Constants.flyingEnemyImg);
flyingEnemy.setAntagonistX(800.00);
tempy = flyingEnemy.getY();
flyingEnemy = new FlyingEnemy(Constants.flyingEnemyImg, -200.00, 100.00);
// flyingEnemy.setAntagonistX(800.00);
// tempy = flyingEnemy.getY();
bgColor = Color.BEIGE;
lineColor = Color.BLACK;
......@@ -135,29 +137,29 @@ public class PlayState extends GameState {
score.saveScore(player.getPasses());
}
g.setStroke(lineColor);
g.setLineWidth(1);
g.setLineDashes(2);
g.strokeLine(Constants.screenWidth, 350, 0, 350);
g.drawImage(player.getImage(), player.getPlayerX(), player.getPlayerY(), Constants.playerWidth, Constants.playerHeight);
// 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.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);
drawEnemy(g);
}
......@@ -165,25 +167,42 @@ public class PlayState extends GameState {
public void drawEnemy(GraphicsContext g) {
engen = new Random();
//
// 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(flyingEnemy.getImage(), flyingEnemy.getX(), flyingEnemy.getY(), Constants.enemyWidth, Constants.enemyHeight);
g.drawImage(flyingEnemy.getImage(), flyingEnemy.getX(), tempy, Constants.enemyWidth, Constants.enemyHeight);
// If the flying enemy has passed the screen, drop a bomb (now always drops on the first pass)
if (flyingEnemy.getX() < 0 - Constants.enemyWidth) {
flyingEnemy.setAntagonistX(Constants.screenWidth);
flyingEnemy.setAntagonistX(Constants.screenWidth); // Reset the enemy's position
player.updatePasses(1);
tempy = flyingEnemy.getY();
System.out.println("Before dropBomb, bomb is: " + bomb);
// Drop the bomb if it hasn't been dropped already
if (bomb == null) {
bomb = flyingEnemy.dropBomb(); // Call the method in FlyingEnemy to drop the bomb
// System.out.println("Bomb dropped at X: " + bomb.getX() + ", Y: " + bomb.getY());
}
if (player.getPasses() % 5 == 0) {
movingSpeed += 4;
movingSpeed += 2;
}
}
// Render the bomb if it exists
if (bomb != null) {
g.drawImage(bomb.getImage(), bomb.getX(), bomb.getY(), Constants.bombWidth, Constants.bombHeight);
}
......@@ -238,6 +257,16 @@ public class PlayState extends GameState {
}
break;
case LEFT:
player.moveLeft(movingSpeed);
break;
case RIGHT:
player.moveRight(movingSpeed);
break;
default:
break;
......@@ -253,24 +282,40 @@ public class PlayState extends GameState {
// Enemy hoppar 10 snäpp till vänster för varje update
// enemy.setAntagonistX(enemy.getX()-10);
flyingEnemy.setAntagonistX(flyingEnemy.getX()-movingSpeed);
// flyingEnemy.setAntagonistX(flyingEnemy.getX() -10);
// enemy.setAntagonistX(enemy.getX()-movingSpeed);
flyingEnemy.setAntagonistX(flyingEnemy.getX() -movingSpeed);
Bomb droppedBomb = flyingEnemy.dropBomb();
if (droppedBomb != null) {
bomb = droppedBomb;
}
if (bomb != null) {
bomb.render(movingSpeed);
// If the bomb goes off-screen, remove it
if (bomb.getY() > Constants.screenHeight) {
bomb = null; // Destroy the bomb if it goes off-screen
System.out.println("Bomb went off-screen and was destroyed");
}
}
// Om
if (!gameOver) {
if (!collided) {
// collided = enemy.playerAntagonistCollision(player);
collided = flyingEnemy.playerAntagonistCollision(player);
collided = enemy.playerAntagonistCollision(player);
if (Integer.valueOf(player.getLives()) == 0) {
gameOver = true;
}
}
//återställer boolean när enemy passerat
if (collided && flyingEnemy.getX() < player.getPlayerX()) {
if (collided && enemy.getX() < player.getPlayerX()) {
collided = false;
}
......
......@@ -172,4 +172,21 @@ public class Player {
public void moveLeft(int movingSpeed) {
playerX -= movingSpeed;
}
public void moveRight(int movingSpeed) {
playerX += movingSpeed;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment