DopHarder

This commit is contained in:
Timourka 2023-10-23 21:52:50 +04:00
parent d94c613ddf
commit 9ae0458bb2
6 changed files with 158 additions and 3 deletions

View File

@ -26,6 +26,12 @@ public class DrawingLoco extends DrawingTrain{
EntityTrain = new EntityLoco(speed, weight, bodyColor, _numWheel, additionalColor, tube, fuelTank, locoLine); EntityTrain = new EntityLoco(speed, weight, bodyColor, _numWheel, additionalColor, tube, fuelTank, locoLine);
_locoWidth = ((EntityLoco)EntityTrain).FuelTank ? 169 : 83; _locoWidth = ((EntityLoco)EntityTrain).FuelTank ? 169 : 83;
} }
// конструктор для 3 сложной лабы
public DrawingLoco(EntityLoco train, IWheelDrawing _wheelDrawing, int width, int height ){
super(train, _wheelDrawing, width, height);
if (height < _locoHeight || width < _locoWidth)
return;
}
/// <summary> /// <summary>
/// Установка позиции /// Установка позиции
/// </summary> /// </summary>

View File

@ -70,6 +70,16 @@ public class DrawingTrain {
} }
wheelDrawing.setNumWheel(_numWheel); wheelDrawing.setNumWheel(_numWheel);
} }
// конструктор для 3 сложной лабы
public DrawingTrain(EntityTrain train, IWheelDrawing _wheelDrawing, int width, int height ){
if (height < _locoHeight || width < _locoWidth)
return;
_pictureWidth = width;
_pictureHeight = height;
EntityTrain = train;
wheelDrawing = _wheelDrawing;
wheelDrawing.setNumWheel(EntityTrain.numWheel);
}
/// <summary> /// <summary>
/// Установка позиции /// Установка позиции
/// </summary> /// </summary>

View File

@ -0,0 +1,62 @@
package laba1Loco;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
public class Form4GenericDopClass extends JFrame {
static int pictureBoxWidth = 980;
static int pictureBoxHeight = 560;
public DrawingTrain _drawingTrain;
private class Canvas extends JComponent{
public Canvas(){
}
public void paintComponent (Graphics g){
if (_drawingTrain == null){
return;
}
super.paintComponents (g) ;
Graphics2D g2d = (Graphics2D)g;
_drawingTrain.SetPosition(50, 50);
_drawingTrain.DrawTransport(g2d);
super.repaint();
}
}
GenericDopClass<EntityTrain, IWheelDrawing> genericDopClass;
public Form4GenericDopClass(){
_drawingTrain = null;
Canvas canv = new Canvas();
setSize (1000, 600);
setLayout(null);
canv.setBounds(0,0,pictureBoxWidth, pictureBoxHeight);
genericDopClass = new GenericDopClass<>(100, 100, pictureBoxWidth, pictureBoxHeight);
genericDopClass.addTrain(new EntityTrain(100, 100, Color.BLUE, 2));
genericDopClass.addTrain(new EntityTrain(100, 100, Color.RED, 3));
genericDopClass.addTrain(new EntityTrain(100, 100, Color.GRAY, 4));
genericDopClass.addTrain(new EntityLoco(100, 100, Color.BLUE, 2, Color.ORANGE, true, true, true));
genericDopClass.addWheel(new WheelDrawingDavidStar());
genericDopClass.addWheel(new WheelDrawingBalls());
JButton creatButton = new JButton("createButton");
creatButton.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent e){
_drawingTrain = genericDopClass.getRDrawingObject();
canv.repaint();
}
}
);
creatButton.setBounds(pictureBoxWidth/2, pictureBoxHeight-20, 120, 20);
add(canv);
add(creatButton);
setVisible(true);
}
}

View File

