From b145445dfca6113319162bbfc0b131d06c262066 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B5=D1=80=D0=B3=D0=B5=D0=B9=20=D0=9F=D0=BE=D0=BB?= =?UTF-8?q?=D0=B5=D0=B2=D0=BE=D0=B9?= Date: Mon, 12 Sep 2022 22:11:25 +0400 Subject: [PATCH 1/9] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81=20EntityArtillery?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SelfPropelledArtilleryUnit/EntityArtillery.cs | 24 ++++ SelfPropelledArtilleryUnit/Form1.resx | 120 ------------------ ....Designer.cs => FormArtillery.Designer.cs} | 13 +- .../{Form1.cs => FormArtillery.cs} | 4 +- SelfPropelledArtilleryUnit/FormArtillery.resx | 60 +++++++++ SelfPropelledArtilleryUnit/Program.cs | 2 +- .../SelfPropelledArtilleryUnit.sln | 25 ++++ 7 files changed, 122 insertions(+), 126 deletions(-) create mode 100644 SelfPropelledArtilleryUnit/EntityArtillery.cs delete mode 100644 SelfPropelledArtilleryUnit/Form1.resx rename SelfPropelledArtilleryUnit/{Form1.Designer.cs => FormArtillery.Designer.cs} (77%) rename SelfPropelledArtilleryUnit/{Form1.cs => FormArtillery.cs} (57%) create mode 100644 SelfPropelledArtilleryUnit/FormArtillery.resx create mode 100644 SelfPropelledArtilleryUnit/SelfPropelledArtilleryUnit.sln diff --git a/SelfPropelledArtilleryUnit/EntityArtillery.cs b/SelfPropelledArtilleryUnit/EntityArtillery.cs new file mode 100644 index 0000000..d3254ca --- /dev/null +++ b/SelfPropelledArtilleryUnit/EntityArtillery.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Artilleries +{ + internal class EntityArtillery + { + public int Speed { get; private set; } + public float Weight { get; private set; } + public Color BodyColor { get; private set; } + public float Step => Speed * 100 / Weight; + public void Init(int speed, float weight, Color bodyColor) + { + Random rnd = new(); + Speed = speed <= 0 ? rnd.Next(50, 150) : speed; + Weight = weight <= 0 ? rnd.Next(40, 70) : weight; + BodyColor = bodyColor; + } + + } +} diff --git a/SelfPropelledArtilleryUnit/Form1.resx b/SelfPropelledArtilleryUnit/Form1.resx deleted file mode 100644 index 1af7de1..0000000 --- a/SelfPropelledArtilleryUnit/Form1.resx +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - \ No newline at end of file diff --git a/SelfPropelledArtilleryUnit/Form1.Designer.cs b/SelfPropelledArtilleryUnit/FormArtillery.Designer.cs similarity index 77% rename from SelfPropelledArtilleryUnit/Form1.Designer.cs rename to SelfPropelledArtilleryUnit/FormArtillery.Designer.cs index 09ae2e1..e201ef2 100644 --- a/SelfPropelledArtilleryUnit/Form1.Designer.cs +++ b/SelfPropelledArtilleryUnit/FormArtillery.Designer.cs @@ -1,6 +1,6 @@ namespace SelfPropelledArtilleryUnit { - partial class Form1 + partial class FormArtillery { /// /// Required designer variable. @@ -28,10 +28,17 @@ /// private void InitializeComponent() { - this.components = new System.ComponentModel.Container(); + this.SuspendLayout(); + // + // FormArtillery + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(800, 450); - this.Text = "Form1"; + this.Name = "FormArtillery"; + this.Text = "Artillery"; + this.ResumeLayout(false); + } #endregion diff --git a/SelfPropelledArtilleryUnit/Form1.cs b/SelfPropelledArtilleryUnit/FormArtillery.cs similarity index 57% rename from SelfPropelledArtilleryUnit/Form1.cs rename to SelfPropelledArtilleryUnit/FormArtillery.cs index bb036a8..6a3183f 100644 --- a/SelfPropelledArtilleryUnit/Form1.cs +++ b/SelfPropelledArtilleryUnit/FormArtillery.cs @@ -1,8 +1,8 @@ namespace SelfPropelledArtilleryUnit { - public partial class Form1 : Form + public partial class FormArtillery : Form { - public Form1() + public FormArtillery() { InitializeComponent(); } diff --git a/SelfPropelledArtilleryUnit/FormArtillery.resx b/SelfPropelledArtilleryUnit/FormArtillery.resx new file mode 100644 index 0000000..f298a7b --- /dev/null +++ b/SelfPropelledArtilleryUnit/FormArtillery.resx @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SelfPropelledArtilleryUnit/Program.cs b/SelfPropelledArtilleryUnit/Program.cs index a145761..a4ffd66 100644 --- a/SelfPropelledArtilleryUnit/Program.cs +++ b/SelfPropelledArtilleryUnit/Program.cs @@ -11,7 +11,7 @@ namespace SelfPropelledArtilleryUnit // To customize application configuration such as set high DPI settings or default font, // see https://aka.ms/applicationconfiguration. ApplicationConfiguration.Initialize(); - Application.Run(new Form1()); + Application.Run(new FormArtillery()); } } } \ No newline at end of file diff --git a/SelfPropelledArtilleryUnit/SelfPropelledArtilleryUnit.sln b/SelfPropelledArtilleryUnit/SelfPropelledArtilleryUnit.sln new file mode 100644 index 0000000..1b8bcb7 --- /dev/null +++ b/SelfPropelledArtilleryUnit/SelfPropelledArtilleryUnit.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.3.32825.248 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SelfPropelledArtilleryUnit", "SelfPropelledArtilleryUnit.csproj", "{D1201BA2-52D4-4FD2-BCCE-A7384854E785}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D1201BA2-52D4-4FD2-BCCE-A7384854E785}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D1201BA2-52D4-4FD2-BCCE-A7384854E785}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D1201BA2-52D4-4FD2-BCCE-A7384854E785}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D1201BA2-52D4-4FD2-BCCE-A7384854E785}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {4AC84756-85D9-4983-96C9-641A2590F78D} + EndGlobalSection +EndGlobal -- 2.25.1 From 527aa27f8f6fd196c5f933710765e9c66e1c51c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B5=D1=80=D0=B3=D0=B5=D0=B9=20=D0=9F=D0=BE=D0=BB?= =?UTF-8?q?=D0=B5=D0=B2=D0=BE=D0=B9?= Date: Mon, 12 Sep 2022 22:12:40 +0400 Subject: [PATCH 2/9] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81=20Direction?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SelfPropelledArtilleryUnit/Direction.cs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 SelfPropelledArtilleryUnit/Direction.cs diff --git a/SelfPropelledArtilleryUnit/Direction.cs b/SelfPropelledArtilleryUnit/Direction.cs new file mode 100644 index 0000000..8d54af8 --- /dev/null +++ b/SelfPropelledArtilleryUnit/Direction.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Artilleries +{ + internal enum Direction + { + Up = 1, + Down = 2, + Left = 3, + Right = 4 + } +} -- 2.25.1 From b1c99afbb7cf0c8b02c79f8a13229537462b4d28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B5=D1=80=D0=B3=D0=B5=D0=B9=20=D0=9F=D0=BE=D0=BB?= =?UTF-8?q?=D0=B5=D0=B2=D0=BE=D0=B9?= Date: Mon, 12 Sep 2022 22:13:20 +0400 Subject: [PATCH 3/9] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81=20DrawingArtillery?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DrawingArtillery.cs | 117 ++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 SelfPropelledArtilleryUnit/DrawingArtillery.cs diff --git a/SelfPropelledArtilleryUnit/DrawingArtillery.cs b/SelfPropelledArtilleryUnit/DrawingArtillery.cs new file mode 100644 index 0000000..dd8ee81 --- /dev/null +++ b/SelfPropelledArtilleryUnit/DrawingArtillery.cs @@ -0,0 +1,117 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Artilleries +{ + internal class DrawingArtillery + { + public EntityArtillery Artillery { private set; get; } + private float _startPosX; + private float _startPosY; + private int? _pictureWidth = null; + private int? _pictureHeight = null; + private readonly int _artilleryWidth = 80; + private readonly int _artilleryHeight = 50; + public void Init(int speed, float weight, Color bodyColor) + { + Artillery = new EntityArtillery(); + Artillery.Init(speed, weight, bodyColor); + } + public void SetPosition(int x, int y, int width, int height) + { + if (x < 0 || x + _artilleryWidth >= width) + { + return; + } + if (y < 0 || y + _artilleryHeight >= height) + { + return; + } + _startPosX = x; + _startPosY = y; + _pictureWidth = width; + _pictureHeight = height; + } + + public void MoveTransport(Direction direction) + { + if (!_pictureWidth.HasValue || !_pictureHeight.HasValue) + { + return; + } + switch (direction) + { + case Direction.Right: + if (_startPosX + _artilleryWidth + Artillery.Step < _pictureWidth) + { + _startPosX += Artillery.Step; + } + break; + + case Direction.Left: + if (_startPosX - Artillery.Step >= 0) + { + _startPosX -= Artillery.Step; + } + break; + + case Direction.Up: + if (_startPosY - Artillery.Step >= 0) + { + _startPosY -= Artillery.Step; + } + break; + + case Direction.Down: + if (_startPosY + _artilleryHeight + Artillery.Step < _pictureHeight) + { + _startPosY += Artillery.Step; + } + break; + } + } + + public void DrawTransport(Graphics g) + { + if (_startPosX < 0 || _startPosY < 0 || !_pictureHeight.HasValue || !_pictureWidth.HasValue) + { + return; + } + Brush brush = new SolidBrush(Artillery?.BodyColor ?? Color.Black); + g.FillRectangle(brush, _startPosX + _artilleryWidth / 8 * 2, _startPosY, _artilleryWidth / 8 * 4, _artilleryWidth / 5); + g.FillRectangle(brush, _startPosX, _startPosY + _artilleryHeight / 5, _artilleryWidth, _artilleryHeight / 3); + + Pen blackPen = new(Color.Black); + g.DrawEllipse(blackPen, _startPosX, _startPosY + _artilleryHeight * 2 / 5, _artilleryWidth, _artilleryHeight * 2 / 5); + g.DrawEllipse(blackPen, _startPosX + _artilleryWidth / 20, _startPosY + _artilleryHeight * 7 / 15, _artilleryWidth * 4 / 20, _artilleryHeight * 10 / 32); + g.DrawEllipse(blackPen, _startPosX + _artilleryWidth * 5 / 20, _startPosY + _artilleryHeight * 9 / 16, _artilleryWidth * 3 / 20, _artilleryHeight * 8 / 32); + g.DrawEllipse(blackPen, _startPosX + _artilleryWidth * 8 / 20, _startPosY + _artilleryHeight * 10 / 16, _artilleryWidth * 2 / 20, _artilleryHeight * 6 / 32); + g.DrawEllipse(blackPen, _startPosX + _artilleryWidth * 10 / 20, _startPosY + _artilleryHeight * 10 / 16, _artilleryWidth * 2 / 20, _artilleryHeight * 6 / 32); + g.DrawEllipse(blackPen, _startPosX + _artilleryWidth * 12 / 20, _startPosY + _artilleryHeight * 9 / 16, _artilleryWidth * 3 / 20, _artilleryHeight * 8 / 32); + g.DrawEllipse(blackPen, _startPosX + _artilleryWidth * 15 / 20, _startPosY + _artilleryHeight * 7 / 15, _artilleryWidth * 4 / 20, _artilleryHeight * 10 / 32); + } + + public void ChangeBorders(int width, int height) + { + _pictureWidth = width; + _pictureHeight = height; + if (_pictureWidth <= _artilleryWidth || _pictureHeight <= _artilleryHeight) + { + _pictureWidth = null; + _pictureHeight = null; + return; + } + if (_startPosX + _artilleryWidth > _pictureWidth) + { + _startPosX = _pictureWidth.Value - _artilleryWidth; + } + if (_startPosY + _artilleryHeight > _pictureHeight) + { + _startPosY = _pictureHeight.Value - _artilleryHeight; + } + } + } +} -- 2.25.1 From 84aa33b44f9e43fe14c3dccd24e34b3a1543516e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B5=D1=80=D0=B3=D0=B5=D0=B9=20=D0=9F=D0=BE=D0=BB?= =?UTF-8?q?=D0=B5=D0=B2=D0=BE=D0=B9?= Date: Mon, 12 Sep 2022 22:17:57 +0400 Subject: [PATCH 4/9] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D1=8B=20=D1=80=D0=B5=D1=81=D1=83=D1=80=D1=81=D1=8B,=20?= =?UTF-8?q?=D0=B8=D0=BD=D1=82=D0=B5=D1=80=D1=84=D0=B5=D0=B9=D1=81=20=D0=B8?= =?UTF-8?q?=20=D0=BE=D1=82=D1=80=D0=B8=D1=81=D0=BE=D0=B2=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../FormArtillery.Designer.cs | 140 +++++++++++++++++- SelfPropelledArtilleryUnit/FormArtillery.cs | 50 ++++++- SelfPropelledArtilleryUnit/FormArtillery.resx | 3 + SelfPropelledArtilleryUnit/Program.cs | 7 +- .../Properties/Resources.Designer.cs | 103 +++++++++++++ .../Properties/Resources.resx | 133 +++++++++++++++++ .../Resources/ArrowDown.png | Bin 0 -> 17387 bytes .../Resources/ArrowLeft.png | Bin 0 -> 11448 bytes .../Resources/ArrowRight.png | Bin 0 -> 9528 bytes .../Resources/ArrowUp.png | Bin 0 -> 17393 bytes 10 files changed, 427 insertions(+), 9 deletions(-) create mode 100644 SelfPropelledArtilleryUnit/Properties/Resources.Designer.cs create mode 100644 SelfPropelledArtilleryUnit/Properties/Resources.resx create mode 100644 SelfPropelledArtilleryUnit/Resources/ArrowDown.png create mode 100644 SelfPropelledArtilleryUnit/Resources/ArrowLeft.png create mode 100644 SelfPropelledArtilleryUnit/Resources/ArrowRight.png create mode 100644 SelfPropelledArtilleryUnit/Resources/ArrowUp.png diff --git a/SelfPropelledArtilleryUnit/FormArtillery.Designer.cs b/SelfPropelledArtilleryUnit/FormArtillery.Designer.cs index e201ef2..4248cdf 100644 --- a/SelfPropelledArtilleryUnit/FormArtillery.Designer.cs +++ b/SelfPropelledArtilleryUnit/FormArtillery.Designer.cs @@ -1,4 +1,4 @@ -namespace SelfPropelledArtilleryUnit +namespace Artilleries { partial class FormArtillery { @@ -28,19 +28,155 @@ /// private void InitializeComponent() { + this.statusStrip1 = new System.Windows.Forms.StatusStrip(); + this.SpeedStatusLabel = new System.Windows.Forms.ToolStripStatusLabel(); + this.WeightStatusLabel = new System.Windows.Forms.ToolStripStatusLabel(); + this.ColorStatusLabel = new System.Windows.Forms.ToolStripStatusLabel(); + this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel(); + this.pictureBoxArtilleries = new System.Windows.Forms.PictureBox(); + this.buttonCreate = new System.Windows.Forms.Button(); + this.buttonLeft = new System.Windows.Forms.Button(); + this.buttonUp = new System.Windows.Forms.Button(); + this.buttonDown = new System.Windows.Forms.Button(); + this.buttonRight = new System.Windows.Forms.Button(); + this.statusStrip1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxArtilleries)).BeginInit(); this.SuspendLayout(); // + // statusStrip1 + // + this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.SpeedStatusLabel, + this.WeightStatusLabel, + this.ColorStatusLabel}); + this.statusStrip1.Location = new System.Drawing.Point(0, 419); + this.statusStrip1.Name = "statusStrip1"; + this.statusStrip1.Size = new System.Drawing.Size(624, 22); + this.statusStrip1.TabIndex = 0; + // + // SpeedStatusLabel + // + this.SpeedStatusLabel.Name = "SpeedStatusLabel"; + this.SpeedStatusLabel.Size = new System.Drawing.Size(62, 17); + this.SpeedStatusLabel.Text = "Скорость:"; + // + // WeightStatusLabel + // + this.WeightStatusLabel.Name = "WeightStatusLabel"; + this.WeightStatusLabel.Size = new System.Drawing.Size(29, 17); + this.WeightStatusLabel.Text = "Вес:"; + // + // ColorStatusLabel + // + this.ColorStatusLabel.Name = "ColorStatusLabel"; + this.ColorStatusLabel.Size = new System.Drawing.Size(36, 17); + this.ColorStatusLabel.Text = "Цвет:"; + // + // toolStripStatusLabel1 + // + this.toolStripStatusLabel1.Name = "toolStripStatusLabel1"; + this.toolStripStatusLabel1.Size = new System.Drawing.Size(23, 23); + // + // pictureBoxArtilleries + // + this.pictureBoxArtilleries.Dock = System.Windows.Forms.DockStyle.Fill; + this.pictureBoxArtilleries.Location = new System.Drawing.Point(0, 0); + this.pictureBoxArtilleries.Name = "pictureBoxArtilleries"; + this.pictureBoxArtilleries.Size = new System.Drawing.Size(624, 419); + this.pictureBoxArtilleries.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; + this.pictureBoxArtilleries.TabIndex = 1; + this.pictureBoxArtilleries.TabStop = false; + // + // buttonCreate + // + this.buttonCreate.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.buttonCreate.Location = new System.Drawing.Point(12, 382); + this.buttonCreate.Name = "buttonCreate"; + this.buttonCreate.Size = new System.Drawing.Size(75, 23); + this.buttonCreate.TabIndex = 2; + this.buttonCreate.Text = "Создать"; + this.buttonCreate.UseVisualStyleBackColor = true; + this.buttonCreate.Click += new System.EventHandler(this.buttonCreate_Click); + // + // buttonLeft + // + this.buttonLeft.BackgroundImage = global::SelfPropelledArtilleryUnit.Properties.Resources.ArrowLeft; + this.buttonLeft.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; + this.buttonLeft.Location = new System.Drawing.Point(509, 375); + this.buttonLeft.Name = "buttonLeft"; + this.buttonLeft.Size = new System.Drawing.Size(30, 30); + this.buttonLeft.TabIndex = 3; + this.buttonLeft.UseVisualStyleBackColor = true; + this.buttonLeft.Click += new System.EventHandler(this.buttonMove_Click); + // + // buttonUp + // + this.buttonUp.BackgroundImage = global::SelfPropelledArtilleryUnit.Properties.Resources.ArrowUp; + this.buttonUp.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; + this.buttonUp.Location = new System.Drawing.Point(543, 342); + this.buttonUp.Name = "buttonUp"; + this.buttonUp.Size = new System.Drawing.Size(30, 30); + this.buttonUp.TabIndex = 4; + this.buttonUp.UseVisualStyleBackColor = true; + this.buttonUp.Click += new System.EventHandler(this.buttonMove_Click); + // + // buttonDown + // + this.buttonDown.BackgroundImage = global::SelfPropelledArtilleryUnit.Properties.Resources.ArrowDown; + this.buttonDown.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; + this.buttonDown.Location = new System.Drawing.Point(543, 375); + this.buttonDown.Name = "buttonDown"; + this.buttonDown.Size = new System.Drawing.Size(30, 30); + this.buttonDown.TabIndex = 5; + this.buttonDown.UseVisualStyleBackColor = true; + this.buttonDown.Click += new System.EventHandler(this.buttonMove_Click); + // + // buttonRight + // + this.buttonRight.BackgroundImage = global::SelfPropelledArtilleryUnit.Properties.Resources.ArrowRight; + this.buttonRight.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; + this.buttonRight.Location = new System.Drawing.Point(579, 375); + this.buttonRight.Name = "buttonRight"; + this.buttonRight.Size = new System.Drawing.Size(30, 30); + this.buttonRight.TabIndex = 6; + this.buttonRight.UseVisualStyleBackColor = true; + this.buttonRight.Click += new System.EventHandler(this.buttonMove_Click); + // // FormArtillery // this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(800, 450); + this.ClientSize = new System.Drawing.Size(624, 441); + this.Controls.Add(this.buttonRight); + this.Controls.Add(this.buttonDown); + this.Controls.Add(this.buttonUp); + this.Controls.Add(this.buttonLeft); + this.Controls.Add(this.buttonCreate); + this.Controls.Add(this.pictureBoxArtilleries); + this.Controls.Add(this.statusStrip1); this.Name = "FormArtillery"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.Text = "Artillery"; + this.statusStrip1.ResumeLayout(false); + this.statusStrip1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxArtilleries)).EndInit(); this.ResumeLayout(false); + this.PerformLayout(); } #endregion + + private StatusStrip statusStrip1; + private ToolStripStatusLabel toolStripStatusLabel1; + private ToolStripStatusLabel SpeedStatusLabel; + private ToolStripStatusLabel WeightStatusLabel; + private ToolStripStatusLabel ColorStatusLabel; + private PictureBox pictureBoxArtilleries; + private Button buttonCreate; + private Button buttonLeft; + private Button buttonUp; + private Button buttonDown; + private Button buttonRight; } } \ No newline at end of file diff --git a/SelfPropelledArtilleryUnit/FormArtillery.cs b/SelfPropelledArtilleryUnit/FormArtillery.cs index 6a3183f..b053a9a 100644 --- a/SelfPropelledArtilleryUnit/FormArtillery.cs +++ b/SelfPropelledArtilleryUnit/FormArtillery.cs @@ -1,10 +1,58 @@ -namespace SelfPropelledArtilleryUnit +namespace Artilleries { public partial class FormArtillery : Form { + private DrawingArtillery _artillery; + public FormArtillery() { InitializeComponent(); } + private void Draw() + { + Bitmap bmp = new(pictureBoxArtilleries.Width, pictureBoxArtilleries.Height); + Graphics gr = Graphics.FromImage(bmp); + _artillery?.DrawTransport(gr); + pictureBoxArtilleries.Image = bmp; + } + + private void buttonCreate_Click(object sender, EventArgs e) + { + Random rnd = new(); + _artillery = new DrawingArtillery(); + _artillery.Init(rnd.Next(100, 300), rnd.Next(1000, 2000), Color.FromArgb(rnd.Next(0, 256), rnd.Next(0, 256), rnd.Next(0, 256))); + _artillery.SetPosition(rnd.Next(10, 100), rnd.Next(10, 100), pictureBoxArtilleries.Width, pictureBoxArtilleries.Height); + SpeedStatusLabel.Text = $": {_artillery.Artillery.Speed}"; + WeightStatusLabel.Text = $": {_artillery.Artillery.Weight}"; + ColorStatusLabel.Text = $": {_artillery.Artillery.BodyColor.Name}"; + Draw(); + } + + private void buttonMove_Click(object sender, EventArgs e) + { + string name = ((Button)sender)?.Name ?? string.Empty; + switch (name) + { + case "buttonUp": + _artillery?.MoveTransport(Direction.Up); + break; + case "buttonDown": + _artillery?.MoveTransport(Direction.Down); + break; + case "buttonLeft": + _artillery?.MoveTransport(Direction.Left); + break; + case "buttonRight": + _artillery?.MoveTransport(Direction.Right); + break; + } + Draw(); + } + + private void pictureBoxArtilleries_Resize(object sender, EventArgs e) + { + _artillery?.ChangeBorders(pictureBoxArtilleries.Width, pictureBoxArtilleries.Height); + Draw(); + } } } \ No newline at end of file diff --git a/SelfPropelledArtilleryUnit/FormArtillery.resx b/SelfPropelledArtilleryUnit/FormArtillery.resx index f298a7b..5cb320f 100644 --- a/SelfPropelledArtilleryUnit/FormArtillery.resx +++ b/SelfPropelledArtilleryUnit/FormArtillery.resx @@ -57,4 +57,7 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 17, 17 + \ No newline at end of file diff --git a/SelfPropelledArtilleryUnit/Program.cs b/SelfPropelledArtilleryUnit/Program.cs index a4ffd66..e993022 100644 --- a/SelfPropelledArtilleryUnit/Program.cs +++ b/SelfPropelledArtilleryUnit/Program.cs @@ -1,15 +1,10 @@ -namespace SelfPropelledArtilleryUnit +namespace Artilleries { internal static class Program { - /// - /// The main entry point for the application. - /// [STAThread] static void Main() { - // To customize application configuration such as set high DPI settings or default font, - // see https://aka.ms/applicationconfiguration. ApplicationConfiguration.Initialize(); Application.Run(new FormArtillery()); } diff --git a/SelfPropelledArtilleryUnit/Properties/Resources.Designer.cs b/SelfPropelledArtilleryUnit/Properties/Resources.Designer.cs new file mode 100644 index 0000000..5225a0c --- /dev/null +++ b/SelfPropelledArtilleryUnit/Properties/Resources.Designer.cs @@ -0,0 +1,103 @@ +//------------------------------------------------------------------------------ +// +// Этот код создан программой. +// Исполняемая версия:4.0.30319.42000 +// +// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае +// повторной генерации кода. +// +//------------------------------------------------------------------------------ + +namespace SelfPropelledArtilleryUnit.Properties { + using System; + + + /// + /// Класс ресурса со строгой типизацией для поиска локализованных строк и т.д. + /// + // Этот класс создан автоматически классом StronglyTypedResourceBuilder + // с помощью такого средства, как ResGen или Visual Studio. + // Чтобы добавить или удалить член, измените файл .ResX и снова запустите ResGen + // с параметром /str или перестройте свой проект VS. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Возвращает кэшированный экземпляр ResourceManager, использованный этим классом. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SelfPropelledArtilleryUnit.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Перезаписывает свойство CurrentUICulture текущего потока для всех + /// обращений к ресурсу с помощью этого класса ресурса со строгой типизацией. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ArrowDown { + get { + object obj = ResourceManager.GetObject("ArrowDown", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ArrowLeft { + get { + object obj = ResourceManager.GetObject("ArrowLeft", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ArrowRight { + get { + object obj = ResourceManager.GetObject("ArrowRight", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ArrowUp { + get { + object obj = ResourceManager.GetObject("ArrowUp", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} diff --git a/SelfPropelledArtilleryUnit/Properties/Resources.resx b/SelfPropelledArtilleryUnit/Properties/Resources.resx new file mode 100644 index 0000000..7b1a077 --- /dev/null +++ b/SelfPropelledArtilleryUnit/Properties/Resources.resx @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + ..\Resources\ArrowDown.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\ArrowUp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\ArrowLeft.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\ArrowRight.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + \ No newline at end of file diff --git a/SelfPropelledArtilleryUnit/Resources/ArrowDown.png b/SelfPropelledArtilleryUnit/Resources/ArrowDown.png new file mode 100644 index 0000000000000000000000000000000000000000..5edca3677084c3d4dc7962c29f5e3dbe400ce6cf GIT binary patch literal 17387 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 z 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 literal 0 HcmV?d00001 diff --git a/SelfPropelledArtilleryUnit/Resources/ArrowLeft.png b/SelfPropelledArtilleryUnit/Resources/ArrowLeft.png new file mode 100644 index 0000000000000000000000000000000000000000..7aff8f8bedcbb5da484d106dfbfddef43a5517aa GIT binary patch literal 11448 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 beezF|sz-|DklNi3sPY)!@ycT()vNyx;Bf4A literal 0 HcmV?d00001 diff --git a/SelfPropelledArtilleryUnit/Resources/ArrowRight.png b/SelfPropelledArtilleryUnit/Resources/ArrowRight.png new file mode 100644 index 0000000000000000000000000000000000000000..5561cac079915a87bb735678aeacf88e4fa45967 GIT binary patch literal 9528 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
  • ObvG`*7>doq^Bj#QlrQEQ1V0mO#oGu4Bh0^_;9}QlS86bgk@(FG&+;fEYv#xu9NE zC(gVp0oMG8Ha4~99Y2f$N7!zhbwk3P7+gxP;)@g`oQ+>V%k?sV4Y?wSw+akIPWrJvAppFD*B zoAYLf>+CfbT&)RX8@k;xoBjGfW8ieZJoS8Mb7ZwPj0LK7rVr2gY<#yEW^R2gXo_>5 zScVZ7Ts@mg{63_<6YivdR>?)5&X>EZSHai{6ckg}X)J8qw-jdBE^ev6%(q8Z>%rJ* z)PjwLQxn@TLLr;&RPr_cU4Iq@!~tm=J3IDNuZ6`ZCSE-6xv+kpGR#zbHf(6)P5NMj zICRd!s;IO$$`b^~lZsYk&9*j)s)3X>R#*4k5*n6cOoz&QV(r=cRVw1_yL1@xu`wdf zNBMwjxK%}GQUY$XZ#gKx2@UQ0X{PB&^+qr(X}&Y`?CHIWcjX}Am`+yU=E{kRsN>*z z@UvT@Y@hxGepIB2|26O>=?34Q-l z#QgQBli=#8lHPePLAZ9G7AUtyn7#kAeC|ZGEf`)aHhgj>m?H%s`=NisY`}Pw*#!V) zen?3#}4JxY@+`!F?O2e@LvLGilE_I-^@F=7EtrsA?j9h538 znhzIGv_|Mc%bTY@C0e63;-}V12qF4TzpI5O}hG_Co0%q&u31TCEnht0HN!g8dj zkmJc7RYdUVM1yaZ(b-kcZT+q$a ztFykOudh0rEdg%|*zMy=cWW-)lz^&&LZ9~W4K5Lmh#_~FX*h*MBo9hJ4jO)~<0tlU zV=2V0!lJ?Ov?}X0@S*R$$!nO!!Xn7V#C-(a&V2*boOmfX@bF^JvtvWTj~HpOZXNr2 zpxV9&7GDAEKdx0f-(Aj|L{*~M<)^+-1UeEJ{ui&9Uv}rb^=4q?7WFJXFqm)pq5L-WnjvqXz$(g zTv$3`jp0gWMUTsJ?+!*#NJarWCUD=$h-<)%LP26*PrG|A*Hn^t?A|c-exY#E5yL;A z4q91ObEnyQ4=~E|hm3T+b)1$#-0*vo{DgBep&SFCcSR_xq>P_8pTseoTylsg zLI8;*x;r-3^;x?Equ{gOI^98izB0spkM+tall@r{kAV5BL#LbL%dofgeUijxOABt} z{%g(?Q5b#}4MOkrZcRHQYJq8YveU(}YY&GBbUx3&ZCT3HROv(_h6j`s-^r*P9Z;o` zEq?w!ZtEpaMl=GGsphuFvCiEpf(uOj&z*lbJ`d%X0=?nWUgc%2_rF$I9|p!hsY7dS z_~fYQYXyq|FW20N)_kKe&H>#f}1HPxXy-T1rqrk3&UKS9l zmW|8zd%a!Q>?H|Y?qlz^#le%g5h}nmm{lnHD#lz7uWe5Up~9lYY{lUiA+G@N(N+HL+d9^+Ixrm zh>gIs8FaIvKilCY2ae5dY4UaBZ~2o!2qDpIbAs`Y*5ELZmps@)=Bndjled^LSX%rjZDSoizjjmxbbVLvjO&d=VhkbUpX)+HRhr+ijdx{1w{NXM+-CQN z&*&?Zm2u;|Ti(t_crn1SHbR+B4ZEa5gQWp!Uu#=57EDmA9vSZ6@cGQ+*{9K7%b}+| zBu!T5UV1tWrccaSRGd-lnE%B~4SM*yon`X^Qrl5}P(Vg=t^Qp9&4@q*k*FbE8RyPd zvY;%!s$iLY-|rD25Wq%Ze{JHkkK4U8q33mInv70RPP!C?Jt$AjsXbdc`?+!xlx3YS zP_h@gM4Unl`PofBu_@)F@YJc=x4_5s>+|C>F0wfEUf)<5WDwS< zZ3vucuiOjaCHVz%T{Cy*E8QVH4Pl$yw~nSJNrKJd^R6V@&gmXk0nUh_L9BD(L?kA- zjr!^OL&Av*5swi>o_ZEJL zmkC5YLCbuZ<&oq3h-Mh`KIyjX!Gq*>I%pLk=-%w~IpPJ3@k@&J4t+Atk7z{*iMVai zqrDCJG(y4e;LesdgPNua8WH2lzj)<-UZo$Lef@Aqdb!oyQ7?0td$Yq?;?5~=+fg-G z@IA~@`}6J8L@g#bURb1cXyj}9#4}8AMg^_%wLXljy{ish;l0+~r>Bf;bHe0-?Iv$X zOje!%<+lxoL#YXZ;)r1|eDv9mrd-SR;+>Sj?`zodeDU=jgHNgVI+BW1To)tQIj%`; zLq0|od99;9UkX1xY+LV)2hQ#E+5`zljjc{gP9RK}!d(AAJ#>-b#nj4Z1d*X;6j@WEeq(uQey>WC0q?WZu=fiZ1ljBR_s2_b7mwb49)1a`=}ZsKWi`W9ptx-}T# zSk=OByAb3di50}Q6R8J~X;|Krz%nSSlns?Mmx?Dn~2ipEY?Wy`}OL^bvC3Qi(a2wx~2cXfGT(pku1Z8D4u+k}zsB?Y$ZhkvvJULkr)`v0p`z@^r8% zI9R>qn6Vy>kVo3yUY$x!5B7yag0-z0oIy)AjTo;e;|9bJc6M=ZWB3=IX?L&4Ea(U@ zDvBLL%g)^$=s_N&-c8k^fThT0(~}~0SMWUIvm!2~P{|C`JzY^cJiC}mp4IUAx9%4W z;Se$*rQ%gT1^kX|wpJ?Xiu$KxeAagvwvhPBOV_gJ*$$op^gSrfIxSy%zw**j2~z(U zn^QOJA(X(F_F3+#g8^2^W>cl$f0>yy_m)(1OeM&f0(M&6@UTz`W18h3RTT!DL^j)? zG?DDquqwWyjK`wj9!Oz*uThCv@I_#x=5qtl1f0DJp7p;sIiNoBp_{c666+)4EP7re z`t+vY8+ayly(5~!4H#1yN$d>>Q@9Y!0meCpOhJH_1Iq~#>&ENo0c98T-f_=SaHS-Z zn%?N@N&6%v&HTNPzKC_{K7@D{|K>u74A;4Nk*CEg})yBc0laI($xq4#ek!6m>beEpDq zEaTFhQQ--U>1vSK$z-XqJc0iDWstp@V@qjpH85`F)BQ637xtEmQSpC_j7;x&Un>l* z1;+m-6OU#TJb%vG5A+td8yg+FcJmle7aVliTP_88Q!F2#^YXYy5I`0TWME9@a|P3X zy=9z(c)-ZWqaVqL6JA%}fJ{gMGj{on_iOd!h!veN|E!m59iLJNYC{NF<#;$FZFHaj zW2#$KsJ>)wJjptS5Hi$$gCpPFisg^6aljcJya+|$MZKSl$+bTCTBU9QG;fjhI7n=KR`ysbs?Rd@#u55B_hbRd8#)?-)IeVU`)13 zx@t3%>c9#EZf69|lv|rJIw-)HF6_)Erkd^E<`+~vY1b~(G;e$7pee}6b5Lz$8jQ|6 z$ZH`Na*nx0)py`I>lARCciWqAdEK`4<5YZ?yu9f}@3;liK?OpD?2FTM(}(FxrAdz= zAN4xF;gNo63R4Pce9k=J!ioj%KRtfu;uDV1Bl zUIKsCW_s3J^DV1kvjlzv%`#`bjS7R8U>Ubl6TLGogvDg!Nt1N6exlc9s|yV&%q=de zwM=8D=(IXiC9)Ew>w4x6ZG5gsxUu-sajd-!ffBeq&xG*iAj*+n1*U;Pmoa+q*S_qZ z!T0^{XU5$2?iy~g1WrrR@|~;Ap5Jd9zl8W`)i`#hyu0bD1pWzWJn20W8Wv=TWfaXz zsa7$;g_Vwg(u-zHe~iS$E+YRxHrrUOwqO523Ug1lY6Wv~Zv6`h{BN^TlMrw1T~0w3 zSO(`j-II~{S$!AW@U_uViR*i_Z!ny~T#bffIa9l)Q6z!ya5f3>{+TmpD5XT)cHPS( z&un&cZ&sAVmlvA&d*jYQTd|Bk6Pg^|85z^joGmhBe-68&R-i8Yhr$eGt3G5}$JcPz zOX9VtA&+WypgzjaSZW?rPdBiC;q+d9~WZ3%U-=i0zh*8D~yEYTPY}|A{pE zcwa#bANI=pJO7FIA=ueOV=?Of+=xh%=ijc&8=t zl}O`0#E|nLNrsSeFL_*sI-RfX2D-RS-LklmhU3A9u(DD#AYB-h4_~Xh!^qLqdCTna z)z6iQlY95_4xUjAA01?sA%@&TGf1r6EpLPvGBC4TCNE&7N!=4h`m7HuvwuH5%c_8$ zH*Rr=8@=R>AuKfLa;8k)IP$1wC;=`POn&p;S{M|CmF4xtXWnA2M9hZK1pY}Tzk2_{ z3ns9#l-N4%?~HUOp)@r>YF5GI7w?0J*|yNh;bEVQ+7BLsi>U!ettv9FGc6IbJ!cTz zT|E6Wie2^VX@WE)a=Uk8bXF`X?sqV$R)5}Sqn;|!?aF7IN#5JAnC$hm4dXO{o0-Y_tI00W>63C~>m4@!lYs+E0M@TR?HySC zAZVstJrFp)tNWH*7TulC4unnqhgq#l9(6XYkP`G2niyQoK@Qa#DM22ZQVp)==Bo$8 zrcc%>OO`*HJHcatR%qJhMeA|~uTaNU=-tdrX=!B#zrtqN7fe=Pz0I%8E|w>yP$%8- zlS?~m2%-e~rc1ga$AekJFjx23+jkY(-t3dNL&W{pU%Z9YQkq0fcT?0~ZOCccWeqXK z#aSZhsyqGl)G_n!%%qkcgS$d5b*xqvF-=m-o89s@U|e}Gxl?)=S#7VV_c$-4Wd*Xc ztZ7K_4_TL@sQlPVeiM1ky}{$JGh^R&vP8&yJj@DKRIb~Tw29nb(fG$-l7XU+*{2Xg z24>!tPI#ZdnuCNPYg0w#=j`Bbm~y+D?n=XdkdR4*d$-UiRP;{v7)0B_|2kyG-}}{T z&ch$UnPqfFgmi+Bjtk)HHGG!WUK6$VURCsIpjoo z>8>!mf^bI@3@_)ras0`3t3$ao;z_IE#mX;x(}R|Ra?^nGfVSZc*g%SO9 z>XqUuuC+ENYE3Ei%H5ndTx)?AGO0$S?A*IE!%3;?>{+bk^?)-?bL@1?$u;H@S8ku@ zS_yJJg>mrZ0q3w(RK0N9h_syp0=G~y{*+C+#Fe~MuB9MvDrhHsbKA?iMcwqtz<7`Y z4}w#-OGWjBj4ZMTXl$2IFOYpIJ z+}B^$PUnJ2AHj~e)JHw?hkG zlXpa8``h{)?2xx{tK6+S{X95<_9}X5uhP7T|o*$JnxVDsr&!Oq1ix@1Qa~_c+ zKO8$)gz=}p_NWo}-T59=|NX}1Qg{!VUfPJP@XsmbR*+Y6@iwi88!{qKW}xZi7G_@j zFteM=-0zZknEd5f{}d#)KlQO+9&q3tZysaZnWS$J3?Lasi^-pJd^lL?xW2hGo{jn^ zkLV5$&$g0a?zmvmOmwpvH7E=;fvWnF!`4WLA}OumlZKUk%`p!;5B7rsW*)ulVQP;K z+RBdkXEUwm?Zj{XOUU{mpCl|SFf~hpX@tW40n)Q_{!Y(ow3E$KqK*tyl<$NCMdhh0 zXgx2y{Fjnv{SN+xg?(+?Rk)NqRKWfd3oFf;m0&8PNQjefj-4_#m%&##o751q9rfoa zjQH!qL}P(hb&i!JQ^rNri=3~V^fg*WN~3Tej!mD)ahGIL230-DQ#PA;4=IewVn-vv zLQ>FOh#TqO5Gz|&qxX*AOktEcWV(~9qSzZ$@pPQ?_aEtWFB%*-Af)cG!_P7 z^p3~gamvgUF6Ew3_fV{@Bb#xlH0GaKNv7+`Ojoi$%6wWDzZDv4dXHGt)g(t{+!{_a zz%L>IT}Ea6ulWu-xKSQts5P)99=q-`H%b17N%6*^?`7^sE9eZj9IT)R{ zgSLzrF5#eOfoI7?$PE|^>)K1Ph%2K55%JsO2d%x$*3^Hj#! zyhJ_xGIH7q)k$r%D`SoQ{x!Ee7`C8onYu+8MO8hP1lG}Xh;jpMD7MSvBS_O|TGr;}qnvnJeHtGm|tTb7pIyCh2j9t&bIt^R^plk?Lr3R39@9 z%ITJ3IvA*KCkv3%=3z^eqjC5%#dkn|S^@VjH2H_3)up?OLRTDdk?+1tc@;_lR zkP|4ueYK-doAk)`VPM5y-|~YOVFQBx4Rz8P_q7ISKBQMG>Vj8Ha+MzA^!JjDH`p9PrOsCNW zOP3|ME*g%}MESQpBdbWqf`ck?t@r}OCi*H%@kX9WDDs2nd*UcG+53c- zDULmnG&!a<+8s@hVS1whxq$?d zRs2d)kQ=7^;k}6|jd81P-@qe^BQL_9&U8h)qo*V@E)~-mI5`#Mjp_FHZ&V= zh@HNf;^9Heb~WLcy}(jMMZiIw)rC+DpXQf8g6ZO%`;^35`$8kK3W@v|`o_9FyuME* zj+p&>P-ndcdEbL|y zVIRhhB$aW$reMIH+QUV0UyA8# zQ2r9ki<3WMiCxHX%b}H>`$|{9`;&rhWBz!^x?(D$ysl_QSEckHVhg$b5{>IEQ@+%#oEJGjzyQvC~0*o4LB+BU)V;6T8fU zo?@IM;>|ZCTbd$`SY+#vk25sSy~{5bf>vp9mK%1W_~KFdvB2(3B|EFTb4JtZf;oM&fFMGZoZ{Ep+bim1ueO*{XaP zw9xV?5gv8%LZoI$@x-DV!!gZD1Gg9W*19(a#SI}+c-n#k+Hm}uZ>pINHk t`o+6?#r5bv`~CR&e|rMNCiGgbShC+Hj`8LcEdO47`?g(M3xC4@{68I^m`MNt literal 0 HcmV?d00001 -- 2.25.1 From b28f531c8abee4e7c42e52b6f544abc08881f891 Mon Sep 17 00:00:00 2001 From: ChipsEater Date: Tue, 13 Sep 2022 15:37:35 +0400 Subject: [PATCH 5/9] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SelfPropelledArtilleryUnit/FormArtillery.Designer.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/SelfPropelledArtilleryUnit/FormArtillery.Designer.cs b/SelfPropelledArtilleryUnit/FormArtillery.Designer.cs index 4248cdf..04e9c76 100644 --- a/SelfPropelledArtilleryUnit/FormArtillery.Designer.cs +++ b/SelfPropelledArtilleryUnit/FormArtillery.Designer.cs @@ -86,6 +86,7 @@ this.pictureBoxArtilleries.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.pictureBoxArtilleries.TabIndex = 1; this.pictureBoxArtilleries.TabStop = false; + this.pictureBoxArtilleries.SizeChanged += new System.EventHandler(this.pictureBoxArtilleries_Resize); // // buttonCreate // @@ -100,6 +101,7 @@ // // buttonLeft // + this.buttonLeft.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.buttonLeft.BackgroundImage = global::SelfPropelledArtilleryUnit.Properties.Resources.ArrowLeft; this.buttonLeft.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; this.buttonLeft.Location = new System.Drawing.Point(509, 375); @@ -111,6 +113,7 @@ // // buttonUp // + this.buttonUp.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.buttonUp.BackgroundImage = global::SelfPropelledArtilleryUnit.Properties.Resources.ArrowUp; this.buttonUp.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; this.buttonUp.Location = new System.Drawing.Point(543, 342); @@ -122,6 +125,7 @@ // // buttonDown // + this.buttonDown.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.buttonDown.BackgroundImage = global::SelfPropelledArtilleryUnit.Properties.Resources.ArrowDown; this.buttonDown.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; this.buttonDown.Location = new System.Drawing.Point(543, 375); @@ -133,6 +137,7 @@ // // buttonRight // + this.buttonRight.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.buttonRight.BackgroundImage = global::SelfPropelledArtilleryUnit.Properties.Resources.ArrowRight; this.buttonRight.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; this.buttonRight.Location = new System.Drawing.Point(579, 375); -- 2.25.1 From 8854e0fda17ff4d54dd3b79e18e73b918edfbce5 Mon Sep 17 00:00:00 2001 From: ChipsEater Date: Tue, 13 Sep 2022 16:50:19 +0400 Subject: [PATCH 6/9] =?UTF-8?q?=D0=A3=D0=BB=D1=83=D1=87=D1=88=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D1=80=D0=B8=D1=81=D0=BE=D0=B2=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SelfPropelledArtilleryUnit/DrawingArtillery.cs | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/SelfPropelledArtilleryUnit/DrawingArtillery.cs b/SelfPropelledArtilleryUnit/DrawingArtillery.cs index dd8ee81..bc793c4 100644 --- a/SelfPropelledArtilleryUnit/DrawingArtillery.cs +++ b/SelfPropelledArtilleryUnit/DrawingArtillery.cs @@ -84,14 +84,15 @@ namespace Artilleries g.FillRectangle(brush, _startPosX + _artilleryWidth / 8 * 2, _startPosY, _artilleryWidth / 8 * 4, _artilleryWidth / 5); g.FillRectangle(brush, _startPosX, _startPosY + _artilleryHeight / 5, _artilleryWidth, _artilleryHeight / 3); - Pen blackPen = new(Color.Black); - g.DrawEllipse(blackPen, _startPosX, _startPosY + _artilleryHeight * 2 / 5, _artilleryWidth, _artilleryHeight * 2 / 5); - g.DrawEllipse(blackPen, _startPosX + _artilleryWidth / 20, _startPosY + _artilleryHeight * 7 / 15, _artilleryWidth * 4 / 20, _artilleryHeight * 10 / 32); - g.DrawEllipse(blackPen, _startPosX + _artilleryWidth * 5 / 20, _startPosY + _artilleryHeight * 9 / 16, _artilleryWidth * 3 / 20, _artilleryHeight * 8 / 32); - g.DrawEllipse(blackPen, _startPosX + _artilleryWidth * 8 / 20, _startPosY + _artilleryHeight * 10 / 16, _artilleryWidth * 2 / 20, _artilleryHeight * 6 / 32); - g.DrawEllipse(blackPen, _startPosX + _artilleryWidth * 10 / 20, _startPosY + _artilleryHeight * 10 / 16, _artilleryWidth * 2 / 20, _artilleryHeight * 6 / 32); - g.DrawEllipse(blackPen, _startPosX + _artilleryWidth * 12 / 20, _startPosY + _artilleryHeight * 9 / 16, _artilleryWidth * 3 / 20, _artilleryHeight * 8 / 32); - g.DrawEllipse(blackPen, _startPosX + _artilleryWidth * 15 / 20, _startPosY + _artilleryHeight * 7 / 15, _artilleryWidth * 4 / 20, _artilleryHeight * 10 / 32); + Brush blackBrush = new SolidBrush(Color.Black); + Brush grayBrush = new SolidBrush(Color.Gray); + g.FillEllipse(grayBrush, _startPosX, _startPosY + _artilleryHeight * 2 / 5, _artilleryWidth, _artilleryHeight * 2 / 5); + g.FillEllipse(blackBrush, _startPosX + _artilleryWidth / 20, _startPosY + _artilleryHeight * 7 / 15, _artilleryWidth * 4 / 20, _artilleryHeight * 10 / 32); + g.FillEllipse(blackBrush, _startPosX + _artilleryWidth * 5 / 20, _startPosY + _artilleryHeight * 9 / 16, _artilleryWidth * 3 / 20, _artilleryHeight * 8 / 32); + g.FillEllipse(blackBrush, _startPosX + _artilleryWidth * 8 / 20, _startPosY + _artilleryHeight * 10 / 16, _artilleryWidth * 2 / 20, _artilleryHeight * 6 / 32); + g.FillEllipse(blackBrush, _startPosX + _artilleryWidth * 10 / 20, _startPosY + _artilleryHeight * 10 / 16, _artilleryWidth * 2 / 20, _artilleryHeight * 6 / 32); + g.FillEllipse(blackBrush, _startPosX + _artilleryWidth * 12 / 20, _startPosY + _artilleryHeight * 9 / 16, _artilleryWidth * 3 / 20, _artilleryHeight * 8 / 32); + g.FillEllipse(blackBrush, _startPosX + _artilleryWidth * 15 / 20, _startPosY + _artilleryHeight * 7 / 15, _artilleryWidth * 4 / 20, _artilleryHeight * 10 / 32); } public void ChangeBorders(int width, int height) -- 2.25.1 From fb8fb88b9196d64ada3d77f09bd4c0a55a8b9083 Mon Sep 17 00:00:00 2001 From: ChipsEater Date: Tue, 13 Sep 2022 17:13:15 +0400 Subject: [PATCH 7/9] =?UTF-8?q?=D0=94=D0=BE=D0=BF.=20=D0=B7=D0=B0=D0=B4?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SelfPropelledArtilleryUnit/FormArtillery.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/SelfPropelledArtilleryUnit/FormArtillery.cs b/SelfPropelledArtilleryUnit/FormArtillery.cs index b053a9a..0335929 100644 --- a/SelfPropelledArtilleryUnit/FormArtillery.cs +++ b/SelfPropelledArtilleryUnit/FormArtillery.cs @@ -21,10 +21,10 @@ namespace Artilleries Random rnd = new(); _artillery = new DrawingArtillery(); _artillery.Init(rnd.Next(100, 300), rnd.Next(1000, 2000), Color.FromArgb(rnd.Next(0, 256), rnd.Next(0, 256), rnd.Next(0, 256))); - _artillery.SetPosition(rnd.Next(10, 100), rnd.Next(10, 100), pictureBoxArtilleries.Width, pictureBoxArtilleries.Height); - SpeedStatusLabel.Text = $": {_artillery.Artillery.Speed}"; - WeightStatusLabel.Text = $": {_artillery.Artillery.Weight}"; - ColorStatusLabel.Text = $": {_artillery.Artillery.BodyColor.Name}"; + _artillery.SetPosition(rnd.Next(pictureBoxArtilleries.Width - 161, pictureBoxArtilleries.Width - 81), rnd.Next(10, 100), pictureBoxArtilleries.Width, pictureBoxArtilleries.Height); + SpeedStatusLabel.Text = $"Скорость: {_artillery.Artillery.Speed}"; + WeightStatusLabel.Text = $"Вес: {_artillery.Artillery.Weight}"; + ColorStatusLabel.Text = $"Цвет: {_artillery.Artillery.BodyColor.Name}"; Draw(); } -- 2.25.1 From 639dd899ee21b1d114da814abb4bf15d33500dc4 Mon Sep 17 00:00:00 2001 From: ChipsEater Date: Tue, 13 Sep 2022 17:14:17 +0400 Subject: [PATCH 8/9] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SelfPropelledArtilleryUnit/FormArtillery.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/SelfPropelledArtilleryUnit/FormArtillery.cs b/SelfPropelledArtilleryUnit/FormArtillery.cs index 0335929..5d415c5 100644 --- a/SelfPropelledArtilleryUnit/FormArtillery.cs +++ b/SelfPropelledArtilleryUnit/FormArtillery.cs @@ -22,9 +22,9 @@ namespace Artilleries _artillery = new DrawingArtillery(); _artillery.Init(rnd.Next(100, 300), rnd.Next(1000, 2000), Color.FromArgb(rnd.Next(0, 256), rnd.Next(0, 256), rnd.Next(0, 256))); _artillery.SetPosition(rnd.Next(pictureBoxArtilleries.Width - 161, pictureBoxArtilleries.Width - 81), rnd.Next(10, 100), pictureBoxArtilleries.Width, pictureBoxArtilleries.Height); - SpeedStatusLabel.Text = $"Скорость: {_artillery.Artillery.Speed}"; - WeightStatusLabel.Text = $"Вес: {_artillery.Artillery.Weight}"; - ColorStatusLabel.Text = $"Цвет: {_artillery.Artillery.BodyColor.Name}"; + SpeedStatusLabel.Text = $"Скорость: {_artillery.Artillery.Speed}"; + WeightStatusLabel.Text = $"Вес: {_artillery.Artillery.Weight}"; + ColorStatusLabel.Text = $"Цвет: {_artillery.Artillery.BodyColor.Name}"; Draw(); } -- 2.25.1 From 13a011a189ac8823261995b9a0457caae0bbd7b8 Mon Sep 17 00:00:00 2001 From: ChipsEater Date: Tue, 13 Sep 2022 17:17:04 +0400 Subject: [PATCH 9/9] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SelfPropelledArtilleryUnit/FormArtillery.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/SelfPropelledArtilleryUnit/FormArtillery.cs b/SelfPropelledArtilleryUnit/FormArtillery.cs index 5d415c5..718c34a 100644 --- a/SelfPropelledArtilleryUnit/FormArtillery.cs +++ b/SelfPropelledArtilleryUnit/FormArtillery.cs @@ -8,6 +8,7 @@ namespace Artilleries { InitializeComponent(); } + private void Draw() { Bitmap bmp = new(pictureBoxArtilleries.Width, pictureBoxArtilleries.Height); -- 2.25.1