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
Branches
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