@ -7,7 +7,7 @@ import javax.swing.Timer;
import java.awt.event.*; import java.awt.event.*;
public class FormTrain{ public class FormTrain{
class Canvas extends JComponent{ private class Canvas extends JComponent{
public DrawingTrain _drawingTrain; public DrawingTrain _drawingTrain;
public Canvas(){ public Canvas(){
} }
@ -208,7 +208,6 @@ public class FormTrain{
right.addActionListener(actioListener); right.addActionListener(actioListener);
w.setSize (1000, 600); w.setSize (1000, 600);
w.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
w.setLayout(null); w.setLayout(null);
canv = new Canvas(); canv = new Canvas();
canv.setBounds(0, 0, pictureBoxWidth, pictureBoxHeight); canv.setBounds(0, 0, pictureBoxWidth, pictureBoxHeight);

View File

@ -12,7 +12,7 @@ import javax.swing.JOptionPane;
import javax.swing.JTextField; import javax.swing.JTextField;
public class FormTrainCollecltion { public class FormTrainCollecltion {
class Canvas extends JComponent{ private class Canvas extends JComponent{
public TrainsGenericCollection<DrawingTrain, DrawningObjectTrain> _trains; public TrainsGenericCollection<DrawingTrain, DrawningObjectTrain> _trains;
public Canvas(){ public Canvas(){
} }
@ -112,6 +112,15 @@ public class FormTrainCollecltion {
} }
); );
JButton toForm4GenericDopClass = new JButton("ToForm4GenericDopClass");
toForm4GenericDopClass.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent e){
Form4GenericDopClass form4GenericDopClass = new Form4GenericDopClass();
}
}
);
w.setSize (1000, 600); w.setSize (1000, 600);
w.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); w.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
w.setLayout(null); w.setLayout(null);
@ -120,11 +129,13 @@ public class FormTrainCollecltion {
TextBoxNumber.setBounds(pictureBoxWidth, 30, 120, 20); TextBoxNumber.setBounds(pictureBoxWidth, 30, 120, 20);
ButtonRemoveTrain.setBounds(pictureBoxWidth, 60, 120, 20); ButtonRemoveTrain.setBounds(pictureBoxWidth, 60, 120, 20);
ButtonRefreshCollection.setBounds(pictureBoxWidth, 90, 120, 20); ButtonRefreshCollection.setBounds(pictureBoxWidth, 90, 120, 20);
toForm4GenericDopClass.setBounds(pictureBoxWidth, 120, 120, 20);
w.add(canv); w.add(canv);
w.add(ButtonAddTrain); w.add(ButtonAddTrain);
w.add(ButtonRemoveTrain); w.add(ButtonRemoveTrain);
w.add(ButtonRefreshCollection); w.add(ButtonRefreshCollection);
w.add(TextBoxNumber); w.add(TextBoxNumber);
w.add(toForm4GenericDopClass);
w.setVisible(true); w.setVisible(true);
} }
} }

View File

@ -0,0 +1,67 @@
package laba1Loco;
import java.util.Random;
public class GenericDopClass<T extends EntityTrain, U extends IWheelDrawing> {
private Object[] Trains;
private Object[] Wheels;
private int maxCountTrains;
private int countTrains;
private int maxCountWheels;
private int countWheels;
private Random random;
/// <summary>
/// Ширина окна
/// </summary>
private int _pictureWidth;
/// <summary>
/// Высота окна
/// </summary>
private int _pictureHeight;
public GenericDopClass(int _maxCountTrains, int _maxCountWheels, int pictureWidth, int pictureHeight){
maxCountTrains = _maxCountTrains;
maxCountWheels = _maxCountWheels;
Trains = new Object[maxCountTrains];
Wheels = new Object[maxCountWheels];
countTrains = 0;
countWheels = 0;
_pictureWidth = pictureWidth;
_pictureHeight = pictureHeight;
random = new Random();
}
public boolean addTrain(T train){
if (train == null)
return false;
if (countTrains > maxCountTrains)
return false;
Trains[countTrains++] = train;
return true;
}
public boolean addWheel(U wheel){
if (wheel == null)
return false;
if (countWheels > maxCountWheels)
return false;
Wheels[countWheels++] = wheel;
return true;
}
public DrawingTrain getRDrawingObject(){
if (countTrains == 0 || countWheels == 0)
return null;
int i = random.nextInt(countTrains);
int j = random.nextInt(countWheels);
DrawingTrain drawingTrain;
if (Trains[i] instanceof EntityLoco){
drawingTrain = new DrawingLoco((EntityLoco)Trains[i], (IWheelDrawing)Wheels[j], _pictureWidth, _pictureHeight);
}
else{
drawingTrain = new DrawingTrain((EntityTrain)Trains[i], (IWheelDrawing)Wheels[j], _pictureWidth, _pictureHeight);
}
return drawingTrain;
}
}