LabWork01: Завершено, возможны мелкие поправки по оформлению

This commit is contained in:
Safgerd 2022-11-05 23:24:05 +04:00
parent ac171b2770
commit a48405450c
4 changed files with 93 additions and 41 deletions

65
DrawningRollers.java Normal file
View File

@ -0,0 +1,65 @@
import java.awt.*;
import java.util.Random;
public class DrawningRollers {
private RollersCount rollersCount;
private Color colorRollers;
public void setRollersCount(int count){
switch (count) {
case 4 -> rollersCount = RollersCount.Four;
case 5 -> rollersCount = RollersCount.Five;
case 6 -> rollersCount = RollersCount.Six;
default -> rollersCount = RollersCount.Four;
}
}
public void Init(int count, Color colorRollers){
setRollersCount(count);
this.colorRollers = colorRollers;
}
public void DrawRollers(Graphics g, float _startPosX, float _startPosY){
Color penColor = Color.BLACK;
Color mainColor = colorRollers==null ? Color.LIGHT_GRAY : colorRollers;
// Крупные катки - всегда
g.setColor(mainColor);
g.fillOval((int)_startPosX + 5, (int)_startPosY + 60, 22, 22);
g.setColor(penColor);
g.drawOval((int)_startPosX + 5, (int)_startPosY + 60, 22, 22);
g.setColor(mainColor);
g.fillOval((int)_startPosX + 83, (int)_startPosY + 60, 22, 22);
g.setColor(penColor);
g.drawOval((int)_startPosX + 83, (int)_startPosY + 60, 22, 22);
// Малые катки - всегда
g.setColor(mainColor);
g.fillOval((int)_startPosX + 43, (int)_startPosY + 58, 6, 6);
g.setColor(penColor);
g.drawOval((int)_startPosX + 43, (int)_startPosY + 58, 6, 6);
g.setColor(mainColor);
g.fillOval((int)_startPosX + 61, (int)_startPosY + 58, 6, 6);
g.setColor(penColor);
g.drawOval((int)_startPosX + 61, (int)_startPosY + 58, 6, 6);
// Средние катки - не всегда
switch (rollersCount){
case Six:
g.setColor(mainColor);
g.fillOval((int)_startPosX + 33, (int)_startPosY + 73, 10, 10);
g.setColor(penColor);
g.drawOval((int)_startPosX + 33, (int)_startPosY + 73, 10, 10);
case Five:
g.setColor(mainColor);
g.fillOval((int)_startPosX + 68, (int)_startPosY + 73, 10, 10);
g.setColor(penColor);
g.drawOval((int)_startPosX + 68, (int)_startPosY + 73, 10, 10);
}
// Центры крупных катков
g.setColor(Color.BLACK);
g.fillOval((int)_startPosX + 13, (int)_startPosY + 68, 6, 6);
g.fillOval((int)_startPosX + 91, (int)_startPosY + 68, 6, 6);
}
}

View File

