Compare commits
	
		
			1 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | c8a89e6c86 | 
							
								
								
									
										
											BIN
										
									
								
								src/Crane/Down.png
									
									
									
									
									
										Normal file
									
								
							
							
								
									
								
								
								
								
								
									
									
								
							
						
						
									
										
											BIN
										
									
								
								src/Crane/Down.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After   (image error) Size: 810 B | 
							
								
								
									
										
											BIN
										
									
								
								src/Crane/Left.png
									
									
									
									
									
										Normal file
									
								
							
							
								
									
								
								
								
								
								
									
									
								
							
						
						
									
										
											BIN
										
									
								
								src/Crane/Left.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After   (image error) Size: 802 B | 
							
								
								
									
										
											BIN
										
									
								
								src/Crane/Right.png
									
									
									
									
									
										Normal file
									
								
							
							
								
									
								
								
								
								
								
									
									
								
							
						
						
									
										
											BIN
										
									
								
								src/Crane/Right.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After   (image error) Size: 817 B | 
							
								
								
									
										
											BIN
										
									
								
								src/Crane/Up.png
									
									
									
									
									
										Normal file
									
								
							
							
								
									
								
								
								
								
								
									
									
								
							
						
						
									
										
											BIN
										
									
								
								src/Crane/Up.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After   (image error) Size: 821 B | 
							
								
								
									
										16
									
								
								src/DirectionType.java
									
									
									
									
									
										Normal file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										16
									
								
								src/DirectionType.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,16 @@ | |||||||
