package com.example.io.home2;
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.shape.*;
import javafx.stage.Stage;
import java.util.ArrayList;
import java.util.List;
public class Draw extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
primaryStage.setTitle("Shapes");
Group root = new Group();
Scene scene = new Scene(root, 300, 300, Color.WHITE);
root.getChildren().add(this.head());
root.getChildren().add(eyes(90));
root.getChildren().add(eyes(105));
root.getChildren().add(clothes(10.0f, 80, true));
root.getChildren().add(clothes(60.0f, 110, false));
root.getChildren().add(clothesMiddle());
root.getChildren().add(clothesBottom());
root.getChildren().add(leg(10.0f, 90, true));
root.getChildren().add(leg(10.0f, 105, false));
root.getChildren().add(foot(10.0f, 87, true));
root.getChildren().add(foot(10.0f, 108, false));
root.getChildren().addAll(blackboard());
root.getChildren().addAll(rightHand());
root.getChildren().addAll(leftHand());
primaryStage.setScene(scene);
primaryStage.show();
}
private Ellipse head() {
Ellipse headEllipse = new Ellipse();
headEllipse.setCenterX(100);
headEllipse.setCenterY(50);
headEllipse.setRadiusX(30);
headEllipse.setRadiusY(50/2);
headEllipse.setStrokeWidth(2);
headEllipse.setStroke(Color.BLACK);
headEllipse.setFill(Color.WHITE);
return headEllipse;
}
private HBox eyes(Integer left) {
Path path = new Path();
path.getElements().add(new MoveTo(0.0f, 0.0f));
path.getElements().add(new LineTo(0.0f, 8.0f));
VBox vbox = new VBox();
vbox.getChildren().addAll(path);
vbox.setSpacing(5);
HBox root = new HBox();
root.getChildren().add(vbox);
root.setSpacing(40);
root.setPadding(new Insets(40, 50, 10, left));
return root;
}
private HBox clothes(double moveX, int left, Boolean leftFlag) {
Path path = new Path();
path.getElements().add(new MoveTo(moveX, 0.0f));
path.getElements().add(new LineTo(leftFlag ? moveX - 5.0f : moveX + 5.0f, 30.0f));
VBox vbox = new VBox();
vbox.getChildren().addAll(path);
vbox.setSpacing(5);
HBox root = new HBox();
root.getChildren().add(vbox);
root.setSpacing(40);
root.setPadding(new Insets(73, 50, 10, left));
return root;
}
private HBox clothesMiddle() {
Path path = new Path();
path.getElements().add(new MoveTo(0.0f, 0.0f));
path.getElements().add(new LineTo(0.0f, 22.0f));
VBox vbox = new VBox();
vbox.getChildren().addAll(path);
vbox.setSpacing(5);
HBox root = new HBox();
root.getChildren().add(vbox);
root.setSpacing(40);
root.setPadding(new Insets(73.5, 50, 10, 100));
return root;
}
private HBox clothesBottom() {
Path path = new Path();
path.getElements().add(new MoveTo(0.0f, 0.0f));
path.getElements().add(new LineTo(36.0f, 0.0f));
VBox vbox = new VBox();
vbox.getChildren().addAll(path);
vbox.setSpacing(5);
HBox root = new HBox();
root.getChildren().add(vbox);
root.setSpacing(40);
root.setPadding(new Insets(103, 50, 10, 80));
return root;
}
private HBox leg(double moveX, int left, boolean leftFlag) {
Path path = new Path();
path.getElements().add(new MoveTo(moveX, 0.0f));
path.getElements().add(new LineTo(leftFlag ? moveX - 3.0 : moveX + 3.0, 22.0f));
VBox vbox = new VBox();
vbox.getChildren().addAll(path);
vbox.setSpacing(5);
HBox root = new HBox();
root.getChildren().add(vbox);
root.setSpacing(40);
root.setPadding(new Insets(103, 50, 10, left));
return root;
}
private HBox foot(double moveX, int left, boolean leftFlag) {
Path path = new Path();
path.getElements().add(new MoveTo(moveX, 0.0f));
path.getElements().add(new LineTo(leftFlag ? moveX - 3.0 : moveX + 3.0, 1.0f));
VBox vbox = new VBox();
vbox.getChildren().addAll(path);
vbox.setSpacing(5);
HBox root = new HBox();
root.getChildren().add(vbox);
root.setSpacing(40);
root.setPadding(new Insets(125, 50, 10, left));
return root;
}
private List<Line> blackboard() {
Line left = new Line();
left.setStartX(130.0f);
left.setStartY(10.0f);
left.setEndX(130.0f);
left.setEndY(90.0f);
Line top = new Line();
top.setStartX(130.0f);
top.setStartY(10.0f);
top.setEndX(210.0f);
top.setEndY(10.0f);
Line bottom = new Line();
bottom.setStartX(130.0f);
bottom.setStartY(90.0f);
bottom.setEndX(210.0f);
bottom.setEndY(90.0f);
Line right = new Line();
right.setStartX(210.0f);
right.setStartY(10.0f);
right.setEndX(210.0f);
right.setEndY(90.0f);
List<Line> result = new ArrayList<>();
result.add(left);
result.add(top);
result.add(bottom);
result.add(right);
return result;
}
private List<Line> rightHand() {
Line left = new Line();
left.setStartX(110.0f);
left.setStartY(75.0f);
left.setEndX(130.0f);
left.setEndY(75.0f);
Line right = new Line();
right.setStartX(130.0f);
right.setStartY(75.0f);
right.setEndX(140.0f);
right.setEndY(70.0f);
Line stick = new Line();
stick.setStartX(140.0f);
stick.setStartY(50.0f);
stick.setEndX(140.0f);
stick.setEndY(78.0f);
List<Line> result = new ArrayList<>();
result.add(left);
result.add(right);
result.add(stick);
return result;
}
private List<Line> leftHand() {
Line first = new Line();
first.setStartX(85.0f);
first.setStartY(73.0f);
first.setEndX(80.0f);
first.setEndY(85.0f);
Line second = new Line();
second.setStartX(80.0f);
second.setStartY(85.0f);
second.setEndX(70.0f);
second.setEndY(90.0f);
List<Line> result = new ArrayList<>();
result.add(first);
result.add(second);
result.addAll(leftRectangle());
return result;
}
private List<Line> leftRectangle() {
Line first = new Line();
first.setStartX(62.9f);
first.setStartY(82.9f);
first.setEndX(77.1f);
first.setEndY(97.1f);
Line second = new Line();
second.setStartX(77.1f);
second.setStartY(97.1f);
second.setEndX(62.9f);
second.setEndY(111.3f);
Line third = new Line();
third.setStartX(62.9f);
third.setStartY(111.3f);
third.setEndX(48.7f);
third.setEndY(97.1f);
Line fourth = new Line();
fourth.setStartX(48.7f);
fourth.setStartY(97.1f);
fourth.setEndX(62.9f);
fourth.setEndY(82.9f);
List<Line> result = new ArrayList<>();
result.add(first);
result.add(second);
result.add(third);
result.add(fourth);
result.addAll(threeSegment());
return result;
}
private List<Line> threeSegment() {
Line first = new Line();
first.setStartX(55);
first.setStartY(95.1f);
first.setEndX(64.5f);
first.setEndY(104.6f);
Line second = new Line();
second.setStartX(63.1f);
second.setStartY(97.1f);
second.setEndX(65.9f);
second.setEndY(100.3f);
Line third = new Line();
third.setStartX(61.9f);
third.setStartY(89.3f);
third.setEndX(70.7f);
third.setEndY(98.1f);
List<Line> result = new ArrayList<>();
result.add(first);
result.add(second);
result.add(third);
return result;
}
public static void main(String[] args) {
launch(args);
}
}
