LabWork02: Выполнено, требуется редактирование кода
This commit is contained in:
parent
1095fca9e8
commit
4805ad09d0
91
DrawningCrossRollers.java
Normal file
91
DrawningCrossRollers.java
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
import java.awt.*;
|
||||||
|
|
||||||
|
public class DrawningCrossRollers implements IDrawningRollers{
|
||||||
|
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 DrawningCrossRollers(int count, Color colorRollers){
|
||||||
|
setRollersCount(count);
|
||||||
|
this.colorRollers = colorRollers;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void DrawRollers(Graphics2D 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.fillRect((int)_startPosX + 5 + 9, (int)_startPosY + 60 + 5, 5, 14);
|
||||||
|
// горизонтальное перекрестие
|
||||||
|
g.fillRect((int)_startPosX + 5 + 5, (int)_startPosY + 60 + 9, 13, 5);
|
||||||
|
|
||||||
|
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.fillRect((int)_startPosX + 83 + 9, (int)_startPosY + 60 + 5, 5, 14);
|
||||||
|
// горизонтальное перекрестие
|
||||||
|
g.fillRect((int)_startPosX + 83 + 5, (int)_startPosY + 60 + 9, 13, 5);
|
||||||
|
|
||||||
|
|
||||||
|
// Малые катки - всегда
|
||||||
|
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.fillRect((int)_startPosX + 43 + 3, (int)_startPosY + 58 + 2, 1, 3);
|
||||||
|
// горизонтальное перекрестие
|
||||||
|
g.fillRect((int)_startPosX + 43 + 2, (int)_startPosY + 58 + 3, 3, 1);
|
||||||
|
|
||||||
|
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);
|
||||||
|
// вертикальное перекрестие
|
||||||
|
g.fillRect((int)_startPosX + 61 + 3, (int)_startPosY + 58 + 2, 1, 3);
|
||||||
|
// горизонтальное перекрестие
|
||||||
|
g.fillRect((int)_startPosX + 61 + 2, (int)_startPosY + 58 + 3, 3, 1);
|
||||||
|
|
||||||
|
// Средние катки - не всегда
|
||||||
|
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);
|
||||||
|
// вертикальное перекрестие
|
||||||
|
g.fillRect((int)_startPosX + 33 + 4, (int)_startPosY + 73 + 2, 2, 6);
|
||||||
|
// горизонтальное перекрестие
|
||||||
|
g.fillRect((int)_startPosX + 33 + 2, (int)_startPosY + 73 + 4, 6, 2);
|
||||||
|
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.fillRect((int)_startPosX + 68 + 4, (int)_startPosY + 73 + 2, 2, 6);
|
||||||
|
// горизонтальное перекрестие
|
||||||
|
g.fillRect((int)_startPosX + 68 + 2, (int)_startPosY + 73 + 4, 6, 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Центры крупных катков
|
||||||
|
g.setColor(Color.BLACK);
|
||||||
|
g.fillOval((int)_startPosX + 13, (int)_startPosY + 68, 6, 6);
|
||||||
|
g.fillOval((int)_startPosX + 91, (int)_startPosY + 68, 6, 6);
|
||||||
|
}
|
||||||
|
}
|
@ -1,7 +1,6 @@
|
|||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
import java.util.Random;
|
|
||||||
|
|
||||||
public class DrawningRollers {
|
public class DrawningRollers implements IDrawningRollers {
|
||||||
private RollersCount rollersCount;
|
private RollersCount rollersCount;
|
||||||
private Color colorRollers;
|
private Color colorRollers;
|
||||||
|
|
||||||
|
128
DrawningSquaredRollers.java
Normal file
128
DrawningSquaredRollers.java
Normal file
@ -0,0 +1,128 @@
|
|||||||
|
import java.awt.*;
|
||||||
|
|
||||||
|
public class DrawningSquaredRollers implements IDrawningRollers {
|
||||||
|
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 DrawningSquaredRollers(int count, Color colorRollers){
|
||||||
|
setRollersCount(count);
|
||||||
|
this.colorRollers = colorRollers;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void DrawRollers(Graphics2D 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);
|
||||||
|
|
||||||
|
// Узор для больших катков
|
||||||
|
//1
|
||||||
|
Polygon bigRomb = new Polygon(
|
||||||
|
new int[]{(int)_startPosX + 5, (int)_startPosX + 5 + 11, (int)_startPosX + 5 + 22, (int)_startPosX + 5 + 11},
|
||||||
|
new int[]{(int)_startPosY + 60 + 11, (int)_startPosY + 60, (int)_startPosY + 60 + 11, (int)_startPosY + 60 + 22},
|
||||||
|
4
|
||||||
|
);
|
||||||
|
Polygon bigCube = new Polygon(
|
||||||
|
new int[]{(int)_startPosX + 5 + 5, (int)_startPosX + 5 + 22 - 5, (int)_startPosX + 5 + 22 - 5, (int)_startPosX + 5 + 5},
|
||||||
|
new int[]{(int)_startPosY + 60 + 5, (int)_startPosY + 60 + 5, (int)_startPosY + 60 + 22 - 5, (int)_startPosY + 60 + 22 - 5},
|
||||||
|
4
|
||||||
|
);
|
||||||
|
g.drawPolygon(bigRomb);
|
||||||
|
g.drawPolygon(bigCube);
|
||||||
|
// Сдвиг
|
||||||
|
bigRomb.translate(78,0);
|
||||||
|
bigCube.translate(78,0);
|
||||||
|
//2
|
||||||
|
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.drawPolygon(bigRomb);
|
||||||
|
g.drawPolygon(bigCube);
|
||||||
|
|
||||||
|
// Малые катки - всегда
|
||||||
|
//
|
||||||
|
Polygon smallRomb = new Polygon(
|
||||||
|
new int[]{(int)_startPosX + 43, (int)_startPosX + 43 + 3, (int)_startPosX + 43 + 6, (int)_startPosX + 43 + 3},
|
||||||
|
new int[]{(int)_startPosY + 58 + 3, (int)_startPosY + 58, (int)_startPosY + 58 + 3, (int)_startPosY + 58 + 6},
|
||||||
|
4
|
||||||
|
);
|
||||||
|
Polygon smallCube = new Polygon(
|
||||||
|
new int[]{(int)_startPosX + 43 + 1, (int)_startPosX + 43 + 6 - 1, (int)_startPosX + 43 + 6 - 1, (int)_startPosX + 43 + 1},
|
||||||
|
new int[]{(int)_startPosY + 58 + 1, (int)_startPosY + 58 + 6 - 1, (int)_startPosY + 58 + 6 - 1, (int)_startPosY + 58 + 1},
|
||||||
|
4
|
||||||
|
);
|
||||||
|
// 1
|
||||||
|
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.drawPolygon(smallRomb);
|
||||||
|
g.drawPolygon(smallCube);
|
||||||
|
// Сдвиг
|
||||||
|
smallRomb.translate(18,0);
|
||||||
|
smallCube.translate(18,0);
|
||||||
|
// 2
|
||||||
|
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);
|
||||||
|
g.drawPolygon(smallRomb);
|
||||||
|
g.drawPolygon(smallCube);
|
||||||
|
|
||||||
|
|
||||||
|
Polygon middleRomb = new Polygon(
|
||||||
|
new int[]{(int)_startPosX + 33, (int)_startPosX + 33 + 5, (int)_startPosX + 33 + 10, (int)_startPosX + 33 + 5},
|
||||||
|
new int[]{(int)_startPosY + 73 + 5, (int)_startPosY + 73, (int)_startPosY + 73 + 5, (int)_startPosY + 73 + 10},
|
||||||
|
4
|
||||||
|
);
|
||||||
|
Polygon middleCube = new Polygon(
|
||||||
|
new int[]{(int)_startPosX + 33 + 2, (int)_startPosX + 33 + 8, (int)_startPosX + 33 + 8, (int)_startPosX + 33 + 2},
|
||||||
|
new int[]{(int)_startPosY + 73 + 2, (int)_startPosY + 73 + 2, (int)_startPosY + 73 + 8, (int)_startPosY + 73 + 8},
|
||||||
|
4
|
||||||
|
);
|
||||||
|
// Средние катки - не всегда
|
||||||
|
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);
|
||||||
|
|
||||||
|
g.drawPolygon(middleRomb);
|
||||||
|
g.drawPolygon(middleCube);
|
||||||
|
|
||||||
|
case Five:
|
||||||
|
// Сдвиг
|
||||||
|
middleRomb.translate(35,0);
|
||||||
|
middleCube.translate(35,0);
|
||||||
|
|
||||||
|
|
||||||
|
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.drawPolygon(middleRomb);
|
||||||
|
g.drawPolygon(middleCube);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Центры крупных катков
|
||||||
|
g.setColor(Color.BLACK);
|
||||||
|
g.fillOval((int)_startPosX + 13, (int)_startPosY + 68, 6, 6);
|
||||||
|
g.fillOval((int)_startPosX + 91, (int)_startPosY + 68, 6, 6);
|
||||||
|
}
|
||||||
|
}
|
@ -13,13 +13,13 @@ public class DrawningTracktor {
|
|||||||
protected int _tracktorWidth = 110; // Ширина отрисовки трактора
|
protected int _tracktorWidth = 110; // Ширина отрисовки трактора
|
||||||
protected int _tracktorHeight = 87; // Высота отрисовки трактора
|
protected int _tracktorHeight = 87; // Высота отрисовки трактора
|
||||||
|
|
||||||
private DrawningRollers drawningRollers;
|
private IDrawningRollers drawningRollers;
|
||||||
|
|
||||||
// Инициализация свойств
|
// Инициализация свойств
|
||||||
public DrawningTracktor(int speed, float weight, Color bodyColor, int countRollers)
|
public DrawningTracktor(int speed, float weight, Color bodyColor, int countRollers)
|
||||||
{
|
{
|
||||||
Tracktor = new EntityTracktor(speed, weight, bodyColor);
|
Tracktor = new EntityTracktor(speed, weight, bodyColor);
|
||||||
drawningRollers = new DrawningRollers(countRollers, bodyColor);
|
drawningRollers = RollersType.random(countRollers, bodyColor);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected DrawningTracktor(int speed, float weight, Color bodyColor, int countRollers, int tracktorWidth, int tracktorHeight){
|
protected DrawningTracktor(int speed, float weight, Color bodyColor, int countRollers, int tracktorWidth, int tracktorHeight){
|
||||||
@ -138,7 +138,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);
|
drawningRollers.DrawRollers(g, (int) _startPosX, (int) _startPosY);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Смена границ формы отрисовки
|
// Смена границ формы отрисовки
|
||||||
|
6
IDrawningRollers.java
Normal file
6
IDrawningRollers.java
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
import java.awt.*;
|
||||||
|
|
||||||
|
public interface IDrawningRollers {
|
||||||
|
void setRollersCount(int count);
|
||||||
|
void DrawRollers(Graphics2D g, float _startPosX, float _startPosY);
|
||||||
|
}
|
17
RollersType.java
Normal file
17
RollersType.java
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
import java.awt.*;
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
public enum RollersType {
|
||||||
|
Standard,
|
||||||
|
Squared,
|
||||||
|
Cross;
|
||||||
|
|
||||||
|
public static IDrawningRollers random(int rollersCount, Color bodyColor) {
|
||||||
|
return switch (new Random().nextInt(RollersType.values().length)) {
|
||||||
|
case 0 -> new DrawningRollers(rollersCount, bodyColor);
|
||||||
|
case 1 -> new DrawningSquaredRollers(rollersCount, bodyColor);
|
||||||
|
case 2 -> new DrawningCrossRollers(rollersCount, bodyColor);
|
||||||
|
default -> null;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user