|  | public enum DirectionType | ||||||
|  | { | ||||||
|  |     Up("U"), | ||||||
|  |     Down("D"), | ||||||
|  |     Left("L"), | ||||||
|  |     Right("R"); | ||||||
|  |     private String direct; | ||||||
|  |     DirectionType(String d) | ||||||
|  |     { | ||||||
|  |         direct = d; | ||||||
|  |     } | ||||||
|  |     public String getDirect() | ||||||
|  |     { | ||||||
|  |         return direct; | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										115
									
								
								src/DrawingCrane.java
									
									
									
									
									
										Normal file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										115
									
								
								src/DrawingCrane.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,115 @@ | |||||||
|  | import java.awt.*; | ||||||
|  |  | ||||||
|  | public class DrawingCrane | ||||||
|  | { | ||||||
|  |     private EntityCrane entityCrane; | ||||||
|  |     private DrawingWheel drawingWheel; | ||||||
|  |     private int _pictureWidth; | ||||||
|  |     private int _pictureHeight; | ||||||
|  |  | ||||||
|  |     private int _startPositionX; | ||||||
|  |     private int _startPositionY; | ||||||
|  |  | ||||||
|  |     private final int _craneWidth = 200; | ||||||
|  |  | ||||||
|  |     private final int _craneHeight = 150; | ||||||
|  |     public void Init(int speed, double weight, boolean counterWeight, boolean crane, Color bodyColor, Color additionalColor, int width, int height,int wheelCount) | ||||||
|  |     { | ||||||
|  |         if ((_craneWidth > width) || (_craneHeight > height)) return; | ||||||
|  |         _pictureHeight = height; | ||||||
|  |         _pictureWidth = width; | ||||||
|  |         entityCrane = new EntityCrane(); | ||||||
|  |         entityCrane.Init(speed, weight, counterWeight,crane, bodyColor, additionalColor); | ||||||
|  |         drawingWheel = new DrawingWheel(); | ||||||
|  |         drawingWheel.SetWheelCounter(wheelCount); | ||||||
|  |     } | ||||||
|  |     public void SetPosition(int x, int y) | ||||||
|  |     { | ||||||
|  |  | ||||||
|  |         if(x+_craneWidth>_pictureWidth) | ||||||
|  |         { | ||||||
|  |             while(x + _craneWidth > _pictureWidth) | ||||||
|  |             { | ||||||
|  |                 x -= _pictureWidth; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         _startPositionX = x; | ||||||
|  |  | ||||||
|  |         if(y+_craneHeight>_pictureHeight) | ||||||
|  |         { | ||||||
|  |             while(y+_craneHeight>_pictureHeight) | ||||||
|  |             { | ||||||
|  |                 y -= _pictureHeight; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         _startPositionY = y; | ||||||
|  |   } | ||||||
|  |     public void MoveCrane(DirectionType direction) | ||||||
|  |     { | ||||||
|  |         if (entityCrane == null) return; | ||||||
|  |         switch (direction) { | ||||||
|  |             case Left -> { | ||||||
|  |  | ||||||
|  |                 if (_startPositionX - entityCrane.Step > 0) { | ||||||
|  |                     _startPositionX -= (int) entityCrane.Step; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             case Right->{ | ||||||
|  |  | ||||||
|  |                 if (_startPositionX + entityCrane.Step + _craneWidth < _pictureWidth) { | ||||||
|  |                     _startPositionX += (int) entityCrane.Step; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             case Up-> { | ||||||
|  |  | ||||||
|  |                 if (_startPositionY - entityCrane.Step > 0) { | ||||||
|  |                     _startPositionY -= (int) entityCrane.Step; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             case Down ->{ | ||||||
|  |                 if (_startPositionY + entityCrane.Step + _craneHeight < _pictureHeight) { | ||||||
|  |  | ||||||
|  |                     _startPositionY += (int) entityCrane.Step; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |     } | ||||||
|  |     public void DrawTransport(Graphics g) { | ||||||
|  |         var g2d = (Graphics2D)g; | ||||||
|  |         if (entityCrane == null) return; | ||||||
|  |         // Гусеницы | ||||||
|  |  | ||||||
|  |         g2d.drawLine( _startPositionX + 5, _startPositionY + 110, _startPositionX + 195, _startPositionY + 110); | ||||||
|  |         g2d.drawLine( _startPositionX, _startPositionY + 115, _startPositionX, _startPositionY + 145); | ||||||
|  |         g2d.drawLine( _startPositionX + 5, _startPositionY + 150, _startPositionX + 195, _startPositionY + 150); | ||||||
|  |         g2d.drawLine( _startPositionX + 200, _startPositionY + 115, _startPositionX + 200, _startPositionY + 145); | ||||||
|  |         g2d.drawArc( _startPositionX, _startPositionY + 110, _craneWidth / 20, _craneHeight / 15, 45, 135); | ||||||
|  |         g2d.drawArc( _startPositionX, _startPositionY + 140, _craneWidth / 20, _craneHeight / 15, 135, 180); | ||||||
|  |         g2d.drawArc( _startPositionX + 190, _startPositionY + 110, _craneWidth / 20, _craneHeight / 20, 305, 170); | ||||||
|  |         g2d.drawArc( _startPositionX + 190, _startPositionY + 143, _craneWidth / 20, _craneHeight / 20, 230, 180); | ||||||
|  |         // основное тело | ||||||
|  |         g2d.setColor(entityCrane.getBodyColor()); | ||||||
|  |         g2d.drawRect( _startPositionX + 10, _startPositionY + 65, 180, 40); | ||||||
|  |         g2d.fillRect( _startPositionX + 10, _startPositionY + 65, 180, 40); | ||||||
|  |         g2d.setColor(Color.BLACK); | ||||||
|  |  | ||||||
|  |         drawingWheel.DrawWheels(_startPositionX, _startPositionY, g2d); | ||||||
|  |         //кабинка и выхлоп | ||||||
|  |         g2d.drawRect( _startPositionX + 60, _startPositionY + 10, 20, 55); | ||||||
|  |         g2d.drawRect( _startPositionX + 110, _startPositionY, 75, 65); | ||||||
|  |         if (entityCrane.getCounterWeight()) { | ||||||
|  |             g2d.setColor(entityCrane.getAdditionalColor()); | ||||||
|  |             g2d.drawRect( _startPositionX + 185, _startPositionY + 20, 15, 45); | ||||||
|  |  | ||||||
|  |         } | ||||||
|  |         if (entityCrane.getCrane()) { | ||||||
|  |             g2d.drawRect( _startPositionX + 20, _startPositionY, 30, 65); | ||||||
|  |             g2d.drawRect( _startPositionX, _startPositionY, 20, 30); | ||||||
|  |             g2d.fillRect( _startPositionX + 20, _startPositionY, 30, 65); | ||||||
|  |             g2d.fillRect( _startPositionX, _startPositionY, 20, 30); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										27
									
								
								src/DrawingWheel.java
									
									
									
									
									
										Normal file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										27
									
								
								src/DrawingWheel.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | |||||||
|  | import java.awt.*; | ||||||
|  |  | ||||||
|  | public class DrawingWheel { | ||||||
|  |     private WheelCounter wheelCounter; | ||||||
|  |     public void SetWheelCounter(int count) | ||||||
|  |     { | ||||||
|  |         if (count % 3 == 0) | ||||||
|  |             wheelCounter = WheelCounter.SIX; | ||||||
|  |         else if (count % 3 == 1) | ||||||
|  |             wheelCounter = WheelCounter.FOUR; | ||||||
|  |         else if (count % 3 == 2) | ||||||
|  |             wheelCounter = WheelCounter.FIVE; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void DrawWheels(int _startPositionX, int _startPositionY,  Graphics2D g2d) | ||||||
|  |     { | ||||||
|  |         g2d.drawOval( _startPositionX + 2, _startPositionY + 112, 36, 36); | ||||||
|  |         g2d.drawOval( _startPositionX + 160, _startPositionY + 112, 36, 36); | ||||||
|  |         g2d.drawOval( _startPositionX + 74, _startPositionY + 112, 10, 10); | ||||||
|  |         g2d.drawOval( _startPositionX + 111, _startPositionY + 112, 10, 10); | ||||||
|  |         switch (wheelCounter) | ||||||
|  |         { | ||||||
|  |             case FIVE -> {g2d.drawOval( _startPositionX + 133, _startPositionY + 128, 20, 20);} | ||||||
|  |             case SIX -> {g2d.drawOval( _startPositionX + 45, _startPositionY + 128, 20, 20); g2d.drawOval( _startPositionX + 133, _startPositionY + 128, 20, 20);} | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										44
									
								
								src/EntityCrane.java
									
									
									
									
									
										Normal file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										44
									
								
								src/EntityCrane.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,44 @@ | |||||||
|  | import java.awt.*; | ||||||
|  |  | ||||||
|  | public class EntityCrane | ||||||
|  | { | ||||||
|  |     //скорость | ||||||
|  |     private int Speed ; | ||||||
|  |     public int getSpeed() {return Speed;} | ||||||
|  |     private void setSpeed(int value) {Speed = value;} | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     //вес | ||||||
|  |     private double Weight ; | ||||||
|  |     public double getWeight() {return Weight;} | ||||||
|  |     private void setWeight(double value) {Weight = value;} | ||||||
|  |     //основной цвет | ||||||
|  |     private Color BodyColor ; | ||||||
|  |     public Color getBodyColor() {return BodyColor;} | ||||||
|  |     private void setBodyColor(Color value) {BodyColor = value;} | ||||||
|  |     //дополнительный | ||||||
|  |     private Color AdditionalColor ; | ||||||
|  |     public Color getAdditionalColor() {return AdditionalColor;} | ||||||
|  |     private void setAdditionalColor(Color value) {AdditionalColor = value;} | ||||||
|  |  | ||||||
|  |     private boolean CounterWeight ; | ||||||
|  |     public boolean getCounterWeight() {return CounterWeight;} | ||||||
|  |     private void setCounterWeight(boolean value) {CounterWeight = value;} | ||||||
|  |  | ||||||
|  |     private boolean Crane; | ||||||
|  |     public boolean getCrane() {return Crane;} | ||||||
|  |     private void setCrane(boolean value) {Crane = value;} | ||||||
|  |     //шаг перемещения | ||||||
|  |     public double Step; | ||||||
|  |  | ||||||
|  |     public void Init(int speed, double weight, boolean counterWeight,boolean crane, Color bodyColor, Color additionalColor) | ||||||
|  |     { | ||||||
|  |         Speed = speed; | ||||||
|  |         Weight = weight; | ||||||
|  |         CounterWeight = counterWeight; | ||||||
|  |         Crane = crane; | ||||||
|  |         BodyColor = bodyColor; | ||||||
|  |         AdditionalColor = additionalColor; | ||||||
|  |         Step = (double)Speed * 100 / Weight; | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										142
									
								
								src/Frame.java
									
									
									
									
									
										Normal file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										142
									
								
								src/Frame.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,142 @@ | |||||||
|  | import javax.imageio.ImageIO; | ||||||
|  | import javax.swing.*; | ||||||
|  | import java.awt.*; | ||||||
|  | import java.awt.event.ActionEvent; | ||||||
|  | import java.awt.event.ActionListener; | ||||||
|  | import java.awt.image.*; | ||||||
|  | import java.io.IOException; | ||||||
|  | import java.util.Random; | ||||||
|  |  | ||||||
|  | class DrawCrane extends JComponent { | ||||||
|  |     private DrawingCrane _drawingCrane; | ||||||
|  |     public void paintComponent(Graphics g) | ||||||
|  |     { | ||||||
|  |         super.paintComponent(g); | ||||||
|  |         if (_drawingCrane == null) | ||||||
|  |             return; | ||||||
|  |         _drawingCrane.DrawTransport(g); | ||||||
|  |         super.repaint(); | ||||||
|  |     } | ||||||
|  |     protected void CreateCraneButton_Click() | ||||||
|  |     { | ||||||
|  |         Random rnd = new Random(); | ||||||
|  |         _drawingCrane = new DrawingCrane(); | ||||||
|  |         Color addColor = new Color(rnd.nextInt( 256), rnd.nextInt( 256), rnd.nextInt( 256)); | ||||||
|  |         Color bodyColor = new Color(rnd.nextInt( 256), rnd.nextInt( 256), rnd.nextInt(256)); | ||||||
|  |         _drawingCrane.Init(rnd.nextInt(100)+100, rnd.nextInt(2000)+1000, | ||||||
|  |                 ConvertToBoolean(rnd.nextInt( 2)), ConvertToBoolean(rnd.nextInt( 2)), bodyColor, addColor, | ||||||
|  |                  Frame.Width-10, Frame.Height-38, rnd.nextInt( 3)+4); | ||||||
|  |         _drawingCrane.SetPosition(rnd.nextInt( 100), rnd.nextInt(90)+10); | ||||||
|  |         super.repaint(); | ||||||
|  |     } | ||||||
|  |     protected void ButtonMove_Click(String tag) | ||||||
|  |     { | ||||||
|  |         if (_drawingCrane == null) | ||||||
|  |             return; | ||||||
|  |         switch (tag) { | ||||||
|  |             case "U" -> _drawingCrane.MoveCrane(DirectionType.Up); | ||||||
|  |             case "D" -> _drawingCrane.MoveCrane(DirectionType.Down); | ||||||
|  |             case "L" -> _drawingCrane.MoveCrane(DirectionType.Left); | ||||||
|  |             case "R" -> _drawingCrane.MoveCrane(DirectionType.Right); | ||||||
|  |         } | ||||||
|  |         super.repaint(); | ||||||
|  |     } | ||||||
|  |     static boolean ConvertToBoolean(int value) | ||||||
|  |     { | ||||||
|  |         if(value ==0) | ||||||
|  |             return false; | ||||||
|  |         return true; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | public class Frame extends JFrame { | ||||||
|  |     public Frame() | ||||||
|  |     { | ||||||
|  |         InitUI(); | ||||||
|  |     } | ||||||
|  |     protected static final int Width = 900; | ||||||
|  |     protected static final int Height = 500; | ||||||
|  |  | ||||||
|  |     DrawCrane Crane; | ||||||
|  |     private void InitUI() { | ||||||
|  |         setSize(Width, Height); | ||||||
|  |         setTitle("HoistingCrane"); | ||||||
|  |         setLocationRelativeTo(null); | ||||||
|  |         setLayout(null); | ||||||
|  |         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); | ||||||
|  |         setResizable(false); | ||||||
|  |         Crane = new DrawCrane(); | ||||||
|  |         Crane.setBounds(0, 0, Width, Height); | ||||||
|  |         add(Crane); | ||||||
|  |  | ||||||
|  |         MoveAL moving = new MoveAL(); | ||||||
|  |  | ||||||
|  |         JButton left = new JButton(); | ||||||
|  |         left.setActionCommand("L"); | ||||||
|  |         left.addActionListener(moving); | ||||||
|  |         left.setLayout(null); | ||||||
|  |  | ||||||
|  |         JButton right = new JButton(); | ||||||
|  |         right.setActionCommand("R"); | ||||||
|  |         right.setLayout(null); | ||||||
|  |         right.addActionListener(moving); | ||||||
|  |  | ||||||
|  |         JButton up = new JButton(); | ||||||
|  |         up.setActionCommand("U"); | ||||||
|  |         up.addActionListener(moving); | ||||||
|  |         up.setLayout(null); | ||||||
|  |  | ||||||
|  |         JButton down = new JButton(); | ||||||
|  |         down.setActionCommand("D"); | ||||||
|  |         down.addActionListener(moving); | ||||||
|  |         down.setLayout(null); | ||||||
|  |  | ||||||
|  |         JButton CreateButton = new JButton("Создать"); | ||||||
|  |         right.setIcon(new ImageIcon("src/crane/right.png")); | ||||||
|  |         left.setIcon(new ImageIcon("src/crane/left.png")); | ||||||
|  |         down.setIcon(new ImageIcon("src/crane/down.png")); | ||||||
|  |         up.setIcon(new ImageIcon("src/crane/up.png")); | ||||||
|  |         JPanel panelMoveButtons = new JPanel(); | ||||||
|  |  | ||||||
|  |         panelMoveButtons.setLayout(new GridBagLayout()); | ||||||
|  |         panelMoveButtons.setBounds(774, 395, 98, 66); | ||||||
|  |  | ||||||
|  |         GridBagConstraints constraints = new GridBagConstraints(); | ||||||
|  |         constraints.fill = GridBagConstraints.BOTH; | ||||||
|  |         constraints.gridx = 1; | ||||||
|  |         constraints.gridy = 0; | ||||||
|  |         constraints.weightx = 4; | ||||||
|  |         constraints.weighty = 6; | ||||||
|  |         panelMoveButtons.add(up, constraints); | ||||||
|  |         constraints.gridy = 1; | ||||||
|  |         constraints.gridx = 0; | ||||||
|  |         panelMoveButtons.add(left, constraints); | ||||||
|  |         constraints.gridx = 1; | ||||||
|  |         panelMoveButtons.add(down, constraints); | ||||||
|  |         constraints.gridx = 2; | ||||||
|  |         panelMoveButtons.add(right, constraints); | ||||||
|  |  | ||||||
|  |  | ||||||
|  |         JPanel panelCreateButton = new JPanel(); | ||||||
|  |         panelCreateButton.setLayout(new BorderLayout()); | ||||||
|  |         panelCreateButton.setBounds(0, 420, 112, 34); | ||||||
|  |         panelCreateButton.add(CreateButton); | ||||||
|  |  | ||||||
|  |         add(panelMoveButtons); | ||||||
|  |         add(panelCreateButton); | ||||||
|  |  | ||||||
|  |  | ||||||
|  |         setVisible(true); | ||||||
|  |         CreateButton.addActionListener(new ActionListener() { | ||||||
|  |             @Override | ||||||
|  |             public void actionPerformed(ActionEvent e) { | ||||||
|  |                 Crane.CreateCraneButton_Click(); | ||||||
|  |             } | ||||||
|  |         }); | ||||||
|  |     } | ||||||
|  |     public class MoveAL implements ActionListener { | ||||||
|  |         @Override | ||||||
|  |         public void actionPerformed(ActionEvent e) { | ||||||
|  |             Crane.ButtonMove_Click(e.getActionCommand()); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										6
									
								
								src/Main.java
									
									
									
									
									
										Normal file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										6
									
								
								src/Main.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | |||||||
|  | public class Main { | ||||||
|  |     public static void main(String[] args) { | ||||||
|  |         Frame a = new Frame(); | ||||||
|  |         a.setVisible(true); | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										14
									
								
								src/WheelCounter.java
									
									
									
									
									
										Normal file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										14
									
								
								src/WheelCounter.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,14 @@ | |||||||
|  | public enum WheelCounter { | ||||||
|  |         FOUR (4), | ||||||
|  |         FIVE (5), | ||||||
|  |         SIX (6); | ||||||
|  |         private int count; | ||||||
|  |         WheelCounter(int c) | ||||||
|  |         { | ||||||
|  |             count = c; | ||||||
|  |         } | ||||||
|  |         public int getCount() | ||||||
|  |         { | ||||||
|  |             return count; | ||||||
|  |         } | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user