lab3 v0.1

This commit is contained in:
yu.shlyapin 2025-02-08 16:10:16 +04:00
parent f33808a992
commit ca79a77693
15 changed files with 473 additions and 115 deletions

View File

@ -12,7 +12,8 @@ import java.io.IOException;
public class AircraftCarrierApplication extends Application { public class AircraftCarrierApplication extends Application {
@Override @Override
public void start(Stage stage) throws IOException { public void start(Stage stage) throws IOException {
FXMLLoader fxmlLoader = new FXMLLoader(AircraftCarrierApplication.class.getResource("/com/example/aircraftcarrier/AircraftCarrierView.fxml")); // FXMLLoader fxmlLoader = new FXMLLoader(AircraftCarrierApplication.class.getResource("/com/example/aircraftcarrier/AircraftCarrierView.fxml"));
FXMLLoader fxmlLoader = new FXMLLoader(AircraftCarrierApplication.class.getResource("/com/example/aircraftcarrier/ShipCollectionView.fxml"));
Scene scene = new Scene(fxmlLoader.load()); Scene scene = new Scene(fxmlLoader.load());
stage.setTitle("Hello!"); stage.setTitle("Hello!");
stage.setScene(scene); stage.setScene(scene);

View File

@ -11,6 +11,7 @@ import javafx.event.Event;
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.fxml.Initializable; import javafx.fxml.Initializable;
import javafx.scene.canvas.Canvas; import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.control.Button; import javafx.scene.control.Button;
import javafx.scene.control.ChoiceBox; import javafx.scene.control.ChoiceBox;
import javafx.scene.control.TextField; import javafx.scene.control.TextField;
@ -34,13 +35,13 @@ public class AircraftCarrierController implements Initializable {
@FXML @FXML
private Canvas canvas; private Canvas canvas;
@FXML @FXML
private TextField inputCountBlocks;
@FXML
private ChoiceBox<String> choiceBoxStrategy; private ChoiceBox<String> choiceBoxStrategy;
private String[] strategyText = new String[]{"к центру", "к углу"}; private final String[] strategyText = new String[]{"к центру", "к углу"};
@FXML
private ChoiceBox<String> choiceBoxShape; public void setDrawing(DrawingSimpleAircraftCarrier drawingAircraftCarrier) {
private String[] shapeText = new String[]{"квадрат", "треугольник", "круг"}; this.drawingAircraftCarrier = drawingAircraftCarrier;
draw();
}
@FXML @FXML
protected void ButtonStrategy_Click() { protected void ButtonStrategy_Click() {
@ -68,74 +69,10 @@ public class AircraftCarrierController implements Initializable {
} }
} }
@FXML private void draw() {
protected void ButtonCreateSimple_Click() { canvas.getGraphicsContext2D().clearRect(0,0,canvas.getWidth(),canvas.getHeight());
drawingAircraftCarrier = new DrawingSimpleAircraftCarrier(
random.nextInt(100) + 100,
random.nextInt(1000) + 1000,
Color.rgb(
random.nextInt(256),
random.nextInt(256),
random.nextInt(256)
)
);
drawingAircraftCarrier.setCanvasWidth((int) canvas.getWidth());
drawingAircraftCarrier.setCanvasHeight((int) canvas.getHeight());
if (
drawingAircraftCarrier.setPosition(
random.nextInt(50) + 10,
random.nextInt(50) + 10
)
) {
drawingAircraftCarrier.Draw(canvas.getGraphicsContext2D()); drawingAircraftCarrier.Draw(canvas.getGraphicsContext2D());
} }
}
@FXML
protected void ButtonCreateAdvanced_Click() {
int inputCount;
try {
inputCount = Integer.parseInt(inputCountBlocks.getText());
} catch (Exception ignore) {
inputCount = 0;
}
drawingAircraftCarrier = new DrawingAircraftCarrier(
random.nextInt(100) + 100,
random.nextInt(1000) + 1000,
Color.rgb(
random.nextInt(256),
random.nextInt(256),
random.nextInt(256)
),
Color.rgb(
random.nextInt(256),
random.nextInt(256),
random.nextInt(256)
),
random.nextBoolean(),
random.nextBoolean(),
inputCount,
choiceBoxShape.getValue()
);
drawingAircraftCarrier.setCanvasWidth((int) canvas.getWidth());
drawingAircraftCarrier.setCanvasHeight((int) canvas.getHeight());
if (
drawingAircraftCarrier.setPosition(
random.nextInt(50) + 10,
random.nextInt(50) + 10
)
) {
drawingAircraftCarrier.Draw(canvas.getGraphicsContext2D());
}
}
@FXML @FXML
protected void MoveEvent(Event e) { protected void MoveEvent(Event e) {
@ -165,15 +102,13 @@ public class AircraftCarrierController implements Initializable {
if (directionType == DirectionType.Unknown) return; if (directionType == DirectionType.Unknown) return;
drawingAircraftCarrier.Move(directionType); drawingAircraftCarrier.Move(directionType);
drawingAircraftCarrier.Draw(canvas.getGraphicsContext2D()); draw();
} }
@Override @Override
public void initialize(URL url, ResourceBundle resourceBundle) { public void initialize(URL url, ResourceBundle resourceBundle) {
System.out.println("start");
canvas.widthProperty().bind(Root.widthProperty()); canvas.widthProperty().bind(Root.widthProperty());
canvas.heightProperty().bind(Root.heightProperty()); canvas.heightProperty().bind(Root.heightProperty());
choiceBoxStrategy.getItems().addAll(strategyText); choiceBoxStrategy.getItems().addAll(strategyText);
choiceBoxShape.getItems().addAll(shapeText);
} }
} }

View File

@ -1,8 +1,5 @@
package com.example.aircraftcarrier.Logic.Aircraft; package com.example.aircraftcarrier.Logic.Aircraft;
import com.example.aircraftcarrier.Logic.Block.DrawingBlock;
import com.example.aircraftcarrier.Logic.Block.DrawingBlockCircle;
import com.example.aircraftcarrier.Logic.Block.DrawingBlockTriangle;
import com.example.aircraftcarrier.Logic.Block.IDrawingBlock; import com.example.aircraftcarrier.Logic.Block.IDrawingBlock;
import com.example.aircraftcarrier.Logic.Entity.EntityAircraftCarrier; import com.example.aircraftcarrier.Logic.Entity.EntityAircraftCarrier;
import javafx.scene.canvas.GraphicsContext; import javafx.scene.canvas.GraphicsContext;
@ -10,15 +7,16 @@ import javafx.scene.paint.Color;
public class DrawingAircraftCarrier extends DrawingSimpleAircraftCarrier { public class DrawingAircraftCarrier extends DrawingSimpleAircraftCarrier {
public IDrawingBlock drawingBlock; public IDrawingBlock drawingBlock;
public DrawingAircraftCarrier() {super();}
public DrawingAircraftCarrier( public DrawingAircraftCarrier(
int speed, int speed,
int weight, int weight,
Color primaryColor, Color primaryColor,
Color secondaryColor, Color secondaryColor,
boolean hasDeck, boolean hasDeck,
boolean hasСabin, boolean hasСabin
int countBlock,
String shape
) { ) {
super(); super();
aircraftCarrier = new EntityAircraftCarrier(speed, aircraftCarrier = new EntityAircraftCarrier(speed,
@ -27,17 +25,10 @@ public class DrawingAircraftCarrier extends DrawingSimpleAircraftCarrier {
secondaryColor, secondaryColor,
hasDeck, hasDeck,
hasСabin); hasСabin);
if (shape != null) {
drawingBlock = switch (shape) {
case "квадрат" -> new DrawingBlock(countBlock);
case "треугольник" -> new DrawingBlockTriangle(countBlock);
case "круг" -> new DrawingBlockCircle(countBlock);
default -> null;
};
} else {
drawingBlock = null;
} }
public void setDrawingBlock(IDrawingBlock iDrawingBlock) {
drawingBlock = iDrawingBlock;
} }
@Override @Override

View File

@ -28,8 +28,14 @@ public class DrawingSimpleAircraftCarrier {
); );
} }
public void setCanvasParam(int width, int height) {
if (x+widthPicture > width && y+heightPicture > height) return;
heightCanvas = height;
widthCanvas = width;
}
public void setCanvasWidth(int width) { public void setCanvasWidth(int width) {
if (x+widthPicture > width); if (x+widthPicture > width) return;
widthCanvas = width; widthCanvas = width;
} }
@ -62,13 +68,17 @@ public class DrawingSimpleAircraftCarrier {
} }
public void Draw(GraphicsContext gc) { public void Draw(GraphicsContext gc) {
gc.clearRect(0,0,widthCanvas,heightCanvas); gc.setStroke(aircraftCarrier.getPrimaryColor());
gc.setLineWidth(5);
double[] X = new double[]{x,x+200,x+250,x+200,x}; double[] X = new double[]{x,x+200,x+250,x+200,x};
double[] Y = new double[]{y,y,y+50,y+100,y+100}; double[] Y = new double[]{y,y,y+50,y+100,y+100};
gc.strokePolygon(X, Y,5); gc.strokePolygon(X, Y,5);
gc.strokeOval(x+175,y+35,30,30); gc.strokeOval(x+175,y+35,30,30);
gc.setStroke(Color.BLACK);
gc.setLineWidth(1);
} }
public boolean Move(DirectionType direction) { public boolean Move(DirectionType direction) {

View File

@ -7,10 +7,6 @@ import javafx.scene.paint.Color;
public class DrawingBlock implements IDrawingBlock { public class DrawingBlock implements IDrawingBlock {
private BlockCount blockCount; private BlockCount blockCount;
public DrawingBlock(int blockCountValue) {
this.blockCount = BlockCount.ConvertToBlockCount(blockCountValue);
}
public void setBlockCount(int blockCountValue) { public void setBlockCount(int blockCountValue) {
this.blockCount = BlockCount.ConvertToBlockCount(blockCountValue); this.blockCount = BlockCount.ConvertToBlockCount(blockCountValue);
} }

View File

@ -7,9 +7,7 @@ import javafx.scene.paint.Color;
public class DrawingBlockCircle implements IDrawingBlock { public class DrawingBlockCircle implements IDrawingBlock {
private BlockCount blockCount; private BlockCount blockCount;
public DrawingBlockCircle(int blockCountValue) { public DrawingBlockCircle() {}
this.blockCount = BlockCount.ConvertToBlockCount(blockCountValue);
}
public void setBlockCount(int blockCountValue) { public void setBlockCount(int blockCountValue) {
this.blockCount = BlockCount.ConvertToBlockCount(blockCountValue); this.blockCount = BlockCount.ConvertToBlockCount(blockCountValue);

View File

@ -7,9 +7,7 @@ import javafx.scene.paint.Color;
public class DrawingBlockTriangle implements IDrawingBlock { public class DrawingBlockTriangle implements IDrawingBlock {
private BlockCount blockCount; private BlockCount blockCount;
public DrawingBlockTriangle(int blockCountValue) { public DrawingBlockTriangle() {}
this.blockCount = BlockCount.ConvertToBlockCount(blockCountValue);
}
public void setBlockCount(int blockCountValue) { public void setBlockCount(int blockCountValue) {
this.blockCount = BlockCount.ConvertToBlockCount(blockCountValue); this.blockCount = BlockCount.ConvertToBlockCount(blockCountValue);

View File

@ -0,0 +1,54 @@
package com.example.aircraftcarrier.Logic.CollectionGenericObjects;
import com.example.aircraftcarrier.Logic.Aircraft.DrawingSimpleAircraftCarrier;
import javafx.scene.canvas.GraphicsContext;
import java.util.Random;
public abstract class AbstractCompany {
protected static final int _placeSizeWidth = 300;
protected static final int _placeSizeHeight = 150;
protected final int _pictureWidth;
protected final int _pictureHeight;
protected ICollectionGenericObjects<DrawingSimpleAircraftCarrier> _collection;
public AbstractCompany(int pictureWidth, int pictureHeight, ICollectionGenericObjects<DrawingSimpleAircraftCarrier> collection) {
_pictureWidth = pictureWidth;
_pictureHeight = pictureHeight;
_collection = collection;
_collection.SetMaxCount(GetMaxCount());
}
private int GetMaxCount() {
return (_pictureWidth / _placeSizeWidth) * (_pictureHeight / _placeSizeHeight);
};
public static boolean add(AbstractCompany company, DrawingSimpleAircraftCarrier aircraftCarrier) {
return company != null && company._collection != null && company._collection.Insert(aircraftCarrier);
}
public static boolean remove(AbstractCompany company, int pos){
return company != null && company._collection != null && company._collection.Remove(pos);
}
public DrawingSimpleAircraftCarrier GetRandom() {
Random random = new Random();
return _collection == null ? null : _collection.Get(random.nextInt(GetMaxCount()));
}
public void Show(GraphicsContext gc) {
gc.clearRect(0, 0, _pictureWidth, _pictureHeight);
DrawBackground(gc);
SetObjectPosition();
for (int i = 0; i < _collection.count(); i++)
{
DrawingSimpleAircraftCarrier obj = _collection.Get(i);
if (obj == null) return;
obj.Draw(gc);
}
}
protected abstract void DrawBackground(GraphicsContext gc);
protected abstract void SetObjectPosition();
}

View File

@ -0,0 +1,59 @@
package com.example.aircraftcarrier.Logic.CollectionGenericObjects;
import com.example.aircraftcarrier.Logic.Aircraft.DrawingSimpleAircraftCarrier;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.paint.Color;
public class DocksService extends AbstractCompany {
public DocksService(int pictureWidth, int pictureHeight, ICollectionGenericObjects<DrawingSimpleAircraftCarrier> collection) {
super(pictureWidth, pictureHeight, collection);
}
@Override
protected void DrawBackground(GraphicsContext gc) {
for (int i = 0; i < _pictureWidth / _placeSizeWidth; i++)
{
for (int j = 0; j < _pictureHeight / _placeSizeHeight; j++)
{
double[] X = {
i*_placeSizeWidth+250,
i*_placeSizeWidth,
i*_placeSizeWidth,
i*_placeSizeWidth+250,
};
double[] Y = {
j*_placeSizeHeight,
j*_placeSizeHeight,
j*_placeSizeHeight+_placeSizeHeight,
j*_placeSizeHeight+_placeSizeHeight,
};
gc.setLineWidth(5);
gc.strokePolyline(X,Y,4);
gc.setLineWidth(1);
}
}
}
@Override
protected void SetObjectPosition() {
int maxXPositionCount = _pictureWidth / _placeSizeWidth;
int maxYPositionCount = _pictureHeight / _placeSizeHeight;
int xpos = 0;
int ypos = maxYPositionCount;
for (int i = 0; i < _collection.count(); i++) {
DrawingSimpleAircraftCarrier obj = _collection.Get(i);
if (obj == null) { continue; }
System.out.println(i);
obj.setCanvasParam(_pictureWidth,_pictureHeight);
obj.setPosition(xpos * _placeSizeWidth + 10, (ypos-1) * _placeSizeHeight + 10);
xpos++;
if (xpos >= maxXPositionCount)
{
xpos = 0;
ypos--;
}
}
}
}

View File

@ -0,0 +1,10 @@
package com.example.aircraftcarrier.Logic.CollectionGenericObjects;
public interface ICollectionGenericObjects<T> {
int count();
void SetMaxCount(int count);
boolean Insert(T obj);
boolean Insert(T obj, int position);
boolean Remove(int position);
T Get(int position);
}

View File

@ -0,0 +1,76 @@
package com.example.aircraftcarrier.Logic.CollectionGenericObjects;
import java.util.Arrays;
public class MassiveGenericObjects<T> implements ICollectionGenericObjects<T> {
private T[] _collection;
@SuppressWarnings("unchecked")
public MassiveGenericObjects() {
this._collection = (T[]) new Object[0];
}
@Override
public int count() {
return _collection.length;
}
@Override
@SuppressWarnings("unchecked")
public void SetMaxCount(int count) {
if (count > 0) {
_collection = (T[]) new Object[count];
Arrays.fill(_collection,null);
}
}
private boolean _checkRange(int pos) {
return (pos >= 0 && pos < _collection.length);
}
private boolean _checkAndInsert(T obj, int pos)
{
if (_collection[pos] == null)
{
_collection[pos] = obj;
return true;
}
return false;
}
@Override
public boolean Insert(T obj) {
for (int i = 0; i< _collection.length;i++){
if (_checkAndInsert(obj,i)) return true;
}
return false;
}
@Override
public boolean Insert(T obj, int position) {
if (!_checkRange(position)) return false;
if (_checkAndInsert(obj, position)) return true;
for (int i = position + 1; i < _collection.length; i++)
{
if (_checkAndInsert(obj, i)) return true;
}
for (int i = 0; i < position; i++)
{
if (_checkAndInsert(obj, i)) return true;
}
return false;
}
@Override
public boolean Remove(int position) {
if (!_checkRange(position) || _collection[position] == null) return false;
_collection[position] = null;
return true;
}
@Override
public T Get(int position) {
if (_checkRange(position)) return _collection[position];
return null;
}
}

View File

@ -10,12 +10,12 @@ public class EntityAircraftCarrier extends EntitySimpleAircraftCarrier {
public EntityAircraftCarrier( public EntityAircraftCarrier(
int speed, int speed,
int weight, double weight,
Color primaryColor, Color primaryColor,
Color secondaryColor, Color secondaryColor,
boolean hasDeck, boolean hasDeck,
boolean hasСabin boolean hasСabin
){ ) {
super(speed,weight,primaryColor); super(speed,weight,primaryColor);
this.SecondaryColor = secondaryColor; this.SecondaryColor = secondaryColor;
this.HasDeck = hasDeck; this.HasDeck = hasDeck;

View File

@ -0,0 +1,202 @@
package com.example.aircraftcarrier;
import com.example.aircraftcarrier.Logic.Aircraft.DrawingAircraftCarrier;
import com.example.aircraftcarrier.Logic.Aircraft.DrawingSimpleAircraftCarrier;
import com.example.aircraftcarrier.Logic.Block.DrawingBlock;
import com.example.aircraftcarrier.Logic.Block.IDrawingBlock;
import com.example.aircraftcarrier.Logic.CollectionGenericObjects.AbstractCompany;
import com.example.aircraftcarrier.Logic.CollectionGenericObjects.DocksService;
import com.example.aircraftcarrier.Logic.CollectionGenericObjects.MassiveGenericObjects;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.control.*;
import javafx.scene.layout.AnchorPane;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
import java.io.IOException;
import java.net.URL;
import java.util.Random;
import java.util.ResourceBundle;
public class ShipCollectionController implements Initializable {
private AbstractCompany _company;
Random random = new Random();
@FXML
private TextField IdField;
@FXML
private Canvas canvasCollection;
@FXML
private AnchorPane wrapperCanvas;
@FXML
private ComboBox<String> comboBoxStorage;
private final String[] storageText = new String[]{"Хранилище"};
@FXML
private static ColorPicker asdd1;
@FXML
protected void ComboBox_Choice() {
System.out.println(comboBoxStorage.getValue());
switch (comboBoxStorage.getValue())
{
case "Хранилище":
_company = new DocksService(
(int)canvasCollection.getWidth(),
(int)canvasCollection.getHeight(),
new MassiveGenericObjects<DrawingSimpleAircraftCarrier>()
);
break;
}
_company.Show(canvasCollection.getGraphicsContext2D());
}
private static Color GetColor(Random random) {
Color c = Color.rgb(random.nextInt(256),random.nextInt(256),random.nextInt(256));
// //TODO: доделать
// asdd1.setVisible(false);
// asdd1.sho
// ColorPicker colorPicker = new ColorPicker(c);
// Button confirmButton = new Button("Установить");
// confirmButton.setAlignment(Pos.CENTER_RIGHT);
//
// HBox buttonBox = new HBox(confirmButton);
// buttonBox.setAlignment(Pos.TOP_RIGHT);
// buttonBox.setPadding(new Insets(10, 10, 10, 10));
// VBox root = new VBox(colorPicker, buttonBox);
//
//
//
// Stage colorStage = new Stage();
// colorStage.setScene(new Scene(root));
//
// confirmButton.setOnAction(event -> colorStage.close());
//
// colorStage.showAndWait();
return c;
}
@FXML
protected void ButtonCreateSimple_Click() {
if (_company == null) return;
DrawingSimpleAircraftCarrier drawingAircraftCarrier;
drawingAircraftCarrier = new DrawingSimpleAircraftCarrier(
random.nextInt(100) + 100,
random.nextInt(1000) + 1000,
GetColor(random)
);
drawingAircraftCarrier.setCanvasWidth((int) canvasCollection.getWidth());
drawingAircraftCarrier.setCanvasHeight((int) canvasCollection.getHeight());
AbstractCompany.add(_company,drawingAircraftCarrier);
_company.Show(canvasCollection.getGraphicsContext2D());
}
@FXML
protected void ButtonCreate_Click() {
if (_company == null) return;
DrawingAircraftCarrier drawingAircraftCarrier;
drawingAircraftCarrier = new DrawingAircraftCarrier(
random.nextInt(100) + 100,
random.nextInt(1000) + 1000,
GetColor(random),
GetColor(random),
random.nextBoolean(),
random.nextBoolean()
);
IDrawingBlock imo = new DrawingBlock();
imo.setBlockCount(2);
drawingAircraftCarrier.setDrawingBlock(imo);
drawingAircraftCarrier.setCanvasWidth((int) canvasCollection.getWidth());
drawingAircraftCarrier.setCanvasHeight((int) canvasCollection.getHeight());
System.out.println( AbstractCompany.add(_company,drawingAircraftCarrier));
_company.Show(canvasCollection.getGraphicsContext2D());
}
@FXML
private void ButtonTest_Click() {
if (_company == null) return;
DrawingSimpleAircraftCarrier aircraft = null;
int counter = 100;
while (aircraft == null & counter > 0) {
aircraft = _company.GetRandom();
counter--;
}
if (aircraft == null) return;
FXMLLoader fxmlLoader = new FXMLLoader(
AircraftCarrierApplication.class.getResource(
"/com/example/aircraftcarrier/AircraftCarrierView.fxml"
)
);
try {
AnchorPane Pane = fxmlLoader.load();
AircraftCarrierController controller = fxmlLoader.getController();
controller.setDrawing(aircraft);
Stage stage = new Stage();
Scene scene = new Scene(Pane);
stage.setScene(scene);
stage.showAndWait();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
@FXML
private void ButtonDeleteAircraft_Click() {
if (IdField.getText().isEmpty() || _company == null) return;
Alert alert = new Alert(Alert.AlertType.NONE);
alert.setTitle("Удаление");
alert.setContentText("вы действительно хотите удалить " + IdField.getText());
alert.getButtonTypes().setAll(ButtonType.YES,ButtonType.NO);
alert.showAndWait();
ButtonType res = alert.resultProperty().getValue();
if (res == ButtonType.NO || res == ButtonType.CLOSE) return;
int pos = Integer.parseInt(IdField.getText());
if (AbstractCompany.remove(_company, pos)) {
Alert correct = new Alert(Alert.AlertType.NONE);
alert.setTitle("Успешно");
correct.setContentText("объект был удален");
correct.getButtonTypes().setAll(ButtonType.OK);
correct.showAndWait();
_company.Show(canvasCollection.getGraphicsContext2D());
}
else {
Alert incorrect = new Alert(Alert.AlertType.NONE);
incorrect.setContentText("объект не удален");
incorrect.getButtonTypes().setAll(ButtonType.OK);
incorrect.showAndWait();
}
}
@Override
public void initialize(URL url, ResourceBundle resourceBundle) {
comboBoxStorage.getItems().addAll(storageText);
// canvasCollection.widthProperty().bind(wrapperCanvas.widthProperty());
// canvasCollection.heightProperty().bind(wrapperCanvas.heightProperty());
IdField.textProperty().addListener(new ChangeListener<String>() {
@Override
public void changed(ObservableValue<? extends String> observableValue, String oldValue, String newValue) {
if(newValue.matches("\\d{0,2}")) {
IdField.setText(newValue);
} else {
IdField.setText(oldValue);
}
}
});
}
}

View File

@ -4,18 +4,14 @@
<?import javafx.scene.control.*?> <?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?> <?import javafx.scene.layout.*?>
<AnchorPane fx:id="Root" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" onKeyPressed="#MoveEvent" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/17.0.2-ea" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.example.aircraftcarrier.AircraftCarrierController"> <AnchorPane fx:id="Root" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" onKeyPressed="#MoveEvent" prefHeight="600.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/17.0.2-ea" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.example.aircraftcarrier.AircraftCarrierController">
<children> <children>
<Canvas fx:id="canvas" height="400.0" width="600.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" /> <Canvas fx:id="canvas" height="600.0" width="800.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
<Button layoutX="14.0" layoutY="361.0" mnemonicParsing="false" onAction="#ButtonCreateSimple_Click" text="Создать простую" AnchorPane.bottomAnchor="20.0" AnchorPane.leftAnchor="20.0" />
<Button layoutX="130.0" layoutY="354.0" mnemonicParsing="false" onAction="#ButtonCreateAdvanced_Click" text="Создать сложную" AnchorPane.bottomAnchor="20.0" AnchorPane.leftAnchor="135.0" />
<Button fx:id="up" layoutX="524.4" layoutY="324.4" minHeight="25.0" minWidth="25.0" mnemonicParsing="false" onAction="#MoveEvent" style="-fx-background-image: url(&quot;up-arrow.png&quot;); -fx-background-size: stretch;" AnchorPane.bottomAnchor="50.0" AnchorPane.rightAnchor="50.0" /> <Button fx:id="up" layoutX="524.4" layoutY="324.4" minHeight="25.0" minWidth="25.0" mnemonicParsing="false" onAction="#MoveEvent" style="-fx-background-image: url(&quot;up-arrow.png&quot;); -fx-background-size: stretch;" AnchorPane.bottomAnchor="50.0" AnchorPane.rightAnchor="50.0" />
<Button fx:id="right" layoutX="554.4" layoutY="354.4" minHeight="25.0" minWidth="25.0" mnemonicParsing="false" onAction="#MoveEvent" style="-fx-background-image: url(&quot;right-arrow.png&quot;); -fx-background-size: stretch;" AnchorPane.bottomAnchor="20.0" AnchorPane.rightAnchor="20.0" /> <Button fx:id="right" layoutX="554.4" layoutY="354.4" minHeight="25.0" minWidth="25.0" mnemonicParsing="false" onAction="#MoveEvent" style="-fx-background-image: url(&quot;right-arrow.png&quot;); -fx-background-size: stretch;" AnchorPane.bottomAnchor="20.0" AnchorPane.rightAnchor="20.0" />
<Button fx:id="down" layoutX="524.4" layoutY="354.4" minHeight="25.0" minWidth="25.0" mnemonicParsing="false" onAction="#MoveEvent" style="-fx-background-image: url(&quot;down-arrow.png&quot;); -fx-background-size: stretch;" AnchorPane.bottomAnchor="20.0" AnchorPane.rightAnchor="50.0" /> <Button fx:id="down" layoutX="524.4" layoutY="354.4" minHeight="25.0" minWidth="25.0" mnemonicParsing="false" onAction="#MoveEvent" style="-fx-background-image: url(&quot;down-arrow.png&quot;); -fx-background-size: stretch;" AnchorPane.bottomAnchor="20.0" AnchorPane.rightAnchor="50.0" />
<Button fx:id="left" layoutX="494.4" layoutY="354.4" minHeight="25.0" minWidth="25.0" mnemonicParsing="false" onAction="#MoveEvent" style="-fx-background-image: url(&quot;left-arrow.png&quot;); -fx-background-size: stretch;" AnchorPane.bottomAnchor="20.0" AnchorPane.rightAnchor="80.0" /> <Button fx:id="left" layoutX="494.4" layoutY="354.4" minHeight="25.0" minWidth="25.0" mnemonicParsing="false" onAction="#MoveEvent" style="-fx-background-image: url(&quot;left-arrow.png&quot;); -fx-background-size: stretch;" AnchorPane.bottomAnchor="20.0" AnchorPane.rightAnchor="80.0" />
<TextField fx:id="inputCountBlocks" layoutX="446.0" layoutY="14.0" promptText="количество блоков" AnchorPane.rightAnchor="20.0" AnchorPane.topAnchor="20.0" /> <ChoiceBox fx:id="choiceBoxStrategy" layoutX="469.0" layoutY="14.0" prefHeight="26.0" prefWidth="110.0" AnchorPane.rightAnchor="20.600000000000023" AnchorPane.topAnchor="14.0" />
<ChoiceBox fx:id="choiceBoxStrategy" layoutX="430.0" layoutY="46.0" prefHeight="26.0" prefWidth="110.0" AnchorPane.rightAnchor="20.0" AnchorPane.topAnchor="50.0" /> <Button layoutX="543.0" layoutY="44.0" mnemonicParsing="false" onAction="#ButtonStrategy_Click" text="шаг" AnchorPane.rightAnchor="20.200000000000045" AnchorPane.topAnchor="44.0" />
<Button layoutX="524.0" layoutY="83.0" mnemonicParsing="false" onAction="#ButtonStrategy_Click" text="шаг" AnchorPane.rightAnchor="20.0" AnchorPane.topAnchor="80.0" />
<ChoiceBox fx:id="choiceBoxShape" layoutX="469.0" layoutY="116.0" prefHeight="26.0" prefWidth="110.0" AnchorPane.rightAnchor="20.599999999999994" AnchorPane.topAnchor="110.0" />
</children> </children>
</AnchorPane> </AnchorPane>

View File

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.canvas.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<BorderPane prefHeight="600.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/17.0.2-ea" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.example.aircraftcarrier.ShipCollectionController">
<right>
<BorderPane prefHeight="400.0" prefWidth="200.0" BorderPane.alignment="CENTER">
<center>
<AnchorPane>
<children>
<Button layoutX="64.0" layoutY="38.0" mnemonicParsing="false" onAction="#ButtonCreateSimple_Click" text="Создать Авианосец" AnchorPane.leftAnchor="10.0" AnchorPane.rightAnchor="10.0" AnchorPane.topAnchor="55.0" />
<Button layoutX="64.0" layoutY="82.0" mnemonicParsing="false" onAction="#ButtonCreate_Click" text="Создать супер Авианосец" AnchorPane.leftAnchor="10.0" AnchorPane.rightAnchor="10.0" AnchorPane.topAnchor="90.0" />
<Button layoutX="64.0" layoutY="132.0" mnemonicParsing="false" onAction="#ButtonDeleteAircraft_Click" text="Удалить Авианосец" AnchorPane.leftAnchor="10.0" AnchorPane.rightAnchor="10.0" AnchorPane.topAnchor="160.0" />
<Button layoutX="64.0" layoutY="166.0" mnemonicParsing="false" onAction="#ButtonTest_Click" text="Тесты" AnchorPane.bottomAnchor="55.0" AnchorPane.leftAnchor="10.0" AnchorPane.rightAnchor="10.0" />
<Button layoutX="64.0" layoutY="216.0" mnemonicParsing="false" text="Обновить" AnchorPane.bottomAnchor="20.0" AnchorPane.leftAnchor="10.0" AnchorPane.rightAnchor="10.0" />
<ComboBox fx:id="comboBoxStorage" layoutX="23.0" layoutY="14.0" onAction="#ComboBox_Choice" prefWidth="150.0" AnchorPane.leftAnchor="10.0" AnchorPane.rightAnchor="10.0" AnchorPane.topAnchor="20.0" />
<TextField fx:id="IdField" layoutX="24.0" layoutY="108.0" promptText="номер" AnchorPane.leftAnchor="10.0" AnchorPane.rightAnchor="10.0" AnchorPane.topAnchor="125.0" />
</children>
</AnchorPane>
</center>
</BorderPane>
</right>
<center>
<AnchorPane fx:id="wrapperCanvas" BorderPane.alignment="CENTER">
<children>
<Canvas fx:id="canvasCollection" height="600.0" width="600.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
</children>
</AnchorPane>
</center>
</BorderPane>