-
jez04 authored00522675
Player.java 1.29 KiB
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);
}
}