From 698646124819a6b533d4a0fa323170171ecd355e Mon Sep 17 00:00:00 2001 From: asoc1al Date: Sat, 7 Oct 2023 10:46:14 +0400 Subject: [PATCH] All done --- DumpTruck/DumpTruck/Direction.cs | 2 +- DumpTruck/DumpTruck/DrawingTruck.cs | 70 +++++++++++++++++------------ DumpTruck/DumpTruck/FormTruck.cs | 28 ++++++++++-- 3 files changed, 68 insertions(+), 32 deletions(-) diff --git a/DumpTruck/DumpTruck/Direction.cs b/DumpTruck/DumpTruck/Direction.cs index fbff3f8..8cd74cb 100644 --- a/DumpTruck/DumpTruck/Direction.cs +++ b/DumpTruck/DumpTruck/Direction.cs @@ -6,7 +6,7 @@ using System.Threading.Tasks; namespace DumpTruck { - internal enum Direction + internal enum DirectionType { Up = 1, Down = 2, diff --git a/DumpTruck/DumpTruck/DrawingTruck.cs b/DumpTruck/DumpTruck/DrawingTruck.cs index 7dac9ad..566a34e 100644 --- a/DumpTruck/DumpTruck/DrawingTruck.cs +++ b/DumpTruck/DumpTruck/DrawingTruck.cs @@ -9,58 +9,65 @@ namespace DumpTruck { internal class DrawingTruck { - public EntityTruck Truck { get; private set; } + public EntityTruck? EntityTruck { get; private set; } private float _startPosX; private float _startPosY; - private int? _pictureWidth = null; - private int? _pictureHeight = null; + private int? _pictureWidth; + private int? _pictureHeight; protected readonly int _truckWidth = 110; protected readonly int _truckHeight = 60; - public void Init(int speed, float weight, Color bodyColor) + public bool Init(int speed, float weight, Color bodyColor, int width, int height) { - Truck = new EntityTruck(); - Truck.Init(speed, weight, bodyColor); + _pictureWidth = width; + _pictureHeight = height; + EntityTruck = new EntityTruck(); + EntityTruck.Init(speed, weight, bodyColor); + return true; } public void SetPosition(int x, int y) { _startPosX = x; _startPosY = y; } - public void MoveTransport(Direction direction) + public void MoveTransport(DirectionType direction) { - if (!_pictureHeight.HasValue || !_pictureWidth.HasValue) + if (EntityTruck == null) + { return; } + switch (direction) { - case Direction.Left: - if (_startPosX - Truck.Step > 0) + case DirectionType.Left: + if (_startPosX - EntityTruck.Step > 0) { - _startPosX -= Truck.Step; + _startPosX -= (int)EntityTruck.Step; } break; - case Direction.Right: - if (_startPosX + _truckWidth + Truck.Step < _pictureWidth) + //вверх + case DirectionType.Up: + if (_startPosY - EntityTruck.Step > 0) { - _startPosX += Truck.Step; - } - - break; - case Direction.Up: - if (_startPosY - Truck.Step > 0) - { - _startPosY -= Truck.Step; + _startPosY -= (int)EntityTruck.Step; } break; - case Direction.Down: - if (_startPosY + _truckHeight + Truck.Step < _pictureHeight) + //вправо + case DirectionType.Right: + if (_startPosX + EntityTruck.Step + _truckWidth < _pictureWidth) { - _startPosY += Truck.Step; + _startPosX += (int)EntityTruck.Step; + } + break; + case DirectionType.Down: + if (_startPosY + EntityTruck.Step + _truckHeight < _pictureHeight) + { + _startPosY += (int)EntityTruck.Step; } break; - } + + } public void DrawTransport(Graphics g) { @@ -70,11 +77,11 @@ namespace DumpTruck } - Brush br = new SolidBrush(Truck?.BodyColor ?? Color.Black); + Brush br = new SolidBrush(EntityTruck?.BodyColor ?? Color.Black); g.FillRectangle(br, _startPosX + 80, _startPosY, 20, 30); - Brush brBrown = new SolidBrush(Color.FromArgb(200, 150, 40)); - g.FillRectangle(brBrown, _startPosX, _startPosY + 30, 100, 5); + Brush brBodyRandom = new SolidBrush(Color.FromArgb(0, 255, 128)); + g.FillRectangle(brBodyRandom, _startPosX, _startPosY + 30, 100, 5); Brush brBlack = new SolidBrush(Color.Black); g.FillEllipse(brBlack, _startPosX, _startPosY + 35, 20, 20); @@ -93,6 +100,13 @@ namespace DumpTruck g.DrawEllipse(pen, _startPosX, _startPosY + 35, 20, 20); g.DrawEllipse(pen, _startPosX + 22, _startPosY + 35, 20, 20); g.DrawEllipse(pen, _startPosX + 80, _startPosY + 35, 20, 20); + + Brush brBody = new SolidBrush(Color.FromArgb(255, 0, 0)); + g.FillRectangle(brBody, _startPosX + 0, _startPosY, 70, 30); + Pen pen1 = new Pen(Color.Black); + g.DrawRectangle(pen1, _startPosX + 0, _startPosY, 70, 30); + + } } } \ No newline at end of file diff --git a/DumpTruck/DumpTruck/FormTruck.cs b/DumpTruck/DumpTruck/FormTruck.cs index f8724eb..a522920 100644 --- a/DumpTruck/DumpTruck/FormTruck.cs +++ b/DumpTruck/DumpTruck/FormTruck.cs @@ -15,8 +15,10 @@ namespace DumpTruck private DrawingTruck? _drawningTruck; + private void Draw() { + if (_drawningTruck == null) { return; @@ -37,14 +39,34 @@ namespace DumpTruck { Random random = new(); _drawningTruck = new DrawingTruck(); - _drawningTruck.Init(random.Next(100, 300), random.Next(1000, 3000), Color.FromArgb(random.Next(0, 256))); - _drawningTruck.SetPosition(random.Next(1, 100), random.Next(1, 100)); + _drawningTruck.Init(random.Next(100, 300), random.Next(1000, 3000), Color.FromArgb(random.Next(0, 256)), pictureBoxTruck.Width, pictureBoxTruck.Height); + _drawningTruck.SetPosition(random.Next(1, pictureBoxTruck.Width), random.Next(1, pictureBoxTruck.Height)); Draw(); } private void btnMove_Click(object sender, EventArgs e) { - + if (_drawningTruck == null) + { + return; + } + string name = ((Button)sender)?.Name ?? string.Empty; + switch (name) + { + case "btnUp": + _drawningTruck.MoveTransport(DirectionType.Up); + break; + case "btnDown": + _drawningTruck.MoveTransport(DirectionType.Down); + break; + case "btnLeft": + _drawningTruck.MoveTransport(DirectionType.Left); + break; + case "btnRight": + _drawningTruck.MoveTransport(DirectionType.Right); + break; + } + Draw(); } } } \ No newline at end of file