@ -13,11 +13,15 @@ public class DrawningTracktor {
private final int _tracktorWidth = 110; // Ширина отрисовки трактора private final int _tracktorWidth = 110; // Ширина отрисовки трактора
private final int _tracktorHeight = 87; // Высота отрисовки трактора private final int _tracktorHeight = 87; // Высота отрисовки трактора
private DrawningRollers drawningRollers;
// Инициализация свойств // Инициализация свойств
public void Init(int speed, float weight, Color bodyColor) public void Init(int speed, float weight, Color bodyColor, int countRollers)
{ {
Tracktor = new EntityTracktor(); Tracktor = new EntityTracktor();
Tracktor.Init(speed, weight, bodyColor); Tracktor.Init(speed, weight, bodyColor);
drawningRollers = new DrawningRollers();
drawningRollers.Init(countRollers, bodyColor);
} }
// Установка позиции Трактора // Установка позиции Трактора
@ -129,44 +133,7 @@ public class DrawningTracktor {
g.drawLine((int)_startPosX + 1, (int)_startPosY + 65, (int)_startPosX + 1, (int)_startPosY + 75); g.drawLine((int)_startPosX + 1, (int)_startPosY + 65, (int)_startPosX + 1, (int)_startPosY + 75);
g.drawLine((int)_startPosX + 110, (int)_startPosY + 65, (int)_startPosX + 110, (int)_startPosY + 75); g.drawLine((int)_startPosX + 110, (int)_startPosY + 65, (int)_startPosX + 110, (int)_startPosY + 75);
// Крупные катки drawningRollers.DrawRollers(g,_startPosX, _startPosY);
g.setColor(Color.LIGHT_GRAY);
g.fillOval((int)_startPosX + 5, (int)_startPosY + 60, 22, 22);
g.setColor(penColor);
g.drawOval((int)_startPosX + 5, (int)_startPosY + 60, 22, 22);
g.setColor(Color.LIGHT_GRAY);
g.fillOval((int)_startPosX + 83, (int)_startPosY + 60, 22, 22);
g.setColor(penColor);
g.drawOval((int)_startPosX + 83, (int)_startPosY + 60, 22, 22);
// Средние катки
g.setColor(Color.LIGHT_GRAY);
g.fillOval((int)_startPosX + 33, (int)_startPosY + 73, 10, 10);
g.setColor(penColor);
g.drawOval((int)_startPosX + 33, (int)_startPosY + 73, 10, 10);
g.setColor(Color.LIGHT_GRAY);
g.fillOval((int)_startPosX + 50, (int)_startPosY + 73, 10, 10);
g.setColor(penColor);
g.drawOval((int)_startPosX + 50, (int)_startPosY + 73, 10, 10);
g.setColor(Color.LIGHT_GRAY);
g.fillOval((int)_startPosX + 68, (int)_startPosY + 73, 10, 10);
g.setColor(penColor);
g.drawOval((int)_startPosX + 68, (int)_startPosY + 73, 10, 10);
// Малые катки
g.setColor(Color.LIGHT_GRAY);
g.fillOval((int)_startPosX + 43, (int)_startPosY + 58, 6, 6);
g.setColor(penColor);
g.drawOval((int)_startPosX + 43, (int)_startPosY + 58, 6, 6);
g.setColor(Color.LIGHT_GRAY);
g.fillOval((int)_startPosX + 61, (int)_startPosY + 58, 6, 6);
g.setColor(penColor);
g.drawOval((int)_startPosX + 61, (int)_startPosY + 58, 6, 6);
// Центры крупных катков
g.setColor(Color.BLACK);
g.fillOval((int)_startPosX + 13, (int)_startPosY + 68, 6, 6);
g.fillOval((int)_startPosX + 91, (int)_startPosY + 68, 6, 6);
} }
// Смена границ формы отрисовки // Смена границ формы отрисовки

View File

@ -1,5 +1,9 @@
import javax.swing.*; import javax.swing.*;
import java.awt.*; import java.awt.*;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.Random; import java.util.Random;
public class FormTracktor extends JFrame { public class FormTracktor extends JFrame {
@ -28,7 +32,8 @@ public class FormTracktor extends JFrame {
_tracktor.Init( _tracktor.Init(
rnd.nextInt(100, 300), rnd.nextInt(100, 300),
rnd.nextInt(1000, 2000), rnd.nextInt(1000, 2000),
new Color(rnd.nextInt(0, 256), rnd.nextInt(0, 256), rnd.nextInt(0, 256)) new Color(rnd.nextInt(0, 256), rnd.nextInt(0, 256), rnd.nextInt(0, 256)),
rnd.nextInt(3,8)
); );
_tracktor.SetPosition( _tracktor.SetPosition(
rnd.nextInt(10, 100), rnd.nextInt(10, 100),
@ -38,7 +43,6 @@ public class FormTracktor extends JFrame {
speedLabel.setText("Скорость: " + _tracktor.getTracktor().getSpeed()); speedLabel.setText("Скорость: " + _tracktor.getTracktor().getSpeed());
weightLabel.setText("Вес: " + _tracktor.getTracktor().getWeight()); weightLabel.setText("Вес: " + _tracktor.getTracktor().getWeight());
colorLabel.setText("Цвет: " + String.format("%h",_tracktor.getTracktor().getBodyColor())); colorLabel.setText("Цвет: " + String.format("%h",_tracktor.getTracktor().getBodyColor()));
repaint(); repaint();
}); });
@ -69,6 +73,17 @@ public class FormTracktor extends JFrame {
repaint(); repaint();
} }
}); });
pictureBox.addComponentListener(new ComponentAdapter() {
@Override
public void componentResized(ComponentEvent e) {
super.componentResized(e);
if (_tracktor != null){
_tracktor.ChangeBorders(e.getComponent().getWidth(), e.getComponent().getHeight());
repaint();
}
}
});
} }
@Override @Override

5
RollersCount.java Normal file
View File

@ -0,0 +1,5 @@
public enum RollersCount {
Four,
Five,
Six
}