From 1293ca1ba3b481466b68fc384d7348446cba077b Mon Sep 17 00:00:00 2001 From: urlilpolly Date: Sat, 30 Dec 2023 01:45:26 +0400 Subject: [PATCH] laba1 --- .idea/vcs.xml | 2 +- images/KeyDown.png | Bin 0 -> 1412 bytes images/KeyLeft.png | Bin 0 -> 1447 bytes images/KeyRight.png | Bin 0 -> 1188 bytes images/KeyUp.png | Bin 0 -> 1186 bytes src/Drawnings/DrawingAirbus.java | 129 ++++++++++++++++++++++++ src/Drawnings/DrawingPortholes.java | 67 +++++++++++++ src/Entities/CountPortholes.java | 6 ++ src/Entities/EntityAirbus.java | 47 +++++++++ src/FormAirbus.java | 150 ++++++++++++++++++++++++++++ src/Main.java | 14 +-- src/MovementStrategy/Direction.java | 7 ++ 12 files changed, 408 insertions(+), 14 deletions(-) create mode 100644 images/KeyDown.png create mode 100644 images/KeyLeft.png create mode 100644 images/KeyRight.png create mode 100644 images/KeyUp.png create mode 100644 src/Drawnings/DrawingAirbus.java create mode 100644 src/Drawnings/DrawingPortholes.java create mode 100644 src/Entities/CountPortholes.java create mode 100644 src/Entities/EntityAirbus.java create mode 100644 src/FormAirbus.java create mode 100644 src/MovementStrategy/Direction.java diff --git a/.idea/vcs.xml b/.idea/vcs.xml index a745119..94a25f7 100644 --- a/.idea/vcs.xml +++ b/.idea/vcs.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/images/KeyDown.png b/images/KeyDown.png new file mode 100644 index 0000000000000000000000000000000000000000..db4019a388622a7a4d07285cd1a8195163d403d6 GIT binary patch literal 1412 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 literal 0 HcmV?d00001 diff --git a/images/KeyRight.png b/images/KeyRight.png new file mode 100644 index 0000000000000000000000000000000000000000..8fd306ddb11cd0f00137a0c93709d206f3da4d63 GIT binary patch literal 1188 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 AX8-^I literal 0 HcmV?d00001 diff --git a/src/Drawnings/DrawingAirbus.java b/src/Drawnings/DrawingAirbus.java new file mode 100644 index 0000000..415ea9a --- /dev/null +++ b/src/Drawnings/DrawingAirbus.java @@ -0,0 +1,129 @@ +package Drawnings; + +import java.awt.*; +import Entities.*; +import MovementStrategy.*; + +public class DrawingAirbus { + + public EntityAirbus entityAirbus; + public DrawingPortholes _portholes; + private int _pictureWidth; + private int _pictureHeight; + private int _startPosX; + private int _startPosY; + private int _airbusWidth = 210; + private int _airbusHeight = 100; + + public void Init(int speed, float weight, Color bodyColor, Color additionalColor, boolean isCompartment, boolean isadditionalEngine, int countPortholes, int width, int height) { + if (width < _airbusHeight || height < _airbusWidth) + return; + _pictureWidth = width; + _pictureHeight = height; + entityAirbus = new EntityAirbus(); + entityAirbus.Init(speed, weight, bodyColor, additionalColor, isCompartment, isadditionalEngine); + + _portholes = new DrawingPortholes(); + _portholes.SetCount(countPortholes); + } + + public void SetPosition (int x, int y) { + if (x > _pictureWidth || y > _pictureHeight || x < 0 || y < 0) + { + _startPosX = 0; + _startPosY = 0; + } + else + { + _startPosX = x; + _startPosY = y; + } + } + + public void MoveTransport(Direction direction){ + if (entityAirbus == null) { + return; + } + + switch (direction) { + case Left: + if (_startPosX - entityAirbus.Step > 5) + { + _startPosX -= entityAirbus.Step; + } + break; + case Right: + if (_startPosX + _airbusWidth + entityAirbus.Step < _pictureWidth) + { + _startPosX += entityAirbus.Step; + } + break; + case Up: + if (_startPosY - entityAirbus.Step > 0) + { + _startPosY -= entityAirbus.Step; + } + break; + case Down: + if (_startPosY + _airbusHeight + entityAirbus.Step < _pictureHeight) + { + _startPosY += entityAirbus.Step; + } + break; + } + } + + public void DrawTransport(Graphics2D g) { + + if (entityAirbus == null) { + return; + } + // иллюминаторы + _portholes.Draw(g, _startPosX+30, _startPosY+34); + + g.setColor(Color.BLACK); +//Тело + g.drawRect(_startPosX + 5, _startPosY + 50, 170, 30); + g.drawArc(_startPosX - 5, _startPosY + 50, 20, 30, 90, 180); +//Заднее крыло + g.drawLine( _startPosX, _startPosY, _startPosX + 50, _startPosY + 50); + g.drawLine( _startPosX, _startPosY, _startPosX, _startPosY + 52); +//Заднее боковые крылья + g.drawOval(_startPosX - 7, _startPosY + 45, 30, 8); + g.fillOval(_startPosX - 7, _startPosY + 45, 30, 8); +//Нос + g.drawLine( _startPosX + 175, _startPosY + 50, _startPosX + 200, _startPosY + 65); + g.drawLine( _startPosX + 200, _startPosY + 65, _startPosX + 175, _startPosY + 80); + g.drawLine( _startPosX + 175, _startPosY + 50, _startPosX + 175, _startPosY + 80); + g.drawLine( _startPosX + 175, _startPosY + 65, _startPosX + 200, _startPosY + 65); +//Крылья + g.drawArc(_startPosX + 49, _startPosY + 62, 5, 5, 90, 180); + g.drawLine( _startPosX + 51, _startPosY + 62, _startPosX + 140, _startPosY + 62); + g.drawArc( _startPosX + 137, _startPosY + 62, 5, 5, 2790, 180); + g.drawLine( _startPosX + 51, _startPosY + 67, _startPosX + 140, _startPosY + 67); +//Задние шасси + g.drawLine(_startPosX + 55, _startPosY + 80, _startPosX + 55, _startPosY + 90); + g.drawOval(_startPosX + 47, _startPosY + 90, 5, 5); + g.drawOval( _startPosX + 57, _startPosY + 90, 5, 5); +//Передние шасси + g.drawLine( _startPosX + 165, _startPosY + 80, _startPosX + 165, _startPosY + 90); + g.drawOval( _startPosX + 163, _startPosY + 91, 5, 5); +//Пассажирсакий доп. отсек + if (entityAirbus.IsCompartment()) + { + g.setColor(entityAirbus.getAdditionalColor()); + g.drawArc(_startPosX + 60, _startPosY + 28, 115, 45, 0, 180); + g.fillArc(_startPosX + 60, _startPosY + 28, 115, 45, 0, 180); + } +// Доп. двигатели + if (entityAirbus.IsAdditionalEngine()) + { + g.drawLine(_startPosX + 95, _startPosY + 68, _startPosX + 95, _startPosY + 75); + g.setColor(entityAirbus.getAdditionalColor()); + int[] xPolygon = { _startPosX + 83, _startPosX + 103, _startPosX + 103, _startPosX + 83, _startPosX + 83}; + int[] yPolygon = {_startPosY + 78, _startPosY + 73, _startPosY + 93, _startPosY + 88, _startPosY + 78}; + g.drawPolygon(xPolygon, yPolygon, xPolygon.length); + g.fillPolygon(xPolygon, yPolygon, xPolygon.length); + } + } +} diff --git a/src/Drawnings/DrawingPortholes.java b/src/Drawnings/DrawingPortholes.java new file mode 100644 index 0000000..9810120 --- /dev/null +++ b/src/Drawnings/DrawingPortholes.java @@ -0,0 +1,67 @@ +package Drawnings; + +import java.awt.*; +import Entities.*; + +public class DrawingPortholes { + private CountPortholes _porthole; + public CountPortholes getCount() + { + return _porthole; + } + public void SetCount (int count) { + switch (count) { + case 10: + _porthole = CountPortholes.Ten; + break; + case 20: + _porthole = CountPortholes.Twenty; + break; + case 30: + _porthole = CountPortholes.Thirty; + break; + default: + _porthole = CountPortholes.Ten; + break; + } + } + + public void Draw (Graphics2D g, int _startPosx, int _startPoxY) { + g.setColor(Color.BLACK); + if (_porthole == null) {return;} + + for (int i = 0; i < 10; ++i) + { + g.setColor(Color.cyan); + g.fillOval(_startPosx + 19 + i*8, _startPoxY+21, 3, 3); + g.setColor(Color.black); + g.drawOval(_startPosx + 19 + i*8, _startPoxY+21, 3, 3); + } + + if (_porthole != CountPortholes.Ten) { + for (int i=0; i < 5; ++i) + { + g.setColor(Color.cyan); + g.fillOval(_startPosx - 15 + i*5, _startPoxY+28, 3, 3); + g.setColor(Color.black); + g.drawOval(_startPosx - 15 + i*5, _startPoxY+28, 3, 3); + } + for (int i=0; i < 5; ++i) + { + g.setColor(Color.cyan); + g.fillOval(_startPosx + 115 + i*5, _startPoxY+28, 3, 3); + g.setColor(Color.black); + g.drawOval(_startPosx + 115 + i*5, _startPoxY+28, 3, 3); + } + } + if (_porthole == CountPortholes.Thirty){ + for (int i = 0; i < 10; ++i) + { + g.setColor(Color.cyan); + g.fillOval(_startPosx + 19 + i*8, _startPoxY+37, 3, 3); + g.setColor(Color.black); + g.drawOval(_startPosx + 19 + i*8, _startPoxY+37, 3, 3); + } + } + } +} \ No newline at end of file diff --git a/src/Entities/CountPortholes.java b/src/Entities/CountPortholes.java new file mode 100644 index 0000000..6a2b4bd --- /dev/null +++ b/src/Entities/CountPortholes.java @@ -0,0 +1,6 @@ +package Entities; +public enum CountPortholes { + Ten, + Twenty, + Thirty; +} \ No newline at end of file diff --git a/src/Entities/EntityAirbus.java b/src/Entities/EntityAirbus.java new file mode 100644 index 0000000..1f4b8a7 --- /dev/null +++ b/src/Entities/EntityAirbus.java @@ -0,0 +1,47 @@ +package Entities; + +import java.awt.*; + +public class EntityAirbus { + private int Speed; + private float Weight; + private Color BodyColor; + private Color AdditionalColor; + private boolean IsCompartment; + private boolean IsAdditionalEngine; + + public int Step; + + public int getSpeed() { + return Speed; + } + public float getWeight() { + return Weight; + } + public Color getBodyColor() { + return BodyColor; + } + public Color getAdditionalColor() { + return AdditionalColor; + } + public boolean IsCompartment() { + return IsCompartment; + } + public boolean IsAdditionalEngine() { + return IsAdditionalEngine; + } + + + public void Init(int speed, float weight, Color bodyColor, Color additionalColor, boolean isCompartment, boolean isAdditionalEngine) + { + + Weight = weight; + Speed = speed; + BodyColor = bodyColor; + AdditionalColor = additionalColor; + IsCompartment = isCompartment; + IsAdditionalEngine = isAdditionalEngine; + + Step = Speed * 100 / (int) Weight; + } +} diff --git a/src/FormAirbus.java b/src/FormAirbus.java new file mode 100644 index 0000000..33a4dcf --- /dev/null +++ b/src/FormAirbus.java @@ -0,0 +1,150 @@ +import java.awt.*; +import javax.swing.*; +import java.awt.event.*; +import java.util.Random; +import Drawnings.*; +import MovementStrategy.*; + +public class FormAirbus extends JFrame { + + private DrawingAirbus _drawningAirbus; + private Canvas canvas = new Canvas(); + + JLabel labelCount = new JLabel("Введите число иллюминаторов:"); + private JTextField fieldCount = new JTextField(); + private JButton buttonCreate; + private JButton buttonUp; + private JButton buttonDown; + private JButton buttonRight; + private JButton buttonLeft; + + public FormAirbus() { + super("Создание самолёта"); + InitializeComponent(); + setVisible(true); + } + + private void InitializeComponent() + { + buttonCreate = new JButton("Создать самолёт"); + + buttonUp = new JButton(); + buttonUp.setName("up"); + buttonUp.setIcon(new ImageIcon("images\\KeyUp.png")); + buttonUp.setSize(48, 44); + + buttonRight = new JButton(); + buttonRight.setName("right"); + buttonRight.setIcon(new ImageIcon("images\\KeyRight.png")); + buttonRight.setSize(48, 44); + + buttonLeft = new JButton(); + buttonLeft.setName("left"); + buttonLeft.setIcon(new ImageIcon("images\\KeyLeft.png")); + buttonLeft.setSize(48, 44); + + buttonDown = new JButton(); + buttonDown.setName("down"); + buttonDown.setIcon(new ImageIcon("images\\KeyDown.png")); + buttonDown.setSize(48, 44); + + setSize(800,500); + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + setLayout(null); + + buttonCreate.setBounds(12, 355, 170, 44); + buttonUp.setBounds(679, 313, 48, 44); + buttonRight.setBounds( 728, 358, 48, 44); + buttonLeft.setBounds(630, 358, 48, 44); + buttonDown.setBounds( 679, 358, 48, 44); + labelCount.setBounds(12, 405, 240, 20); + fieldCount.setBounds(210, 407, 48, 20); + canvas.setBounds(0,0,800, 460); + + add(buttonCreate); + add(buttonUp); + add(buttonRight); + add(buttonDown); + add(buttonLeft); + add(labelCount); + add(fieldCount); + add(canvas); + + buttonCreate.addActionListener(buttonCreateListener); + buttonUp.addActionListener(buttonsMoveListener); + buttonRight.addActionListener(buttonsMoveListener); + buttonDown.addActionListener(buttonsMoveListener); + buttonLeft.addActionListener(buttonsMoveListener); + } + + ActionListener buttonCreateListener = new ActionListener() { + public void actionPerformed(ActionEvent e) { + int countPortholes; + try + { + countPortholes = Integer.parseInt(fieldCount.getText()); + } + catch (Exception ex) + { + countPortholes = 0; + } + if (countPortholes != 10 && countPortholes != 20 && countPortholes != 30) + { + JOptionPane.showMessageDialog(null, "Число должно быть равно 10, 20 или 30.\nКол-во иллюминаторов приравнено к 10"); + countPortholes = 10; + } + + Random rand = new Random(); + _drawningAirbus = new DrawingAirbus(); + _drawningAirbus.Init(rand.nextInt(200) + 100, rand.nextInt(2000) + 1000, + new Color(rand.nextInt(256),rand.nextInt(256),rand.nextInt(256)), + new Color(rand.nextInt(256), rand.nextInt(256), rand.nextInt(256)), + rand.nextBoolean(), rand.nextBoolean(), + countPortholes, + canvas.getWidth(), canvas.getHeight()); + + _drawningAirbus.SetPosition(rand.nextInt(100) + 10, rand.nextInt(100) + 10); + canvas.repaint(); + } + }; + + ActionListener buttonsMoveListener = new ActionListener() { + // реакция на нажатие + public void actionPerformed(ActionEvent e) { + if (_drawningAirbus == null) + { + return; + } + String command = ((JButton)(e.getSource())).getName(); + switch (command) { + case "up": + _drawningAirbus.MoveTransport(Direction.Up); + break; + case "down": + _drawningAirbus.MoveTransport(Direction.Down); + break; + case "right": + _drawningAirbus.MoveTransport(Direction.Right); + break; + case "left": + _drawningAirbus.MoveTransport(Direction.Left); + break; + } + canvas.repaint(); + } + }; + + class Canvas extends JComponent{ + public Canvas(){ + } + public void paintComponent (Graphics g){ + if (_drawningAirbus == null){ + return; + } + super.paintComponents (g) ; + Graphics2D g2d = (Graphics2D)g; + _drawningAirbus.DrawTransport(g2d); + super.repaint(); + } + } +} diff --git a/src/Main.java b/src/Main.java index aedd9cd..03af442 100644 --- a/src/Main.java +++ b/src/Main.java @@ -1,17 +1,5 @@ -// Press Shift twice to open the Search Everywhere dialog and type `show whitespaces`, -// then press Enter. You can now see whitespace characters in your code. public class Main { public static void main(String[] args) { - // Press Alt+Enter with your caret at the highlighted text to see how - // IntelliJ IDEA suggests fixing it. - System.out.printf("Hello and welcome!"); - - // Press Shift+F10 or click the green arrow button in the gutter to run the code. - for (int i = 1; i <= 5; i++) { - - // Press Shift+F9 to start debugging your code. We have set one breakpoint - // for you, but you can always add more by pressing Ctrl+F8. - System.out.println("i = " + i); - } + new FormAirbus(); } } \ No newline at end of file diff --git a/src/MovementStrategy/Direction.java b/src/MovementStrategy/Direction.java new file mode 100644 index 0000000..3441376 --- /dev/null +++ b/src/MovementStrategy/Direction.java @@ -0,0 +1,7 @@ +package MovementStrategy; +public enum Direction { + Up, + Down, + Left, + Right; +} \ No newline at end of file -- 2.25.1