package lab; import javafx.geometry.Point2D; import javafx.geometry.Rectangle2D; import javafx.scene.canvas.GraphicsContext; import javafx.scene.paint.Color; import javafx.scene.transform.Affine; import javafx.scene.transform.Rotate; public class Player { private Level level; private Point2D position; private Point2D speed; public Player(Level level, Point2D position, Point2D speed) { this.level = level; this.position = position; this.speed = speed; } public void draw(GraphicsContext gc) { gc.save(); Point2D center = position.add(10, 25); double angle = speed.angle(1, 0); if (speed.getY() < 0) { angle = -angle; } Rotate rotateMatrix = Affine.rotate(angle, center.getX(), center.getY()); gc.setTransform(new Affine(rotateMatrix)); gc.setFill(Color.AQUA); gc.setStroke(Color.GREEN); gc.setLineWidth(5); gc.fillRect(center.getX(), center.getY(), 50, 1); gc.fillRoundRect(position.getX(), position.getY(), 20, 50, 20, 20); gc.strokeRoundRect(position.getX(), position.getY(), 20, 50, 20, 20); gc.restore(); } public void simulate(double delay) { position = position.add(speed.multiply(delay/1_000_000_000)); // speed = speed.multiply(0.9994); } public Rectangle2D getBoundingBox() { return new Rectangle2D(position.getX(), position.getY(), 20, 50); } }