Hard Version stable
This commit is contained in:
parent
59b1e80ad4
commit
3297c45e04
@ -1,11 +1,14 @@
|
|||||||
package com.example.doubledeckerbus;
|
package com.example.doubledeckerbus;
|
||||||
|
|
||||||
import javafx.beans.InvalidationListener;
|
import javafx.beans.InvalidationListener;
|
||||||
|
import javafx.collections.FXCollections;
|
||||||
|
import javafx.collections.ObservableList;
|
||||||
import javafx.event.ActionEvent;
|
import javafx.event.ActionEvent;
|
||||||
import javafx.fxml.FXML;
|
import javafx.fxml.FXML;
|
||||||
import javafx.scene.canvas.Canvas;
|
import javafx.scene.canvas.Canvas;
|
||||||
import javafx.scene.canvas.GraphicsContext;
|
import javafx.scene.canvas.GraphicsContext;
|
||||||
import javafx.scene.control.Button;
|
import javafx.scene.control.Button;
|
||||||
|
import javafx.scene.control.ChoiceBox;
|
||||||
import javafx.scene.control.Label;
|
import javafx.scene.control.Label;
|
||||||
import javafx.scene.layout.AnchorPane;
|
import javafx.scene.layout.AnchorPane;
|
||||||
import javafx.scene.paint.Color;
|
import javafx.scene.paint.Color;
|
||||||
@ -15,6 +18,7 @@ import java.util.Random;
|
|||||||
public class ControllerBus {
|
public class ControllerBus {
|
||||||
|
|
||||||
private DrawingBus _bus;
|
private DrawingBus _bus;
|
||||||
|
ObservableList<Integer> countOfDoors = FXCollections.observableArrayList(3, 4, 5);
|
||||||
@FXML
|
@FXML
|
||||||
private Button buttonCreate;
|
private Button buttonCreate;
|
||||||
|
|
||||||
@ -45,13 +49,8 @@ public class ControllerBus {
|
|||||||
@FXML
|
@FXML
|
||||||
private Label statusWeight;
|
private Label statusWeight;
|
||||||
|
|
||||||
InvalidationListener listener = o -> BorderChanged();
|
@FXML
|
||||||
|
private ChoiceBox<Integer> choiceDoors;
|
||||||
private void Draw()
|
|
||||||
{
|
|
||||||
GraphicsContext gc = canvasBus.getGraphicsContext2D();
|
|
||||||
_bus.DrawTransport(gc);
|
|
||||||
}
|
|
||||||
|
|
||||||
@FXML
|
@FXML
|
||||||
void ButtonCreate_Click(ActionEvent event) {
|
void ButtonCreate_Click(ActionEvent event) {
|
||||||
@ -61,7 +60,7 @@ public class ControllerBus {
|
|||||||
Random rnd = new Random();
|
Random rnd = new Random();
|
||||||
_bus = new DrawingBus();
|
_bus = new DrawingBus();
|
||||||
_bus.Init(rnd.nextInt(100, 300), rnd.nextFloat(1000, 2000),
|
_bus.Init(rnd.nextInt(100, 300), rnd.nextFloat(1000, 2000),
|
||||||
Color.rgb(rnd.nextInt(0, 256), rnd.nextInt(0, 256), rnd.nextInt(0, 256)));
|
Color.rgb(rnd.nextInt(0, 256), rnd.nextInt(0, 256), rnd.nextInt(0, 256)), choiceDoors.getValue());
|
||||||
_bus.SetPosition(rnd.nextInt(10, 100), rnd.nextInt(10, 100), (int) pictureBoxBus.getWidth(), (int) pictureBoxBus.getHeight());
|
_bus.SetPosition(rnd.nextInt(10, 100), rnd.nextInt(10, 100), (int) pictureBoxBus.getWidth(), (int) pictureBoxBus.getHeight());
|
||||||
statusSpeed.setText("Скорость: %s".formatted(_bus.Bus.Speed));
|
statusSpeed.setText("Скорость: %s".formatted(_bus.Bus.Speed));
|
||||||
statusWeight.setText("Вес: %s".formatted(_bus.Bus.Weight));
|
statusWeight.setText("Вес: %s".formatted(_bus.Bus.Weight));
|
||||||
@ -82,6 +81,20 @@ public class ControllerBus {
|
|||||||
Draw();
|
Draw();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
public void initialize() {
|
||||||
|
choiceDoors.setItems(countOfDoors);
|
||||||
|
choiceDoors.setValue(3);
|
||||||
|
}
|
||||||
|
|
||||||
|
InvalidationListener listener = o -> BorderChanged();
|
||||||
|
|
||||||
|
private void Draw()
|
||||||
|
{
|
||||||
|
GraphicsContext gc = canvasBus.getGraphicsContext2D();
|
||||||
|
_bus.DrawTransport(gc);
|
||||||
|
}
|
||||||
|
|
||||||
void BorderChanged() {
|
void BorderChanged() {
|
||||||
canvasBus.setWidth(pictureBoxBus.getWidth());
|
canvasBus.setWidth(pictureBoxBus.getWidth());
|
||||||
canvasBus.setHeight(pictureBoxBus.getHeight());
|
canvasBus.setHeight(pictureBoxBus.getHeight());
|
||||||
|
@ -0,0 +1,18 @@
|
|||||||
|
package com.example.doubledeckerbus;
|
||||||
|
|
||||||
|
public enum CountOfDoors {
|
||||||
|
|
||||||
|
ThreeDoors(3),
|
||||||
|
FourDoors(4),
|
||||||
|
FiveDoors(5);
|
||||||
|
|
||||||
|
private final int id;
|
||||||
|
CountOfDoors(int value){
|
||||||
|
id = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,5 +1,11 @@
|
|||||||
package com.example.doubledeckerbus;
|
package com.example.doubledeckerbus;
|
||||||
|
|
||||||
public enum Direction {
|
public enum Direction {
|
||||||
Up, Down, Left, Right
|
Up(1),
|
||||||
|
Down(2),
|
||||||
|
Left(3),
|
||||||
|
Right(4);
|
||||||
|
Direction(int value){}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6,6 +6,8 @@ import javafx.scene.paint.Color;
|
|||||||
public class DrawingBus {
|
public class DrawingBus {
|
||||||
public EntityBus Bus;
|
public EntityBus Bus;
|
||||||
|
|
||||||
|
public DrawingDoors Doors;
|
||||||
|
|
||||||
public EntityBus getBus() {
|
public EntityBus getBus() {
|
||||||
return Bus;
|
return Bus;
|
||||||
}
|
}
|
||||||
@ -18,9 +20,11 @@ public class DrawingBus {
|
|||||||
private static final int _busWidth = 100;
|
private static final int _busWidth = 100;
|
||||||
private static final int _busHeight = 50;
|
private static final int _busHeight = 50;
|
||||||
|
|
||||||
public void Init(int speed, float weight, Color bodyColor) {
|
public void Init(int speed, float weight, Color bodyColor, int countOfDoors) {
|
||||||
Bus = new EntityBus();
|
Bus = new EntityBus();
|
||||||
Bus.Init(speed, weight, bodyColor);
|
Bus.Init(speed, weight, bodyColor);
|
||||||
|
Doors = new DrawingDoors();
|
||||||
|
Doors.setCountOfDoors(countOfDoors);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetPosition(int x, int y, int width, int height) {
|
public void SetPosition(int x, int y, int width, int height) {
|
||||||
@ -81,11 +85,8 @@ public class DrawingBus {
|
|||||||
gc.setFill(Bus.BodyColor);
|
gc.setFill(Bus.BodyColor);
|
||||||
gc.fillRect(_startPosX, _startPosY + 10, 100, 30);
|
gc.fillRect(_startPosX, _startPosY + 10, 100, 30);
|
||||||
|
|
||||||
//Дверь
|
|
||||||
gc.setFill(Color.BLACK);
|
|
||||||
gc.fillRect(_startPosX + 30, _startPosY + 20, 10, 20);
|
|
||||||
|
|
||||||
//Колеса
|
//Колеса
|
||||||
|
gc.setFill(Color.BLACK);
|
||||||
gc.fillOval(_startPosX + 7, _startPosY + 35, 10, 10);
|
gc.fillOval(_startPosX + 7, _startPosY + 35, 10, 10);
|
||||||
gc.fillOval(_startPosX + 77, _startPosY + 35, 10, 10);
|
gc.fillOval(_startPosX + 77, _startPosY + 35, 10, 10);
|
||||||
|
|
||||||
@ -96,6 +97,8 @@ public class DrawingBus {
|
|||||||
gc.fillOval(_startPosX + 70, _startPosY + 15, 10, 15);
|
gc.fillOval(_startPosX + 70, _startPosY + 15, 10, 15);
|
||||||
gc.fillOval(_startPosX + 90, _startPosY + 15, 10, 15);
|
gc.fillOval(_startPosX + 90, _startPosY + 15, 10, 15);
|
||||||
|
|
||||||
|
//Дверь
|
||||||
|
Doors.DrawDoors(gc, (int)_startPosX, (int)_startPosY);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ChangeBorders(int width, int height) {
|
public void ChangeBorders(int width, int height) {
|
||||||
|
@ -0,0 +1,31 @@
|
|||||||
|
package com.example.doubledeckerbus;
|
||||||
|
|
||||||
|
import javafx.scene.canvas.GraphicsContext;
|
||||||
|
import javafx.scene.paint.Color;
|
||||||
|
|
||||||
|
public class DrawingDoors {
|
||||||
|
private CountOfDoors _countOfDoors;
|
||||||
|
|
||||||
|
public void DrawDoors(GraphicsContext gc, int _startPosX, int _startPosY) {
|
||||||
|
gc.setFill(Color.BLACK);
|
||||||
|
gc.fillRect(_startPosX, _startPosY + 20, 10, 20);
|
||||||
|
gc.fillRect(_startPosX + 20, _startPosY + 20, 10, 20);
|
||||||
|
gc.fillRect(_startPosX + 40, _startPosY + 20, 10, 20);
|
||||||
|
if (_countOfDoors.getId() >= 4) {
|
||||||
|
gc.fillRect(_startPosX + 60, _startPosY + 20, 10, 20);
|
||||||
|
}
|
||||||
|
if (_countOfDoors.getId() >= 5) {
|
||||||
|
gc.fillRect(_startPosX + 80, _startPosY + 20, 10, 20);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCountOfDoors(int number) {
|
||||||
|
for (CountOfDoors item: CountOfDoors.values()) {
|
||||||
|
if (item.getId() == number) {
|
||||||
|
_countOfDoors = item;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -12,7 +12,7 @@ public class FormBus extends Application {
|
|||||||
public void start(Stage stage) throws IOException {
|
public void start(Stage stage) throws IOException {
|
||||||
FXMLLoader fxmlLoader = new FXMLLoader(FormBus.class.getResource("hello-view.fxml"));
|
FXMLLoader fxmlLoader = new FXMLLoader(FormBus.class.getResource("hello-view.fxml"));
|
||||||
Scene scene = new Scene(fxmlLoader.load());
|
Scene scene = new Scene(fxmlLoader.load());
|
||||||
stage.setTitle("Hello!");
|
stage.setTitle("DoubleDeckerBus");
|
||||||
stage.setScene(scene);
|
stage.setScene(scene);
|
||||||
stage.show();
|
stage.show();
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
<?import javafx.geometry.Insets?>
|
<?import javafx.geometry.Insets?>
|
||||||
<?import javafx.scene.canvas.Canvas?>
|
<?import javafx.scene.canvas.Canvas?>
|
||||||
<?import javafx.scene.control.Button?>
|
<?import javafx.scene.control.Button?>
|
||||||
|
<?import javafx.scene.control.ChoiceBox?>
|
||||||
<?import javafx.scene.control.Label?>
|
<?import javafx.scene.control.Label?>
|
||||||
<?import javafx.scene.image.Image?>
|
<?import javafx.scene.image.Image?>
|
||||||
<?import javafx.scene.image.ImageView?>
|
<?import javafx.scene.image.ImageView?>
|
||||||
@ -26,6 +27,8 @@
|
|||||||
<Label fx:id="statusSpeed" text="Скорость:" />
|
<Label fx:id="statusSpeed" text="Скорость:" />
|
||||||
<Label fx:id="statusWeight" text="Вес:" />
|
<Label fx:id="statusWeight" text="Вес:" />
|
||||||
<Label fx:id="statusColor" text="Цвет:" />
|
<Label fx:id="statusColor" text="Цвет:" />
|
||||||
|
<Label text="Колл-во дверей:" />
|
||||||
|
<ChoiceBox fx:id="choiceDoors" prefHeight="24.0" prefWidth="58.0" />
|
||||||
</children>
|
</children>
|
||||||
</HBox>
|
</HBox>
|
||||||
<AnchorPane fx:id="pictureBoxBus" maxHeight="2000000.0" maxWidth="2000000.0" minHeight="0.0" minWidth="0.0" prefHeight="603.0" prefWidth="1020.0">
|
<AnchorPane fx:id="pictureBoxBus" maxHeight="2000000.0" maxWidth="2000000.0" minHeight="0.0" minWidth="0.0" prefHeight="603.0" prefWidth="1020.0">
|
||||||
|
Loading…
Reference in New Issue
Block a user