From 1675790901e981c505f80be213d9bc64428832f7 Mon Sep 17 00:00:00 2001 From: sofiaivv Date: Tue, 31 Oct 2023 02:42:49 +0400 Subject: [PATCH] done --- MotorBoat/MotorBoat/DrawningMotorBoat.cs | 51 +++++++++---- MotorBoat/MotorBoat/EntityMotorBoat.cs | 26 +++++-- MotorBoat/MotorBoat/FormMotorBoat.Designer.cs | 31 ++++---- MotorBoat/MotorBoat/FormMotorBoat.cs | 71 ++++++++++++++++++ MotorBoat/MotorBoat/down.png | Bin 0 -> 4284 bytes MotorBoat/MotorBoat/left.png | Bin 0 -> 4363 bytes MotorBoat/MotorBoat/right.png | Bin 0 -> 1986 bytes MotorBoat/MotorBoat/up.png | Bin 0 -> 4368 bytes 8 files changed, 146 insertions(+), 33 deletions(-) create mode 100644 MotorBoat/MotorBoat/down.png create mode 100644 MotorBoat/MotorBoat/left.png create mode 100644 MotorBoat/MotorBoat/right.png create mode 100644 MotorBoat/MotorBoat/up.png diff --git a/MotorBoat/MotorBoat/DrawningMotorBoat.cs b/MotorBoat/MotorBoat/DrawningMotorBoat.cs index 0f85560..71dae55 100644 --- a/MotorBoat/MotorBoat/DrawningMotorBoat.cs +++ b/MotorBoat/MotorBoat/DrawningMotorBoat.cs @@ -37,12 +37,12 @@ namespace MotorBoat private int _startPosY = 0; /// - /// Ширина прорисовки автомобиля + /// Ширина прорисовки катера /// - private readonly int _boatWight = 120; + private readonly int _boatWight = 165; /// - /// Высота прорисовки автомобиля + /// Высота прорисовки катера /// private readonly int _boatHeight = 80; @@ -53,17 +53,19 @@ namespace MotorBoat /// Вес /// Цвет корпуса /// Дополнительный цвет - /// Ширина картинки + /// Признак наличия двигателя в корме + /// Признак наличия защитного стекла впереди + /// Ширина картинки /// Выслота картинки /// true - объект создан, false - проверка не пройдена, нельзя создать объект в этих размерах - public bool Init(int speed, double weight, Color bodyColor, Color AdditionalColor, int width, int height) + public bool Init(int speed, double weight, Color bodyColor, Color additionalColor, bool engine, bool glass, int width, int height) { if (width <= _boatWight || height <= _boatHeight) return false; _pictureWight = width; _pictureHeight = height; EntityMotorBoat = new EntityMotorBoat(); - EntityMotorBoat.Init(speed, weight, bodyColor, AdditionalColor); + EntityMotorBoat.Init(speed, weight, bodyColor, additionalColor, engine, glass); return true; } @@ -132,7 +134,7 @@ namespace MotorBoat //вниз case DirectionType.Down: - if (_startPosY + _pictureHeight + EntityMotorBoat.Step < _pictureHeight) + if (_startPosY + _boatHeight + EntityMotorBoat.Step < _pictureHeight) { _startPosY += (int)EntityMotorBoat.Step; } @@ -150,17 +152,38 @@ namespace MotorBoat { return; } - Pen pen = new(Color.Black); + Pen pen = new(Color.Black, 1); + + Brush mainBrush = new SolidBrush(EntityMotorBoat.BodyColor); Brush additionalBrush = new SolidBrush(EntityMotorBoat.AdditionalColor); - Point[] points = { new Point(_startPosX + _boatWight - 40, _startPosY + 10), new Point(_startPosX + _boatWight, _startPosY + 40), new Point(_startPosX + _boatWight - 40, _startPosY + 70) }; + // корпус + Point[] hull = new Point[] + { + new Point(_startPosX + 5, _startPosY + 0), + new Point(_startPosX + 120, _startPosY + 0), + new Point(_startPosX + 160, _startPosY + 35), + new Point(_startPosX + 120, _startPosY + 70), + new Point(_startPosX + 5, _startPosY + 70), + }; + g.FillPolygon(mainBrush, hull); + g.DrawPolygon(pen, hull); - g.DrawRectangle(pen, _startPosX, _startPosY, _boatWight - 20, 10); - g.DrawRectangle(pen, _startPosX + 10, _startPosY + 10, _boatWight - 50, 60); - g.DrawEllipse(pen, _startPosX + 15, _startPosY + 25, 60, 30); // палуба - g.DrawPolygon(pen, points); - + // стекло впереди + Brush glassBrush = new SolidBrush(Color.LightBlue); + g.FillEllipse(glassBrush, _startPosX + 20, _startPosY + 15, 100, 40); + g.DrawEllipse(pen, _startPosX + 20, _startPosY + 15, 100, 40); + // осн часть + Brush blockBrush = new SolidBrush(Color.Olive); + g.FillRectangle(blockBrush, _startPosX + 20, _startPosY + 15, 80, 40); + g.DrawRectangle(pen, _startPosX + 20, _startPosY + 15, 80, 40); + + // двигатель + Brush engineBrush = new + SolidBrush(Color.Olive); + g.FillRectangle(engineBrush, _startPosX + 0, _startPosY + 10, 5, 50); + g.DrawRectangle(pen, _startPosX + 0, _startPosY + 10, 5, 50); } } } diff --git a/MotorBoat/MotorBoat/EntityMotorBoat.cs b/MotorBoat/MotorBoat/EntityMotorBoat.cs index 3687804..05ce1ab 100644 --- a/MotorBoat/MotorBoat/EntityMotorBoat.cs +++ b/MotorBoat/MotorBoat/EntityMotorBoat.cs @@ -6,27 +6,37 @@ using System.Threading.Tasks; namespace MotorBoat { - internal class EntityMotorBoat + public class EntityMotorBoat { /// /// Скорость /// - public int Speed { get; set; } + public int Speed { get; private set; } /// /// Вес /// - public double Weight { get; set; } + public double Weight { get; private set; } /// /// Основной цвет /// - public Color BodyColor { get; set; } + public Color BodyColor { get; private set; } /// /// Дополнительный цвет /// - public Color AdditionalColor { get; set; } + public Color AdditionalColor { get; private set; } + + /// + /// Признак (опция) наличия двигателя в корме + /// + public bool Engine { get; private set; } + + /// + /// Признак (опция) наличия защитного стекла спереди + /// + public bool Glass { get; private set; } /// /// Шаг перемещения моторной лодки @@ -40,13 +50,17 @@ namespace MotorBoat /// Вес катера /// Основной цвет /// Дополнительный цвет + /// Признак наличия двигателя в корме + /// Признак наличия защитного стекла впереди - public void Init(int speed, double weight, Color bodyColor, Color additionalColor) + public void Init(int speed, double weight, Color bodyColor, Color additionalColor, bool engine, bool glass) { Speed = speed; Weight = weight; BodyColor = bodyColor; AdditionalColor = additionalColor; + Engine = engine; + Glass = glass; } } } diff --git a/MotorBoat/MotorBoat/FormMotorBoat.Designer.cs b/MotorBoat/MotorBoat/FormMotorBoat.Designer.cs index 7305c2b..4cccdbb 100644 --- a/MotorBoat/MotorBoat/FormMotorBoat.Designer.cs +++ b/MotorBoat/MotorBoat/FormMotorBoat.Designer.cs @@ -28,24 +28,24 @@ /// private void InitializeComponent() { - pictureBox1 = new PictureBox(); + pictureBoxMotorBoat = new PictureBox(); buttonCreate = new Button(); buttonLeft = new Button(); buttonRight = new Button(); buttonUp = new Button(); buttonDown = new Button(); - ((System.ComponentModel.ISupportInitialize)pictureBox1).BeginInit(); + ((System.ComponentModel.ISupportInitialize)pictureBoxMotorBoat).BeginInit(); SuspendLayout(); // - // pictureBox1 + // pictureBoxMotorBoat // - pictureBox1.Dock = DockStyle.Fill; - pictureBox1.Location = new Point(0, 0); - pictureBox1.Name = "pictureBox1"; - pictureBox1.Size = new Size(884, 461); - pictureBox1.SizeMode = PictureBoxSizeMode.AutoSize; - pictureBox1.TabIndex = 0; - pictureBox1.TabStop = false; + pictureBoxMotorBoat.Dock = DockStyle.Fill; + pictureBoxMotorBoat.Location = new Point(0, 0); + pictureBoxMotorBoat.Name = "pictureBoxMotorBoat"; + pictureBoxMotorBoat.Size = new Size(884, 461); + pictureBoxMotorBoat.SizeMode = PictureBoxSizeMode.AutoSize; + pictureBoxMotorBoat.TabIndex = 0; + pictureBoxMotorBoat.TabStop = false; // // buttonCreate // @@ -56,6 +56,7 @@ buttonCreate.TabIndex = 1; buttonCreate.Text = "Создать"; buttonCreate.UseVisualStyleBackColor = true; + buttonCreate.Click += ButtonCreate_Click; // // buttonLeft // @@ -67,6 +68,7 @@ buttonLeft.Size = new Size(30, 30); buttonLeft.TabIndex = 2; buttonLeft.UseVisualStyleBackColor = true; + buttonLeft.Click += ButtonMove_Click; // // buttonRight // @@ -78,6 +80,7 @@ buttonRight.Size = new Size(30, 30); buttonRight.TabIndex = 3; buttonRight.UseVisualStyleBackColor = true; + buttonRight.Click += ButtonMove_Click; // // buttonUp // @@ -89,6 +92,7 @@ buttonUp.Size = new Size(30, 30); buttonUp.TabIndex = 4; buttonUp.UseVisualStyleBackColor = true; + buttonUp.Click += ButtonMove_Click; // // buttonDown // @@ -100,6 +104,7 @@ buttonDown.Size = new Size(30, 30); buttonDown.TabIndex = 5; buttonDown.UseVisualStyleBackColor = true; + buttonDown.Click += ButtonMove_Click; // // FormMotorBoat // @@ -111,18 +116,18 @@ Controls.Add(buttonRight); Controls.Add(buttonLeft); Controls.Add(buttonCreate); - Controls.Add(pictureBox1); + Controls.Add(pictureBoxMotorBoat); Name = "FormMotorBoat"; StartPosition = FormStartPosition.CenterScreen; Text = "FormMotorBoat"; - ((System.ComponentModel.ISupportInitialize)pictureBox1).EndInit(); + ((System.ComponentModel.ISupportInitialize)pictureBoxMotorBoat).EndInit(); ResumeLayout(false); PerformLayout(); } #endregion - private PictureBox pictureBox1; + private PictureBox pictureBoxMotorBoat; private Button buttonCreate; private Button buttonLeft; private Button buttonRight; diff --git a/MotorBoat/MotorBoat/FormMotorBoat.cs b/MotorBoat/MotorBoat/FormMotorBoat.cs index 1611cc7..ddd8d4d 100644 --- a/MotorBoat/MotorBoat/FormMotorBoat.cs +++ b/MotorBoat/MotorBoat/FormMotorBoat.cs @@ -2,9 +2,80 @@ namespace MotorBoat { public partial class FormMotorBoat : Form { + /// + /// - + /// + private DrawningMotorboat? _drawningMotorboat; + + /// + /// + /// public FormMotorBoat() { InitializeComponent(); } + + /// + /// + /// + private void Draw() + { + if (_drawningMotorboat == null) + { + return; + } + Bitmap bmp = new(pictureBoxMotorBoat.Width, pictureBoxMotorBoat.Height); + Graphics gr = Graphics.FromImage(bmp); + _drawningMotorboat.DrawTransport(gr); + pictureBoxMotorBoat.Image = bmp; + } + + /// + /// "" + /// + /// + /// + private void ButtonCreate_Click(object sender, EventArgs e) + { + Random random = new(); + _drawningMotorboat = new DrawningMotorboat(); + _drawningMotorboat.Init(random.Next(100, 300), random.Next(1000, 3000), + Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256)), + Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256)), + Convert.ToBoolean(random.Next(0, 2)), Convert.ToBoolean(random.Next(0, 2)), + pictureBoxMotorBoat.Width, pictureBoxMotorBoat.Height); + _drawningMotorboat.SetPosition(random.Next(10, 100), random.Next(10, 100)); + Draw(); + } + + /// + /// + /// + /// + /// + private void ButtonMove_Click(object sender, EventArgs e) + { + if (_drawningMotorboat == null) + { + return; + } + string name = ((Button)sender)?.Name ?? string.Empty; + switch (name) + { + case "buttonUp": + _drawningMotorboat.MoveTransport(DirectionType.Up); + break; + case "buttonDown": + _drawningMotorboat.MoveTransport(DirectionType.Down); + break; + case "buttonLeft": + _drawningMotorboat.MoveTransport(DirectionType.Left); + break; + case "buttonRight": + _drawningMotorboat.MoveTransport(DirectionType.Right); + break; + } + Draw(); + } } } \ No newline at end of file diff --git a/MotorBoat/MotorBoat/down.png b/MotorBoat/MotorBoat/down.png new file mode 100644 index 0000000000000000000000000000000000000000..c49c7709fa4e2de813660de37d6b8bc514434dbc GIT binary patch literal 4284 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 literal 0 HcmV?d00001 diff --git a/MotorBoat/MotorBoat/right.png b/MotorBoat/MotorBoat/right.png new file mode 100644 index 0000000000000000000000000000000000000000..5da511f3e8e20e1181e0316629ed2d876046071d GIT binary patch literal 1986 zcmX|Cc~nzZ9uBez7{CZbqXA1zgdk8yKnVhQm=FR62(p=mbx=d7iY0FBFzhI)#sY?e zzC4gdXpq662m*BhY+3SBh-?L_6o^!y4iOy6G7oL%kMFmi@BHpP_nt4`-fixD2 zH8(f6zP=6sfLt!m%gfu&KB+>wdhuSz6Hq9_XB*JyJS&Mop>&-YR3Pxu@a(A1*%2>e ztw{2fd7Ikv@-3Av8XZgDTP!^t2z$?@6pva@$L?09^ajx zDNR~v96G#$wN34xJhD^WGar@gkk5xB+iYC%U=2YM!(qRR$5loHbK8PESRcV^%bm{sK4xgtnvfeXv{)4j5@AgrurOc z^Xw^b!>QeP!D<9VxZf)P*^HMb9F zqcZcuZ|g0O*3q-)=HxfWb6oBCNoK1!N7F>*!Q-rB;u0+Ur{pG#^?mbDau=4Dz}7qx zf8;kB^Stj8Gra$(DoAIUz|$g2Uq8A~o{_p^vD9u;Jv>p@nYDK9U*;9JEE0FVUx7y? zr}9$qi&I%SHzb3n1Uko{r;0pG(ADrsNP|E!M_aMpH-wJ7fT}3&2kRx)@Y2S*<0Z+L3(2iX~M%Eon!V^z6xa ziB9@fLGTVt;y=tPk))UFy(5sKU1*o`^@lVuVUP!`!kFG4AvRLm!6yU~H{#e=`2|B& z1{^4J(aZqGm}bp^1QHK>kegrNal|KZF!k~ajA_nCRwT&PDVDr&-5o_BVbC@#ar5Z{ zXwD0UByHC~8f&~BG1CXz2Iuv@IUMpZMEoBbg>2HYZ|wR;eLxv0+cUG6uVq`XO!@{S zu-0P$AE@;XU;xd@t&~SKb1&Z`(>f$g|_0?B}SuB@2q!_U^tn zU+iR_+gj(+osuH<$bIWhHRmrHIBz2-#SDiN>cNTn+ZNYHyrVL?4K!Po)}qW`bx3D*Cytc*?Yl=4Yh!MR9*W^s0ag| zm`@8o2evQy8H1A-tBpZZ0C_5z$Wze@!?$c0+a$qdAj7P+OpchFei_AMP5@%Sr|D+e zDTGy8>1Fm>wAC`rSQb4a5dRRjS8 zo?X3MLs|UHuM~q$7kwH3aRtR^nu{k(ofc%tGybcVU&>b6>)hD;$CUJEynx-f5aA|8 zqsSz$Ls?02s3o?G2VP$c-3*JsxQgs!y1MK`=l#Ju6L@VLTbKzCiqyvCFY^~18i}rl zWI#n+z-C;S&=USbWRj6HP>FJACDQhw?=dvE$xM9;vf)o$<*u-uVIa|wULs-iCa@p<&(J z<-+tN0G>#Tq!_e5OiE<(vJG4IarM>JCECo4-f_21kZ4=~na(l<>E4Gk-x0Y8EZ3}|OnTZo>cklZ8(7(p>;kXlX&E|`(0*S zfQx$Q6mLY-Z=7i^4aPuatxFnL$pFpeOx!85G@#}cwD+?l(Zj7G7Zxzk27ul!0i z$hG6QcWYLjlhHdT{}8>8AMMe?Ta1i`napx;>5-q8jX(RqUCX?&Sq&K&mGw-C3$x+a zhV2P`M%r7DD?QQr%Mbq-E<~8JkzZx>Bq#T8E!)tlwd*R`GA;e1w*94DHRc^3+#&ik U&6ci$W<*(044N;s)*~|Wf7}GOw*UYD literal 0 HcmV?d00001 diff --git a/MotorBoat/MotorBoat/up.png b/MotorBoat/MotorBoat/up.png new file mode 100644 index 0000000000000000000000000000000000000000..9b45905982bf6973a695755a2ea6b460aa8d8eb9 GIT binary patch literal 4368 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 G-~1;al|GID literal 0 HcmV?d00001