From c2fee6a8f0283038a5778672407626f495f8513e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=BB=D1=8C=D1=8F?= <Илья@WIN-RANNDDD> Date: Mon, 9 Oct 2023 12:19:31 +0400 Subject: [PATCH] =?UTF-8?q?=D0=93=D0=BE=D1=82=D0=BE=D0=B2=D0=B0=D1=8F=201?= =?UTF-8?q?=20=D0=BB=D0=B0=D0=B1=D0=BE=D1=80=D0=B0=D1=82=D0=BE=D1=80=D0=BD?= =?UTF-8?q?=D0=B0=D1=8F=20(=D0=A3=D1=81=D0=BB=D0=BE=D0=B6=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=BD=D0=B0=D1=8F)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/ProjectMonorailComplicated.iml | 1 + Resources/arrowDown.png | Bin 0 -> 415 bytes Resources/arrowLeft.png | Bin 0 -> 411 bytes Resources/arrowRight.png | Bin 0 -> 352 bytes Resources/arrowUp.png | Bin 0 -> 412 bytes src/Main.java | 6 - src/project/monorail/DirectionType.java | 10 + src/project/monorail/DrawingMonorail.java | 234 ++++++++++++++++++++++ src/project/monorail/DrawingWheels.java | 95 +++++++++ src/project/monorail/EntityMonorail.java | 80 ++++++++ src/project/monorail/FrameMonorail.java | 20 ++ src/project/monorail/Main.java | 8 + src/project/monorail/PictureBox.java | 170 ++++++++++++++++ src/project/monorail/WheelNumber.java | 8 + 14 files changed, 626 insertions(+), 6 deletions(-) create mode 100644 Resources/arrowDown.png create mode 100644 Resources/arrowLeft.png create mode 100644 Resources/arrowRight.png create mode 100644 Resources/arrowUp.png delete mode 100644 src/Main.java create mode 100644 src/project/monorail/DirectionType.java create mode 100644 src/project/monorail/DrawingMonorail.java create mode 100644 src/project/monorail/DrawingWheels.java create mode 100644 src/project/monorail/EntityMonorail.java create mode 100644 src/project/monorail/FrameMonorail.java create mode 100644 src/project/monorail/Main.java create mode 100644 src/project/monorail/PictureBox.java create mode 100644 src/project/monorail/WheelNumber.java diff --git a/.idea/ProjectMonorailComplicated.iml b/.idea/ProjectMonorailComplicated.iml index c90834f..d5b343a 100644 --- a/.idea/ProjectMonorailComplicated.iml +++ b/.idea/ProjectMonorailComplicated.iml @@ -3,6 +3,7 @@ + diff --git a/Resources/arrowDown.png b/Resources/arrowDown.png new file mode 100644 index 0000000000000000000000000000000000000000..16b4f593bd26b5eb84407bebcbe55c1aaeec95a0 GIT binary patch literal 415 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjEX7WqAsj$Z!;#Vf&U>cv7h@-A}f&3S>O>_%)r334ulzV-xx^&1tm*dBT9nv(@M${i&7cN z%ggmL^RkPR6AM!H@{7`Ezq0`;`tRxD7~P?^!8c@i=zDlvj@=Qp#I- zKKktQyqXyApweg@bKqasE;$9;OS3OTZjo@+ywU8mBTf|o5ezd4OFR`tb;8emW`c)I$ztaD0e0szRs Bqig^G literal 0 HcmV?d00001 diff --git a/Resources/arrowLeft.png b/Resources/arrowLeft.png new file mode 100644 index 0000000000000000000000000000000000000000..8fb9ab154ebc71fdb6fe5827fe9cd93fd6f3b455 GIT binary patch literal 411 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjEX7WqAsj$Z!;#Vf&U>cv7h@-A}f&3S>O>_%)r334ulzV-xx^&1tm*dBT9nv(@M${i&7cN z%ggmL^RkPR6AM!H@{7`Ezq0`;`t9lB7~&rg;N)66!cl!Tf@yl$FB%hT?Z!{*#0@&7EQ3WTV}3dQloNRV0V+f?H~Kd zhiOc~9#ucjZTLRR?IGv1M&;HojoW?JHQ6py{5`8ntix&pv*p3_`cWy?0Z-PxICw|5 xqVje2x0duN69jK09JMtMtThS_{>Is1x2xg6`(~pwj>V literal 0 HcmV?d00001 diff --git a/Resources/arrowRight.png b/Resources/arrowRight.png new file mode 100644 index 0000000000000000000000000000000000000000..95eccc3243ce2d86be760d409611518b9274f59b GIT binary patch literal 352 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjEX7WqAsj$Z!;#Vf4nJ zFs%b&#@shXQb0k;64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhK#J~qx;Tb- zbiTc6=;iDv!1f^jlBNgOLAB6ZCS`Go?g4AwDz}u#9k{1`gLB)x1Gl^sTPql?Otk@VR9OF8{Ihr5e;7XtEq}WvK2HzmQ3g*}KbLh*2~7YbW`~Oa literal 0 HcmV?d00001 diff --git a/Resources/arrowUp.png b/Resources/arrowUp.png new file mode 100644 index 0000000000000000000000000000000000000000..8771ae3cef6a025275442a791b4151a061771e42 GIT binary patch literal 412 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjEX7WqAsj$Z!;#Vf&U>cv7h@-A}f&3S>O>_%)r334ulzV-xx^&1tm*dBT9nv(@M${i&7cN z%ggmL^RkPR6AM!H@{7`Ezq0`;`s3;17~4Qjyq1^c($R1?R8?t z#nveaY@d|G0uuM?MU^PlT1QB4h!fY%@{pcawqo_+a~WG^IL#{9c6f&NmK!%kbh(yr zX pictureWidth) { x = 0; } + if (y < 0 || y + monorailHeight > pictureHeight) { y = 0; } + + startPosX = x; + startPosY = y; + } + + public void MoveTransport(DirectionType direction) { + if (entityMonorail == null) { + return; + } + + switch (direction) { + //влево + case Left: + if (startPosX - entityMonorail.getStep() > 0) + { + startPosX -= (int)entityMonorail.getStep(); + } + break; + //вверх + case Up: + if (startPosY - entityMonorail.getStep() > 0) + { + startPosY -= (int)entityMonorail.getStep(); + } + break; + //вправо + case Right: + if (startPosX + monorailWidth + entityMonorail.getStep() < pictureWidth) + { + startPosX += (int)entityMonorail.getStep(); + } + break; + //вниз + case Down: + if (startPosY + monorailHeight + entityMonorail.getStep() < pictureHeight) + { + startPosY += (int)entityMonorail.getStep(); + } + break; + } + } + + public void DrawTransport(Graphics2D g2d) + { + if (entityMonorail == null) { + return; + } + + Color mainColor = entityMonorail.getMainColor(); + Color additionalColor = entityMonorail.getAdditionalColor(); + BasicStroke standardWidth = new BasicStroke(1); + BasicStroke largerWidth = new BasicStroke(2); + + //надстройка + g2d.setStroke(largerWidth); + g2d.setColor(mainColor); + g2d.fillRect( startPosX + 55, startPosY , 25, 15); + + g2d.setColor(Color.BLACK); + g2d.drawRect(startPosX + 55, startPosY , 25, 15); + + //корпус локомотива + Polygon locoPolygon = new Polygon(); + locoPolygon.addPoint(startPosX + 29, startPosY + 15); + locoPolygon.addPoint(startPosX + 112, startPosY + 15); + locoPolygon.addPoint(startPosX + 112, startPosY + 46); + locoPolygon.addPoint(startPosX + 25, startPosY + 46); + locoPolygon.addPoint(startPosX + 25, startPosY + 31); + + g2d.setColor(mainColor); + g2d.fillPolygon(locoPolygon); + + g2d.setColor(Color.BLACK); + g2d.drawPolygon(locoPolygon); + + g2d.setStroke(standardWidth); + g2d.setColor(Color.BLUE); + g2d.drawLine( startPosX + 25, startPosY + 31, startPosX + 112, startPosY + 31); + + //дверь локомотива + g2d.setColor(Color.GRAY); + g2d.fillRect( startPosX + 54, startPosY + 21, 7, 20); + + g2d.setStroke(largerWidth); + g2d.setColor(Color.BLACK); + g2d.drawRect(startPosX + 54, startPosY + 21, 7, 20); + + //окна локомотива + g2d.setColor(Color.BLUE); + + g2d.fillRect( startPosX + 32, startPosY + 18, 6, 9); + g2d.fillRect( startPosX + 44, startPosY + 18, 6, 9); + g2d.fillRect( startPosX + 103, startPosY + 18, 6, 9); + + g2d.setColor(Color.BLACK); + + g2d.drawRect( startPosX + 32, startPosY + 18, 6, 9); + g2d.drawRect( startPosX + 44, startPosY + 18, 6, 9); + g2d.drawRect( startPosX + 103, startPosY + 18, 6, 9); + + //колеса и тележка локомотива + g2d.fillRect( startPosX + 23, startPosY + 47, 33, 6); + g2d.fillRect( startPosX + 76, startPosY + 47, 30, 6); + g2d.drawRect( startPosX + 23, startPosY + 47, 33, 6); + g2d.drawRect( startPosX + 76, startPosY + 47, 30, 6); + + drawingWheels.drawWheels(g2d, Color.WHITE, startPosX, startPosY); + + Polygon bogiePolygon = new Polygon(); + bogiePolygon.addPoint(startPosX + 26, startPosY + 46); + bogiePolygon.addPoint(startPosX + 24, startPosY + 54); + bogiePolygon.addPoint(startPosX + 12, startPosY + 54); + bogiePolygon.addPoint(startPosX + 8, startPosY + 51); + bogiePolygon.addPoint(startPosX + 12, startPosY + 48); + bogiePolygon.addPoint(startPosX + 18, startPosY + 46); + + g2d.fillPolygon(bogiePolygon); + + //соединение между кабинами + g2d.drawRect( startPosX + 112, startPosY + 18, 5, 28); + g2d.fillRect( startPosX + 112, startPosY + 18, 5, 28); + + //магнитная рельса + if (entityMonorail.getMagneticRail()) { + g2d.drawRect( startPosX + 2, startPosY + 58, 184, 18); + g2d.setColor(Color.GRAY); + g2d.fillRect( startPosX + 2, startPosY + 58, 184, 18); + for (int i = 0; i < 4; i++) + { + g2d.setColor(Color.BLACK); + g2d.drawRect( startPosX + 35 + 35 * i, startPosY + 77, 8, 15); + g2d.setColor(Color.GRAY); + g2d.fillRect( startPosX + 35 + 35 * i, startPosY + 77, 8, 15); + } + } + + //дополнительная кабина + if (entityMonorail.getExtraCabin()) { + //корпус дополнительной кабины + g2d.setColor(mainColor); + g2d.fillRect( startPosX + 118, startPosY + 15, 65, 31); + g2d.setColor(Color.BLACK); + g2d.drawRect( startPosX + 118, startPosY + 15, 65, 31); + + g2d.setStroke(standardWidth); + g2d.setColor(Color.BLUE); + g2d.drawLine( startPosX + 118, startPosY + 31, startPosX + 183, startPosY + 31); + + //дверь дополнительной кабины + g2d.setColor(additionalColor); + g2d.fillRect( startPosX + 146, startPosY + 21, 7, 20); + + g2d.setStroke(largerWidth); + g2d.setColor(Color.BLACK); + g2d.drawRect(startPosX + 146, startPosY + 21, 7, 20); + + //окна дополнительной кабины + g2d.setColor(Color.BLUE); + g2d.fillRect( startPosX + 130, startPosY + 18, 6, 9); + g2d.fillRect( startPosX + 169, startPosY + 18, 6, 9); + + g2d.setColor(Color.BLACK); + g2d.drawRect( startPosX + 130, startPosY + 18, 6, 9); + g2d.drawRect( startPosX + 169, startPosY + 18, 6, 9); + + //колеса и тележка дополнительной кабины + g2d.fillRect( startPosX + 126, startPosY + 47, 15, 6); + g2d.fillRect( startPosX + 159, startPosY + 47, 15, 6); + g2d.drawRect( startPosX + 126, startPosY + 47, 15, 6); + g2d.drawRect( startPosX + 159, startPosY + 47, 15, 6); + + g2d.setColor(Color.WHITE); + g2d.fillOval( startPosX + 128, startPosY + 47, 10, 9); + g2d.fillOval( startPosX + 161, startPosY + 47, 10, 9); + + g2d.setColor(Color.BLACK); + g2d.drawOval( startPosX + 128, startPosY + 47, 10, 9); + g2d.drawOval( startPosX + 161, startPosY + 47, 10, 9); + } + } +} diff --git a/src/project/monorail/DrawingWheels.java b/src/project/monorail/DrawingWheels.java new file mode 100644 index 0000000..05c6d61 --- /dev/null +++ b/src/project/monorail/DrawingWheels.java @@ -0,0 +1,95 @@ +package project.monorail; + +import java.awt.*; + +public class DrawingWheels { + private WheelNumber wheelNumber; + public void setWheelNumber(int number) { + switch (number) { + case 2: + wheelNumber = wheelNumber.Two; + break; + case 3: + wheelNumber = wheelNumber.Three; + break; + case 4: + wheelNumber = wheelNumber.Four; + break; + default: wheelNumber = wheelNumber.Two; + } + } + + public void drawWheels(Graphics2D g2d, Color color, int startPosX, int startPosY) { + switch (wheelNumber) { + case Two: + drawTwoWheels(g2d, color, startPosX, startPosY); + break; + case Three: + drawThreeWheels(g2d, color, startPosX, startPosY); + break; + case Four: + drawFourWheels(g2d, color, startPosX, startPosY); + break; + } + } + + private void drawTwoWheels(Graphics2D g2d, Color color, int startPosX, int startPosY) { + g2d.setColor(color); + + g2d.fillOval( startPosX + 25, startPosY + 47, 10, 9); + g2d.fillOval( startPosX + 45, startPosY + 47, 10, 9); + g2d.fillOval( startPosX + 75, startPosY + 47, 10, 9); + g2d.fillOval( startPosX + 95, startPosY + 47, 10, 9); + + g2d.setColor(Color.BLACK); + + g2d.drawOval( startPosX + 25, startPosY + 47, 10, 9); + g2d.drawOval( startPosX + 45, startPosY + 47, 10, 9); + g2d.drawOval( startPosX + 75, startPosY + 47, 10, 9); + g2d.drawOval( startPosX + 95, startPosY + 47, 10, 9); + } + + private void drawThreeWheels(Graphics2D g2d, Color color, int startPosX, int startPosY) { + g2d.setColor(color); + + g2d.fillOval( startPosX + 25, startPosY + 47, 8, 9); + g2d.fillOval( startPosX + 36, startPosY + 47, 8, 9); + g2d.fillOval( startPosX + 47, startPosY + 47, 8, 9); + g2d.fillOval( startPosX + 76, startPosY + 47, 8, 9); + g2d.fillOval( startPosX + 87, startPosY + 47, 8, 9); + g2d.fillOval( startPosX + 98, startPosY + 47, 8, 9); + + g2d.setColor(Color.BLACK); + + g2d.drawOval( startPosX + 25, startPosY + 47, 8, 9); + g2d.drawOval( startPosX + 36, startPosY + 47, 8, 9); + g2d.drawOval( startPosX + 47, startPosY + 47, 8, 9); + g2d.drawOval( startPosX + 76, startPosY + 47, 8, 9); + g2d.drawOval( startPosX + 87, startPosY + 47, 8, 9); + g2d.drawOval( startPosX + 98, startPosY + 47, 8, 9); + } + + private void drawFourWheels(Graphics2D g2d, Color color, int startPosX, int startPosY) { + g2d.setColor(color); + + g2d.fillOval( startPosX + 25, startPosY + 47, 6, 9); + g2d.fillOval( startPosX + 33, startPosY + 47, 6, 9); + g2d.fillOval( startPosX + 41, startPosY + 47, 6, 9); + g2d.fillOval( startPosX + 49, startPosY + 47, 6, 9); + g2d.fillOval( startPosX + 75, startPosY + 47, 6, 9); + g2d.fillOval( startPosX + 83, startPosY + 47, 6, 9); + g2d.fillOval( startPosX + 91, startPosY + 47, 6, 9); + g2d.fillOval( startPosX + 99, startPosY + 47, 6, 9); + + g2d.setColor(Color.BLACK); + + g2d.drawOval( startPosX + 25, startPosY + 47, 6, 9); + g2d.drawOval( startPosX + 33, startPosY + 47, 6, 9); + g2d.drawOval( startPosX + 41, startPosY + 47, 6, 9); + g2d.drawOval( startPosX + 49, startPosY + 47, 6, 9); + g2d.drawOval( startPosX + 76, startPosY + 47, 6, 9); + g2d.drawOval( startPosX + 84, startPosY + 47, 6, 9); + g2d.drawOval( startPosX + 92, startPosY + 47, 6, 9); + g2d.drawOval( startPosX + 100, startPosY + 47, 6, 9); + } +} diff --git a/src/project/monorail/EntityMonorail.java b/src/project/monorail/EntityMonorail.java new file mode 100644 index 0000000..c0bbc46 --- /dev/null +++ b/src/project/monorail/EntityMonorail.java @@ -0,0 +1,80 @@ +package project.monorail; + +import java.awt.*; + +public class EntityMonorail { + + private int speed; + + public int getSpeed() { + return speed; + } + + private void setSpeed(int speed) { + this.speed = speed; + } + + private double weight; + + public double getWeight() { + return weight; + } + + private void setWeight(double weight) { + this.weight = weight; + } + + private Color mainColor; + + public Color getMainColor() { + return mainColor; + } + + private void setMainColor(Color mainColor) { + this.mainColor = mainColor; + } + + private Color additionalColor; + + public Color getAdditionalColor() { + return additionalColor; + } + + private void setAdditionalColor(Color additionalColor) { + this.additionalColor = additionalColor; + } + + private boolean magneticRail; + + public boolean getMagneticRail() { + return magneticRail; + } + private void setMagneticRail(boolean magneticRail) { + this.magneticRail = magneticRail; + } + + private boolean extraCabin; + + public boolean getExtraCabin() { + return extraCabin; + } + + private void setExtraCabin(boolean extraCabin) { + this.extraCabin = extraCabin; + } + + private double step; + + public double getStep() { + return (double)speed * 100 / weight; + } + + public void Init(int speed, double weight, Color mainColor , Color additionalColor , boolean magneticRail, boolean extraCabin) { + this.speed = speed; + this.weight = weight; + this.mainColor = mainColor; + this.additionalColor = additionalColor; + this.magneticRail = magneticRail; + this.extraCabin = extraCabin; + } +} diff --git a/src/project/monorail/FrameMonorail.java b/src/project/monorail/FrameMonorail.java new file mode 100644 index 0000000..761684f --- /dev/null +++ b/src/project/monorail/FrameMonorail.java @@ -0,0 +1,20 @@ +package project.monorail; + +import javax.swing.*; + +public class FrameMonorail extends JFrame { + + PictureBox pictureBox; + public FrameMonorail() { + super("Monorail"); + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + + pictureBox = new PictureBox(); + add(pictureBox); + + pack(); + setLocationRelativeTo(null); + setVisible(true); + } + +} diff --git a/src/project/monorail/Main.java b/src/project/monorail/Main.java new file mode 100644 index 0000000..1a6ad5a --- /dev/null +++ b/src/project/monorail/Main.java @@ -0,0 +1,8 @@ +package project.monorail; + +public class Main { + public static void main(String[] args) { + FrameMonorail frame = new FrameMonorail(); + } +} + diff --git a/src/project/monorail/PictureBox.java b/src/project/monorail/PictureBox.java new file mode 100644 index 0000000..0549c23 --- /dev/null +++ b/src/project/monorail/PictureBox.java @@ -0,0 +1,170 @@ +package project.monorail; + +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionListener; +import java.util.Random; + +public class PictureBox extends JPanel { + + private DrawingMonorail drawingMonorail; + + JButton buttonLeft; + + JButton buttonUp; + + JButton buttonRight; + + JButton buttonDown; + + JButton buttonCreateMonorail; + + JPanel buttonsPanel; + + JPanel buttonsMovePanel; + + JPanel paddingPanel; + + public PictureBox() { + setLayout(new BorderLayout()); + + buttonsPanel = new JPanel(); + buttonsPanel.setLayout(new BoxLayout(buttonsPanel, BoxLayout.X_AXIS)); + buttonsPanel.setOpaque(false); + + buttonCreateMonorail = new JButton("Create"); + buttonCreateMonorail.setFocusable(false); + buttonCreateMonorail.setFont(new Font("Segoe UI", Font.PLAIN, 12)); + buttonCreateMonorail.setBackground(Color.LIGHT_GRAY); + buttonCreateMonorail.setPreferredSize(new Dimension(75, 23)); + + buttonCreateMonorail.addActionListener (e -> { + Random random = new Random(); + drawingMonorail = new DrawingMonorail(); + drawingMonorail.Init(random.nextInt(200, 300), + random.nextInt(1000, 3000), + new Color(random.nextInt(0, 256), random.nextInt(0, 256), + random.nextInt(0, 256)), + new Color(random.nextInt(0, 256), random.nextInt(0, 256), + random.nextInt(0, 256)), + random.nextBoolean(), random.nextBoolean(), this.getWidth(), this.getHeight(), random.nextInt(2, 5)); + drawingMonorail.SetPosition(random.nextInt(10, 100), random.nextInt(10, 100)); + repaint(); + }); + + ActionListener buttonMoveListener = e -> { + if (drawingMonorail == null) + { + return; + } + + String buttonName = ((JButton) e.getSource()).getName(); + + switch (buttonName) { + case ("buttonUp"): + drawingMonorail.MoveTransport(DirectionType.Up); + break; + case ("buttonDown"): + drawingMonorail.MoveTransport(DirectionType.Down); + break; + case ("buttonLeft"): + drawingMonorail.MoveTransport(DirectionType.Left); + break; + case ("buttonRight"): + drawingMonorail.MoveTransport(DirectionType.Right); + break; + } + repaint(); + }; + + buttonLeft = new JButton(); + buttonLeft.setName("buttonLeft"); + buttonLeft.setFocusable(false); + buttonLeft.setPreferredSize(new Dimension(30, 30)); + buttonLeft.setIcon(new ImageIcon("Resources/arrowLeft.png")); + buttonLeft.addActionListener(buttonMoveListener); + + buttonRight = new JButton(); + buttonRight.setName("buttonRight"); + buttonRight.setFocusable(false); + buttonRight.setPreferredSize(new Dimension(30, 30)); + buttonRight.setIcon(new ImageIcon("Resources/arrowRight.png")); + buttonRight.addActionListener(buttonMoveListener); + + buttonDown = new JButton(); + buttonDown.setName("buttonDown"); + buttonDown.setFocusable(false); + buttonDown.setPreferredSize(new Dimension(30, 30)); + buttonDown.setIcon(new ImageIcon("Resources/arrowDown.png")); + buttonDown.addActionListener(buttonMoveListener); + + buttonUp = new JButton(); + buttonUp.setName("buttonUp"); + buttonUp.setFocusable(false); + buttonUp.setPreferredSize(new Dimension(30, 30)); + buttonUp.setIcon(new ImageIcon("Resources/arrowUp.png")); + buttonUp.addActionListener(buttonMoveListener); + + buttonsMovePanel = new JPanel(); + buttonsMovePanel.setLayout(new GridBagLayout()); + buttonsMovePanel.setOpaque(false); + + GridBagConstraints constrains = new GridBagConstraints(); + constrains.insets = new Insets(5,5,5,5); + constrains.gridx = 0; + constrains.gridy = 0; + + buttonsMovePanel.add(Box.createHorizontalStrut(30), constrains); + + constrains.gridx = 1; + constrains.gridy = 0; + + buttonsMovePanel.add(buttonUp, constrains); + + constrains.gridx = 2; + constrains.gridy = 0; + + buttonsMovePanel.add(Box.createHorizontalStrut(30), constrains); + + constrains.gridx = 0; + constrains.gridy = 1; + + buttonsMovePanel.add(buttonLeft, constrains); + + constrains.gridx = 1; + constrains.gridy = 1; + + buttonsMovePanel.add(buttonDown, constrains); + + constrains.gridx = 2; + constrains.gridy = 1; + + buttonsMovePanel.add(buttonRight, constrains); + + paddingPanel = new JPanel(); + paddingPanel.setLayout(new BoxLayout(paddingPanel, BoxLayout.Y_AXIS)); + paddingPanel.setOpaque(false); + + paddingPanel.add(buttonsMovePanel); + paddingPanel.add(Box.createVerticalStrut(15)); + + buttonsPanel.add(Box.createHorizontalStrut(20)); + buttonsPanel.add(buttonCreateMonorail); + buttonsPanel.add(Box.createHorizontalStrut(650)); + buttonsPanel.add(paddingPanel); + + add(buttonsPanel, BorderLayout.SOUTH); + setPreferredSize(new Dimension(900, 500)); + } + + @Override + protected void paintComponent(Graphics g) { + if (drawingMonorail == null) { + return; + } + + super.paintComponent(g); + Graphics2D g2d = (Graphics2D) g; + drawingMonorail.DrawTransport(g2d); + } +} diff --git a/src/project/monorail/WheelNumber.java b/src/project/monorail/WheelNumber.java new file mode 100644 index 0000000..6b8f291 --- /dev/null +++ b/src/project/monorail/WheelNumber.java @@ -0,0 +1,8 @@ +package project.monorail; +public enum WheelNumber { + Two, + + Three, + + Four +}