Start
This commit is contained in:
parent
41866d9c5f
commit
2accdec263
@ -6,6 +6,10 @@ public class DrawingMotorShip extends DrawingShip {
|
|||||||
ship = new EntityMotorShip(speed, weight, bodyColor, dopColor, pipes, fueltank);
|
ship = new EntityMotorShip(speed, weight, bodyColor, dopColor, pipes, fueltank);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public DrawingMotorShip(EntityMotorShip entity, IDrawingDecks decks) {
|
||||||
|
super(entity, decks);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void drawTransport(Graphics2D g) {
|
public void drawTransport(Graphics2D g) {
|
||||||
if (!(ship instanceof EntityMotorShip motorShip)) {
|
if (!(ship instanceof EntityMotorShip motorShip)) {
|
||||||
|
@ -19,6 +19,11 @@ public class DrawingShip {
|
|||||||
drawingDecks = DecksType.random(decksCount, bodyColor);
|
drawingDecks = DecksType.random(decksCount, bodyColor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public DrawingShip(EntityShip entity, IDrawingDecks decks) {
|
||||||
|
ship = entity;
|
||||||
|
drawingDecks = decks;
|
||||||
|
}
|
||||||
|
|
||||||
protected DrawingShip(int speed, float weight, Color bodyColor, int decksCount, int shipWidth, int shipHeight) {
|
protected DrawingShip(int speed, float weight, Color bodyColor, int decksCount, int shipWidth, int shipHeight) {
|
||||||
this(speed, weight, bodyColor, decksCount);
|
this(speed, weight, bodyColor, decksCount);
|
||||||
_shipWidth = shipWidth;
|
_shipWidth = shipWidth;
|
||||||
|
43
EntityWithDecks.java
Normal file
43
EntityWithDecks.java
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
public class EntityWithDecks<T extends EntityShip, U extends IDrawingDecks> {
|
||||||
|
static Random rnd = new Random();
|
||||||
|
private final Object[] entities;
|
||||||
|
public int entitiesCount = 0;
|
||||||
|
private final Object[] decks;
|
||||||
|
public int decksCount = 0;
|
||||||
|
|
||||||
|
public EntityWithDecks(int count) {
|
||||||
|
entities = new Object[count];
|
||||||
|
decks = new Object[count];
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean add(EntityShip entity) {
|
||||||
|
if (entitiesCount >= entities.length) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
entities[entitiesCount++] = entity;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean add(IDrawingDecks deck) {
|
||||||
|
if (decksCount >= decks.length) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
decks[decksCount++] = deck;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public IDrawingObject constructShip() {
|
||||||
|
if (entitiesCount == 0 || decksCount == 0) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
EntityShip entity = (EntityShip) entities[rnd.nextInt(0, entitiesCount)];
|
||||||
|
IDrawingDecks deck = (IDrawingDecks) decks[rnd.nextInt(0, decksCount)];
|
||||||
|
|
||||||
|
if (entity instanceof EntityMotorShip advancedEntity) {
|
||||||
|
return new DrawingObjectShip(new DrawingMotorShip(advancedEntity, deck));
|
||||||
|
}
|
||||||
|
return new DrawingObjectShip(new DrawingShip(entity, deck));
|
||||||
|
}
|
||||||
|
}
|
@ -148,6 +148,19 @@
|
|||||||
<text value="Модификация"/>
|
<text value="Модификация"/>
|
||||||
</properties>
|
</properties>
|
||||||
</component>
|
</component>
|
||||||
|
<component id="d034f" class="javax.swing.JButton" binding="buttonSelect">
|
||||||
|
<constraints>
|
||||||
|
<grid row="2" column="4" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
|
||||||
|
</constraints>
|
||||||
|
<properties>
|
||||||
|
<text value="Выбрать"/>
|
||||||
|
</properties>
|
||||||
|
</component>
|
||||||
|
<hspacer id="f89d0">
|
||||||
|
<constraints>
|
||||||
|
<grid row="1" column="3" row-span="1" col-span="1" vsize-policy="1" hsize-policy="6" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
|
||||||
|
</constraints>
|
||||||
|
</hspacer>
|
||||||
<hspacer id="f89d0">
|
<hspacer id="f89d0">
|
||||||
<constraints>
|
<constraints>
|
||||||
<grid row="1" column="3" row-span="1" col-span="1" vsize-policy="1" hsize-policy="6" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
|
<grid row="1" column="3" row-span="1" col-span="1" vsize-policy="1" hsize-policy="6" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
|
||||||
|
@ -1,10 +1,9 @@
|
|||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
import java.awt.event.ComponentAdapter;
|
import java.awt.event.*;
|
||||||
import java.awt.event.ComponentEvent;
|
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
public class FormShip extends JFrame {
|
public class FormShip extends JDialog {
|
||||||
private JPanel shipPane;
|
private JPanel shipPane;
|
||||||
private JLabel speedLabel;
|
private JLabel speedLabel;
|
||||||
private JLabel weightLabel;
|
private JLabel weightLabel;
|
||||||
@ -16,23 +15,21 @@ public class FormShip extends JFrame {
|
|||||||
private JButton buttonLeft;
|
private JButton buttonLeft;
|
||||||
private JButton buttonRight;
|
private JButton buttonRight;
|
||||||
private JButton createAdvancedButton;
|
private JButton createAdvancedButton;
|
||||||
|
public JButton buttonSelect;
|
||||||
|
|
||||||
private DrawingShip _ship;
|
private DrawingShip _ship;
|
||||||
|
private DrawingShip selectedShip;
|
||||||
|
|
||||||
public FormShip() {
|
public FormShip() {
|
||||||
this.setTitle("Ship");
|
this.setTitle("Ship");
|
||||||
this.setContentPane(shipPane);
|
this.setContentPane(shipPane);
|
||||||
createButton.addActionListener(e -> {
|
createButton.addActionListener(e -> {
|
||||||
Random rnd = new Random();
|
Random rnd = new Random();
|
||||||
_ship = new DrawingShip(
|
Color color = JColorChooser.showDialog(this, "Цвет", new Color(rnd.nextInt(0, 256), rnd.nextInt(0, 256), rnd.nextInt(0, 256)));
|
||||||
rnd.nextInt(100, 300),
|
if (color == null) {
|
||||||
rnd.nextInt(1000, 2000),
|
color = new Color(rnd.nextInt(0, 256), rnd.nextInt(0, 256), rnd.nextInt(0, 256));
|
||||||
new Color(
|
}
|
||||||
rnd.nextInt(0, 256),
|
_ship = new DrawingShip(rnd.nextInt(100, 300), rnd.nextInt(1000, 2000), color, rnd.nextInt(1, 4));
|
||||||
rnd.nextInt(0, 256),
|
|
||||||
rnd.nextInt(0, 256)),
|
|
||||||
rnd.nextInt(1, 4)
|
|
||||||
);
|
|
||||||
_ship.SetPosition(10 + rnd.nextInt(90), 10 + rnd.nextInt(90), pictureBox.getWidth(), pictureBox.getHeight());
|
_ship.SetPosition(10 + rnd.nextInt(90), 10 + rnd.nextInt(90), pictureBox.getWidth(), pictureBox.getHeight());
|
||||||
speedLabel.setText(String.format("Speed: %s", _ship.getShip().getSpeed()));
|
speedLabel.setText(String.format("Speed: %s", _ship.getShip().getSpeed()));
|
||||||
weightLabel.setText(String.format("Weight: %s", _ship.getShip().getWeight()));
|
weightLabel.setText(String.format("Weight: %s", _ship.getShip().getWeight()));
|
||||||
@ -64,18 +61,20 @@ public class FormShip extends JFrame {
|
|||||||
});
|
});
|
||||||
createAdvancedButton.addActionListener(e -> {
|
createAdvancedButton.addActionListener(e -> {
|
||||||
Random rnd = new Random();
|
Random rnd = new Random();
|
||||||
|
Color color = JColorChooser.showDialog(this, "Основной цвет", Color.white);
|
||||||
|
if (color == null) {
|
||||||
|
color = new Color(rnd.nextInt(0, 256), rnd.nextInt(0, 256), rnd.nextInt(0, 256));
|
||||||
|
}
|
||||||
|
Color dopColor = JColorChooser.showDialog(this, "Дополнительный цвет", Color.white);
|
||||||
|
if (dopColor == null) {
|
||||||
|
dopColor = new Color(rnd.nextInt(0, 256), rnd.nextInt(0, 256), rnd.nextInt(0, 256));
|
||||||
|
}
|
||||||
_ship = new DrawingMotorShip(
|
_ship = new DrawingMotorShip(
|
||||||
rnd.nextInt(100, 300),
|
rnd.nextInt(100, 300),
|
||||||
rnd.nextInt(1000, 2000),
|
rnd.nextInt(1000, 2000),
|
||||||
new Color(
|
color,
|
||||||
rnd.nextInt(0, 256),
|
|
||||||
rnd.nextInt(0, 256),
|
|
||||||
rnd.nextInt(0, 256)),
|
|
||||||
rnd.nextInt(1, 4),
|
rnd.nextInt(1, 4),
|
||||||
new Color(
|
dopColor,
|
||||||
rnd.nextInt(0, 256),
|
|
||||||
rnd.nextInt(0, 256),
|
|
||||||
rnd.nextInt(0, 256)),
|
|
||||||
rnd.nextBoolean(),
|
rnd.nextBoolean(),
|
||||||
rnd.nextBoolean()
|
rnd.nextBoolean()
|
||||||
);
|
);
|
||||||
@ -85,6 +84,10 @@ public class FormShip extends JFrame {
|
|||||||
colorLabel.setText(String.format("Цвет: %x", _ship.getShip().getBodyColor().getRGB()));
|
colorLabel.setText(String.format("Цвет: %x", _ship.getShip().getBodyColor().getRGB()));
|
||||||
repaint();
|
repaint();
|
||||||
});
|
});
|
||||||
|
buttonSelect.addActionListener(e -> {
|
||||||
|
selectedShip = _ship;
|
||||||
|
dispose();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -95,4 +98,8 @@ public class FormShip extends JFrame {
|
|||||||
_ship.drawTransport(g2d);
|
_ship.drawTransport(g2d);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public DrawingShip getSelectedShip() {
|
||||||
|
return selectedShip;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
30
FormShipDisplay.form
Normal file
30
FormShipDisplay.form
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="FormShipDisplay">
|
||||||
|
<grid id="27dc6" binding="contentPane" layout-manager="GridLayoutManager" row-count="2" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
|
||||||
|
<margin top="0" left="0" bottom="0" right="0"/>
|
||||||
|
<constraints>
|
||||||
|
<xy x="20" y="20" width="323" height="234"/>
|
||||||
|
</constraints>
|
||||||
|
<properties/>
|
||||||
|
<border type="none"/>
|
||||||
|
<children>
|
||||||
|
<grid id="632d3" binding="pictureBox" layout-manager="GridLayoutManager" row-count="1" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
|
||||||
|
<margin top="0" left="0" bottom="0" right="0"/>
|
||||||
|
<constraints>
|
||||||
|
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
|
||||||
|
</constraints>
|
||||||
|
<properties/>
|
||||||
|
<border type="none"/>
|
||||||
|
<children/>
|
||||||
|
</grid>
|
||||||
|
<component id="7e5f8" class="javax.swing.JButton" binding="buttonRefresh">
|
||||||
|
<constraints>
|
||||||
|
<grid row="1" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
|
||||||
|
</constraints>
|
||||||
|
<properties>
|
||||||
|
<text value="Обновить"/>
|
||||||
|
</properties>
|
||||||
|
</component>
|
||||||
|
</children>
|
||||||
|
</grid>
|
||||||
|
</form>
|
66
FormShipDisplay.java
Normal file
66
FormShipDisplay.java
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
import javax.swing.*;
|
||||||
|
import java.awt.*;
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
public class FormShipDisplay extends JFrame {
|
||||||
|
private static final Random rnd = new Random();
|
||||||
|
private JPanel contentPane;
|
||||||
|
private JButton buttonRefresh;
|
||||||
|
private JPanel pictureBox;
|
||||||
|
private IDrawingObject first;
|
||||||
|
private IDrawingObject second;
|
||||||
|
private IDrawingObject third;
|
||||||
|
|
||||||
|
private final EntityWithDecks<EntityShip, IDrawingDecks> storage;
|
||||||
|
|
||||||
|
public FormShipDisplay() {
|
||||||
|
setTitle("Корабли");
|
||||||
|
setContentPane(contentPane);
|
||||||
|
|
||||||
|
storage = new EntityWithDecks<>(20);
|
||||||
|
|
||||||
|
for(int i = 0; i < 20; i++) {
|
||||||
|
if (rnd.nextBoolean()) {
|
||||||
|
storage.add(new EntityMotorShip(
|
||||||
|
rnd.nextInt(100, 300),
|
||||||
|
rnd.nextInt(1000, 2000),
|
||||||
|
new Color(rnd.nextInt(0, 256), rnd.nextInt(0, 256), rnd.nextInt(0, 256)),
|
||||||
|
new Color(rnd.nextInt(0, 256), rnd.nextInt(0, 256), rnd.nextInt(0, 256)),
|
||||||
|
rnd.nextBoolean(),
|
||||||
|
rnd.nextBoolean()
|
||||||
|
));
|
||||||
|
} else {
|
||||||
|
storage.add(new EntityShip(
|
||||||
|
rnd.nextInt(100, 300),
|
||||||
|
rnd.nextInt(1000, 2000),
|
||||||
|
new Color(rnd.nextInt(0, 256), rnd.nextInt(0, 256), rnd.nextInt(0, 256))
|
||||||
|
));
|
||||||
|
}
|
||||||
|
storage.add(DecksType.random(rnd.nextInt(0, 3), new Color(rnd.nextInt(0, 256), rnd.nextInt(0, 256), rnd.nextInt(0, 256))));
|
||||||
|
}
|
||||||
|
|
||||||
|
buttonRefresh.addActionListener(e -> {
|
||||||
|
first = storage.constructShip();
|
||||||
|
second = storage.constructShip();
|
||||||
|
third = storage.constructShip();
|
||||||
|
|
||||||
|
first.setObject(0, 10, pictureBox.getWidth(), pictureBox.getHeight());
|
||||||
|
second.setObject(90, 10, pictureBox.getWidth(), pictureBox.getHeight());
|
||||||
|
third.setObject(190, 10, pictureBox.getWidth(), pictureBox.getHeight());
|
||||||
|
|
||||||
|
repaint();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void paint(Graphics g) {
|
||||||
|
super.paint(g);
|
||||||
|
Graphics2D g2g = (Graphics2D) pictureBox.getGraphics();
|
||||||
|
|
||||||
|
if (first != null && second != null && third != null) {
|
||||||
|
first.drawingObject(g2g);
|
||||||
|
second.drawingObject(g2g);
|
||||||
|
third.drawingObject(g2g);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user