From 863029954f79442cc9ab0cfc83bdda16240c0d07 Mon Sep 17 00:00:00 2001 From: Stranni15k Date: Thu, 22 Dec 2022 23:28:40 +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=D1=83=D1=81=D0=BB=D0=BE=D0=B6=D0=BD=D0=B5=D0=BD=D0=BD=D0=B0?= =?UTF-8?q?=D1=8F=20=D0=BB=D0=B0=D0=B1=D0=BE=D1=80=D0=B0=D1=82=D0=BE=D1=80?= =?UTF-8?q?=D0=BD=D0=B0=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/.gitignore | 3 + ...Batylkin_A.O._ElectricLocomotive._Hard.iml | 9 + .idea/misc.xml | 6 + .idea/modules.xml | 8 + .idea/uiDesigner.xml | 124 ++++++++++++ .idea/vcs.xml | 6 + ElectricLocomotive.iml | 11 + src/AdditionalDirection.java | 13 ++ src/Direction.java | 6 + src/DrawingLocomotive.java | 122 +++++++++++ src/DrawingWheel.java | 40 ++++ src/EntityLocomotive.java | 24 +++ src/FormLocomotive.form | 190 ++++++++++++++++++ src/FormLocomotive.java | 126 ++++++++++++ src/images/down.jpg | Bin 0 -> 1743 bytes src/images/left.jpg | Bin 0 -> 1786 bytes src/images/right.jpg | Bin 0 -> 1735 bytes src/images/up.jpg | Bin 0 -> 1771 bytes 18 files changed, 688 insertions(+) create mode 100644 .idea/.gitignore create mode 100644 .idea/PIbd-21_Batylkin_A.O._ElectricLocomotive._Hard.iml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/uiDesigner.xml create mode 100644 .idea/vcs.xml create mode 100644 ElectricLocomotive.iml create mode 100644 src/AdditionalDirection.java create mode 100644 src/Direction.java create mode 100644 src/DrawingLocomotive.java create mode 100644 src/DrawingWheel.java create mode 100644 src/EntityLocomotive.java create mode 100644 src/FormLocomotive.form create mode 100644 src/FormLocomotive.java create mode 100644 src/images/down.jpg create mode 100644 src/images/left.jpg create mode 100644 src/images/right.jpg create mode 100644 src/images/up.jpg diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/PIbd-21_Batylkin_A.O._ElectricLocomotive._Hard.iml b/.idea/PIbd-21_Batylkin_A.O._ElectricLocomotive._Hard.iml new file mode 100644 index 0000000..d6ebd48 --- /dev/null +++ b/.idea/PIbd-21_Batylkin_A.O._ElectricLocomotive._Hard.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..ce297c6 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..c4cbfd3 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml new file mode 100644 index 0000000..2b63946 --- /dev/null +++ b/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/ElectricLocomotive.iml b/ElectricLocomotive.iml new file mode 100644 index 0000000..c90834f --- /dev/null +++ b/ElectricLocomotive.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/src/AdditionalDirection.java b/src/AdditionalDirection.java new file mode 100644 index 0000000..2450c1a --- /dev/null +++ b/src/AdditionalDirection.java @@ -0,0 +1,13 @@ +public enum AdditionalDirection { + + TwoWheel(2), + ThreeWheel(3), + FourWheel(4); + private final int count; + AdditionalDirection(int value){ + count = value; + } + public int getCount() { + return count; + } +} diff --git a/src/Direction.java b/src/Direction.java new file mode 100644 index 0000000..996463a --- /dev/null +++ b/src/Direction.java @@ -0,0 +1,6 @@ +public enum Direction { + Up, + Down, + Left, + Right +} \ No newline at end of file diff --git a/src/DrawingLocomotive.java b/src/DrawingLocomotive.java new file mode 100644 index 0000000..697504e --- /dev/null +++ b/src/DrawingLocomotive.java @@ -0,0 +1,122 @@ +import javax.swing.*; +import java.awt.*; +public class DrawingLocomotive extends JComponent { + public EntityLocomotive Locomotive; + private float _startPosX; + private float _startPosY; + private Integer _pictureWidth = null; + private Integer _pictureHeight = null; + private final int _locomotiveWidth = 150; + private final int _locomotiveHeight = 100; + private DrawingWheel _wheel; + public DrawingLocomotive() { + super(); + } + public void Init(int speed, float weight, Color bodyColor, int wheelCount) + { + Locomotive = new EntityLocomotive(); + Locomotive.Init(speed, weight, bodyColor); + _wheel = new DrawingWheel(); + _wheel.SetWheelAmount(wheelCount); + } + public void SetPosition(int x, int y, int width, int height) + { + if (width <= _locomotiveWidth + x || height <= _locomotiveHeight + y || x<0 || y<0) + { + _pictureWidth = null; + _pictureHeight = null; + return; + } + _startPosX = x; + _startPosY = y; + _pictureWidth = width; + _pictureHeight = height; + } + public void MoveTransport(Direction direction) + { + if (_pictureWidth==null || _pictureHeight==null) + { + return; + } + switch (direction) + { + case Right: + { + if (_startPosX + _locomotiveWidth + Locomotive.Step() < _pictureWidth) { + _startPosX += Locomotive.Step(); + } + break; + } + case Left: + if (_startPosX - Locomotive.Step() > 0) + { + _startPosX -= Locomotive.Step(); + } + break; + case Up: + if (_startPosY - Locomotive.Step() > 0) + { + _startPosY -= Locomotive.Step(); + } + break; + case Down: + if (_startPosY + _locomotiveHeight + Locomotive.Step() < _pictureHeight) + { + _startPosY += Locomotive.Step(); + } + break; + } + } + public void paintComponent(Graphics gr) + { + super.paintComponent(gr); + Graphics2D g=(Graphics2D)gr; + if (_startPosX < 0 || _startPosY < 0 + || _pictureHeight==null || _pictureWidth==null) + { + return; + } + Color pen = new Color(0,0,0); + //границы лодки + int [] pointsX = new int[]{(int)(_startPosX + 10),(int)(_startPosX + 10),(int)(_startPosX+ 110),(int)(_startPosX + 140),(int)(_startPosX+140)}; + int [] pointsY = new int[]{(int)(_startPosY + 90),(int)(_startPosY + 40),(int)(_startPosY + 40),(int)(_startPosY + 60),(int)(_startPosY + 90) }; + + try { pen = Locomotive.BodyColor(); } + catch (Exception e) {} + + g.setPaint(pen); + + g.fillPolygon( pointsX,pointsY,5); + g.setColor(Color.BLACK); + g.fillRect((int) _startPosX + 5, (int)_startPosY + 45, 5, 40); + // Окна + g.setColor(Color.CYAN); + g.drawRect((int) _startPosX + 20, (int)_startPosY + 50, 20, 25); + g.drawRect((int)_startPosX + 50,(int) _startPosY + 50, 20, 25); + // Дверь + g.drawRect((int) _startPosX + 85,(int) _startPosY + 45, 20, 40); + // Локомотив + g.drawPolygon(pointsX,pointsY,5); + _wheel.DrawWheel(gr, (int)_startPosX, (int)_startPosY, pen); + super.repaint(); + } + public void ChangeBorders(int width, int height) + { + _pictureWidth = width; + _pictureHeight = height; + if (_pictureWidth <= _locomotiveWidth || _pictureHeight <= _locomotiveHeight) + { + _pictureWidth = null; + _pictureHeight = null; + return; + } + if (_startPosX + _locomotiveWidth > _pictureWidth) + { + _startPosX = _pictureWidth - _locomotiveWidth; + } + if (_startPosY + _locomotiveHeight > _pictureHeight) + { + _startPosY = _pictureHeight - _locomotiveHeight; + } + } +} diff --git a/src/DrawingWheel.java b/src/DrawingWheel.java new file mode 100644 index 0000000..ebad914 --- /dev/null +++ b/src/DrawingWheel.java @@ -0,0 +1,40 @@ +import javax.swing.*; +import java.awt.*; +public class DrawingWheel extends JComponent { + private AdditionalDirection _wheel; + public void SetWheelAmount(int wheelAmount) { + for (AdditionalDirection item: _wheel.values()) { + if (item.getCount() == wheelAmount) { + _wheel = item; + return; + } + } + } + public void DrawWheel(Graphics gr, int _startPosWheelX, int _startPosWheelY, Color pen) { + super.paintComponent(gr); + Graphics2D g=(Graphics2D)gr; + + if (_wheel.getCount() >= 2) { + paintWheel(g, _startPosWheelX, _startPosWheelY,pen); + paintWheel(g, _startPosWheelX +90, _startPosWheelY,pen); + } + if (_wheel.getCount() >= 3) { + paintWheel(g, _startPosWheelX +65, _startPosWheelY,pen); + } + if (_wheel.getCount() >= 4) { + paintWheel(g, _startPosWheelX +25, _startPosWheelY, pen); + } + super.repaint(); + } + protected void paintWheel(Graphics2D g, int _startPosX1, int _startPosY, Color pen){ + try { g.setPaint(pen); } + catch (Exception e) { + g.setPaint(Color.black); + } + g.fillOval((int)_startPosX1+ 17, (int)_startPosY + 90, 20, 20); + + g.setColor(Color.BLACK); + g.drawOval((int) _startPosX1 + 17, (int) _startPosY + 90, 20, 20); + + } +} diff --git a/src/EntityLocomotive.java b/src/EntityLocomotive.java new file mode 100644 index 0000000..92e2e67 --- /dev/null +++ b/src/EntityLocomotive.java @@ -0,0 +1,24 @@ +import java.awt.*; +import java.util.Random; + +public class EntityLocomotive { + private int speed; + public int Speed() { return speed; } + private float weight; + public float Weight() { + return weight; + } + private Color bodyColor; + public Color BodyColor() { + return bodyColor; + } + public float Step() + { return Speed() * 20 / Weight(); } + public void Init(int speed, float weight, Color bodyColor) + { + Random random = new Random(); + this.speed = speed <= 0 ? random.nextInt(50, 150) : speed; + this.weight = weight <= 0 ? random.nextInt(40, 70) : weight; + this.bodyColor = bodyColor; + } +} diff --git a/src/FormLocomotive.form b/src/FormLocomotive.form new file mode 100644 index 0000000..42249f1 --- /dev/null +++ b/src/FormLocomotive.form @@ -0,0 +1,190 @@ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/src/FormLocomotive.java b/src/FormLocomotive.java new file mode 100644 index 0000000..51cbe14 --- /dev/null +++ b/src/FormLocomotive.java @@ -0,0 +1,126 @@ +import javax.swing.*; +import java.awt.*; +import java.awt.event.*; +import java.util.Random; +public class FormLocomotive extends JFrame { + public static void main(String[] args) { + + FormLocomotive window = new FormLocomotive(); + window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + window.pack(); + window.setLocationRelativeTo(null); + window.setVisible(true); + } + + private JPanel mainPanel; + private JPanel statusStrip; + private JLabel toolStripStatusLabelSpeed; + private JLabel toolStripStatusLabelBodyColor; + private JLabel toolStripStatusLabelWeight; + private JPanel buttonsBox; + private JButton buttonLeft; + private JButton buttonRight; + private JButton buttonUp; + private JButton buttonDown; + private JButton buttonCreate; + + private JRadioButton radioButtonWheel3; + private JRadioButton radioButtonWheel4; + private JPanel radioButtonsBox; + private JPanel pictureBoxLocomotive; + private JRadioButton radioButtonWheel2; + private DrawingLocomotive _locomotive; + private int pictureBoxLocomotiveWidth; + private int pictureBoxLocomotiveHeight; + ButtonGroup buttonGroupWheelRadBut; + public FormLocomotive() { + super("Локомотив"); + buttonGroupWheelRadBut = new ButtonGroup(); + buttonGroupWheelRadBut.add(radioButtonWheel2); + buttonGroupWheelRadBut.add(radioButtonWheel3); + buttonGroupWheelRadBut.add(radioButtonWheel4); + setPreferredSize(new Dimension(1000, 700)); + getContentPane().add(mainPanel); + + buttonCreate.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + try { + pictureBoxLocomotive.remove(_locomotive); + } catch (Exception c) { + } + Random random = new Random(); + _locomotive = new DrawingLocomotive(); + _locomotive.Init(random.nextInt(50, 150), random.nextInt(40, 70), new Color(random.nextInt(0, 256), + random.nextInt(0, 256), random.nextInt(0, 256)), GetWheelAmount()); + ChangePictureBoxLocomotiveBorders(); + _locomotive.SetPosition(random.nextInt(20, 100), random.nextInt(50, 100), pictureBoxLocomotiveWidth, pictureBoxLocomotiveHeight); + toolStripStatusLabelSpeed.setText("Скорость: " + _locomotive.Locomotive.Speed()); + toolStripStatusLabelWeight.setText("Вес: " + _locomotive.Locomotive.Weight()); + + toolStripStatusLabelBodyColor.setText("Цвет: " + Integer.toHexString(_locomotive.Locomotive.BodyColor().getRGB())); + pictureBoxLocomotive.add(_locomotive, BorderLayout.CENTER); + } + }); + addComponentListener(new ComponentAdapter() { + @Override + public void componentResized(ComponentEvent e) { + super.componentResized(e); + ChangePictureBoxLocomotiveBorders(); + if (_locomotive == null) return; + _locomotive.ChangeBorders(pictureBoxLocomotiveWidth, pictureBoxLocomotiveHeight); + try { + pictureBoxLocomotive.remove(_locomotive); + } catch (Exception c) { + } + pictureBoxLocomotive.add(_locomotive, BorderLayout.CENTER); + } + }); + //джижение + ButtonsMove buttonsMove = new ButtonsMove(); + buttonUp.setName("Up"); + buttonLeft.setName("Left"); + buttonRight.setName("Right"); + buttonDown.setName("Down"); + buttonUp.addActionListener(buttonsMove); + buttonLeft.addActionListener(buttonsMove); + buttonRight.addActionListener(buttonsMove); + buttonDown.addActionListener(buttonsMove); + } + class ButtonsMove implements ActionListener { + public void actionPerformed(ActionEvent e) { + if (_locomotive == null) return; + JButton temp = (JButton) e.getSource(); + String name = temp.getName(); + switch (name) { + case "Up" -> _locomotive.MoveTransport(Direction.Up); + case "Right" -> _locomotive.MoveTransport(Direction.Right); + case "Left" -> _locomotive.MoveTransport(Direction.Left); + case "Down" -> _locomotive.MoveTransport(Direction.Down); + } + } + } + + private void ChangePictureBoxLocomotiveBorders() { + char[] temp = pictureBoxLocomotive.getSize().toString().toCharArray(); + for (int i = 0; i < temp.length; i++) { + if (!Character.isDigit(temp[i])) { + temp[i] = ' '; + } + } + String width = new String(temp); + String[] parameters = width.split("\\s*(\\s|,|!|\\.)\\s*", 4); + pictureBoxLocomotiveWidth = Integer.parseInt(parameters[1]); + pictureBoxLocomotiveHeight = Integer.parseInt(parameters[2]); + } + private int GetWheelAmount() { + if (radioButtonWheel2.isSelected()) { + return 2; + } + else if (radioButtonWheel3.isSelected()) { + return 3; + } else { + return 4; + } + } +} diff --git a/src/images/down.jpg b/src/images/down.jpg new file mode 100644 index 0000000000000000000000000000000000000000..70c2e36f6b302179ec2cf95d44a4c50ebdf084ee GIT binary patch literal 1743 zcmbV}c~Db#5XXNZ#|z=caCxB#h?UlZLnv271q5UeK@legL5@Pk14J&7h@er5AV$S{ zKot-a6uAUZfd~O*I0R83Q3T>eo5%}bjF9B@#X5GT(?8mN_qQ`Uv%A09&n_~Ei~wCP zcTabK!C=5n)BrLHC~k>S5dir3fMoyxBAU|&STw?*_C<&QtOIHojOu+A7LQelfWu+& z5CMWzPE^-WClX0S2qI~bNE(``Aa!jWElq7ztolUNuIfUcCJ`d4D*l_0W}rs|6hOgZ zC_qgQgVnTqz zTnTghLLf>E*(xpf3X!_Dl54QJ7dEpFjXk1HGBh$anQOkpV(E9wY;0HC+5hOUZoQkk z#|BR?|9~x91Gfcj-xU@f5&2V8^!~U5@d=4Z$>|wKkFk%R$UMzCbM{=``Cl$vEi5X& zR#JNXMpbo9?VY;%yA2OpT6t~lj~;jQJ?($?d|+^hKRPCS{pRhv_v61wCa0!9N7iU|=nZg?iVLHbfI3zWhhMykpzrDjg~ZIESfvrkYjdwua@DEU zn_+{{*j|#Mna!xVM1}T+?B9VM`Cnw;!2aUm15GRjJswsM(15~SaS;I#Vyd(V&dYQP z7p@?uFzN@EI~@{gSt`wg$xhx^hFX{4j8w}HP45LyV5pcv# zzTx?_vse4J-r9pZ^e5Y9Iu7LXC)I741kYW$o`LS0iQ#6tt_C9ivq3_Gg;7iIPQK?? zJt%MVaC{T+xx9jT2>~LHLNu^(^0c~HpWI;5KBB7kbt9`eCuwX7#cek1T*j(l$Vr$!e=inF}dK@kS)@O-u9 z{yReM+m#Rg?k8jUUv%p?tLAiN^QF3tarpKQh835t7GED`A09q8qT|*)0|%Ru<=X`D zGetc1n@i*if%Yq8789*nkz+j~6WE)_pfqvFHCj$+~ zYF#iN#v7bO0PZdV&P1ekH%T|9*dpLsS+r#b&#cU6`NWi630w$CUEnpci?b#v>tO-? zqOAnVZZsdiHsbNt*lEIuSveudy*IBqD@#~f(HhLRPf0}A947xkG9juH_DoN(m8-KY zZ&KWsOLblcyT z%dwe%YxY|H$)v&y#S4?8cteBAeNDS6`0TM)EjlFGy-{CoeXY5K)>ihwh5N2=zoJ|s zxH&N6T&9_1&TFymIkhW$$&8#AsIrQ=1>)ZZP zriq0>nVpq%YSAXU(RK4jFqzFLH3I?MMfZ)+jSBi~wLJIcwH4@oOgA%PnAcYsc4_6y zi)(8f3m#=1b?0bzQM1nRD~nhR>)rHx@S4M~aOz%sf>X?9h@bA^KQ0cR^bQHx_klF^ zYSPIpS)%hYCIWo6_WS+g-CB7FSeRNdaH~0GpoL*)+YUK#c{b^)<szKGnyDhmFNz@e>cS->(5D*EDaz9tOrB?rNsx)cBs{c4X)e;rs=E literal 0 HcmV?d00001 diff --git a/src/images/left.jpg b/src/images/left.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9f7ba42bfbadee134f33f44a0d694d7921cbf25e GIT binary patch literal 1786 zcmbW2c~Fx_7{>P_2{|~!B~&pI2q-EjptP786`>rZ7F1AcNjW411(eF6l0-leQ9;1e zq9{e9fENOWRE20Dh&Lkv4QGg{RU}{{mWCXB{bC(E)4$q2yF0Tp@B8jNzkO$CVF^48 zEJFf=0|5j<;5%dhSO&-eS&0b%goOcj000h&SpgKXgOKrFa6j+|Mi69}AB4i73^GQe zQ5dW-7He2Iya^tMBjB)Df*FBeVu}chH@7e|H8<=HhZxEYRme2OVR43x|0ei0AmRWS zkWmmB7!e^95rRd4gm}duLJgG6KBqH z&z-NXslCw9c#YS@|K<9P);3Z5osPTr?stj1d!9a%^!CY~%YS|G+sjuYuT^g+-u*uL zhk8n5;DP|^FRYJb|KK7bTt-L_&{zW(WR!_46cLSaT5N2!G8`MT!xAE-YGgM=~XNv`sE zA$5z~(Z!?0>Ht0Zo{ag;*zQMijMd=4qQ;qA<^|e~f|^2vjv1wOhk@`5mMN=0+NI}O zasF(t*>2rCm&G>=4rpC9op%pP&NPh{#6>9Q|%@drREDf{Bpl% zxvGoh>K8xW85ZtHc47HGrR2vu=RSEbE5)|W*#_bq#)P+9OrFesR# zWw$dfN4^{@(^~01*EcV>_1wpD8u6lU=pUqvo$9$J2pB)*rxG})l1|->f^(Mo}y@y{_I%#5sS^dB2BAC zEWGG4V|!3l>FOAE?j^1zb9A&$O=0MW{AtH>m0SC1Cm8H6%1(v>KCs;U)FfMBp^!FA zrIq`RYrnkNSP_Ss&3jW>&rpQQ*pg+kbI_CO?x$)BEKU`YB-rb|xhg2Fxr)W;BZEIc1xuoAHqbWlx zrve#@Q5eK`w9z$5O=pVLluq4Q@5yu+G{nj3^h>@8k52JaPyEgB3=CWXX)m|@=5{zw-Do2ZZk53;F z53iZF^oxRl{h2~7)l(Vs>XyqcvHB-=+Z9>@UE{kZho)XJLf6F>tJ6Ca4`2{DqI5%E zjN^P591agi2_BD({CcEmdw+kMV@t~o-19;oLP?E1;pgqh4`zNWJb=Yq*tr4j{S&L7 B5B2~6 literal 0 HcmV?d00001 diff --git a/src/images/right.jpg b/src/images/right.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cffd5dad5528e6f4bd7f6855b25b03cf831c69c3 GIT binary patch literal 1735 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 literal 0 HcmV?d00001