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 { private static final Random RANDOM = new Random(); private Level level; private Image image; private Point2D position; private Point2D speed; public Monster(Level level) { this.level = level; 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) { this.level = level; this.position = position; image = new Image(getClass().getResourceAsStream("spike.gif")); } public void draw(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()); } public Rectangle2D getBoundingBox() { return new Rectangle2D(position.getX(), position.getY(), image.getWidth(), image.getHeight()); } }