An error occurred while loading the file. Please try again.
-
jez04 authorede4537fa7
Monster.java 1.67 KiB
package lab;
import java.util.Random;
import javafx.geometry.Point2D;
import javafx.geometry.Rectangle2D;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.image.Image;
public class Monster extends WorldEntity implements Collisionable {
private static final Random RANDOM = new Random();
private Image image;
private Point2D speed;
public Monster(Level level) {
super(level, new Point2D(0, 0));
image = new Image(getClass().getResourceAsStream("red-monster.gif"));
position = new Point2D(level.getWidth() * 0.5 + RANDOM.nextDouble(level.getWidth() * 0.5 - image.getWidth()),
RANDOM.nextDouble(level.getHeight()));
speed = new Point2D(0, RANDOM.nextDouble(50, 150));
}
public Monster(Level level, Point2D position) {
super(level, position);
image = new Image(getClass().getResourceAsStream("spike.gif"));
}
public void drawInternal(GraphicsContext gc) {
gc.drawImage(image, position.getX(), position.getY());
}
public void changeDirection() {
speed = speed.multiply(-1);
}
public void simulate(double delay) {
position = position.add(speed.multiply(delay / 1_000_000_000));
position = new Point2D(position.getX(), position.getY() % level.getHeight());
if(position.getY() + image.getHeight() < 0) {
position = new Point2D(position.getX(), level.getHeight());
}
}
@Override
public Rectangle2D getBoundingBox() {
return new Rectangle2D(position.getX(), position.getY(), image.getWidth(), image.getHeight());
}
@Override
public boolean intersect(Rectangle2D another) {
return getBoundingBox().intersects(another);
}
@Override
public void hitBy(Collisionable another) {
if (another instanceof Player) {
changeDirection();
}
}
}