import java.awt.*; public class DrawingRoadTrain { private WheelDrawing wheelDrawing; public EntityRoadTrain EntityRoadTrain; private int _pictureWidth; private int _pictureHeight; private int _startPosX; private int _startPosY; private int _roadTrainWidth = 200; private int _roadTrainHeight = 100; public boolean Init(int speed, double weight, Color bodyColor, Color additionalColor, boolean wheel, boolean door, boolean light, int numWheel, int width, int height) { _pictureWidth = width; _pictureHeight = height; if (_pictureHeight < _roadTrainHeight || _pictureWidth < _roadTrainWidth) return false; EntityRoadTrain = new EntityRoadTrain(); EntityRoadTrain.Init(speed, weight, bodyColor, additionalColor,wheel, door, light, numWheel); wheelDrawing = new WheelDrawing(); wheelDrawing.setNumWheel(numWheel); return true; } public void SetPosition(int x, int y) { _startPosX = Math.min(x, _pictureWidth-_roadTrainWidth); _startPosY = Math.min(y, _pictureHeight- _roadTrainHeight); } public void MoveTransport(Direction direction) { if (EntityRoadTrain == null){ return; } switch (direction) { case Left: if (_startPosX - EntityRoadTrain.Step > 0) { _startPosX -= (int) EntityRoadTrain.Step; } break; case Up: if (_startPosY - EntityRoadTrain.Step > 0) { _startPosY -= (int) EntityRoadTrain.Step; } break; case Right: if (_startPosX + _roadTrainWidth + EntityRoadTrain.Step < _pictureWidth) { _startPosX += (int) EntityRoadTrain.Step; } break; case Down: if (_startPosY + _roadTrainHeight + EntityRoadTrain.Step < _pictureHeight) { _startPosY += (int) EntityRoadTrain.Step; } break; } } public void DrawTransport(Graphics2D g) { if (EntityRoadTrain == null) { return; } // машина g.drawRect(_startPosX, _startPosY + 50, 160, 20); // кузов g.drawRect(_startPosX + 120, _startPosY + 10, 40, 40); // кабина g.drawRect(_startPosX + 10, _startPosY, 90, 50); // бак с водой g.drawRect(_startPosX + 130, _startPosY + 20, 30, 20); // окно g.drawLine(_startPosX + 160, _startPosY + 70, _startPosX + 180, _startPosY + 80); // держатель для щетки g.drawRect(_startPosX + 170, _startPosY + 80, 40, 10); // щетка // обвесы g.setColor(EntityRoadTrain.AdditionalColor); wheelDrawing.Draw(_startPosX, _startPosY, EntityRoadTrain.AdditionalColor, g); if (EntityRoadTrain.Door) { g.fillRect(_startPosX + 40, _startPosY + 20, 20, 30); // дверь } if (EntityRoadTrain.Light) { g.fillRect(_startPosX + 135, _startPosY, 10, 10); // мигалка } } }