From 9512284e54a3d58d8df828df66599c413affec3e Mon Sep 17 00:00:00 2001 From: YourDax Date: Wed, 11 Oct 2023 03:10:41 +0400 Subject: [PATCH 1/5] Done --- .../AntiAirCraftGun/AntiAirCraftGun.csproj | 15 ++ .../AntiAircraftGun.sln} | 14 +- .../AntiAirCraftGun/DirectionType.cs | 29 +++ .../AntiAirCraftGun/DrawingAntiAirCraftGun.cs | 169 ++++++++++++++++++ .../AntiAirCraftGun/EntityAntiAircraftGun.cs | 46 +++++ .../AntiAirCraftGun/Form1.Designer.cs | 39 ---- AntiAirCraftGun/AntiAirCraftGun/Form1.cs | 10 -- .../FormAntiAirCraftGun.Designer.cs | 137 ++++++++++++++ .../AntiAirCraftGun/FormAntiAirCraftGun.cs | 114 ++++++++++++ .../AntiAirCraftGun/FormAntiAirCraftGun.resx | 60 +++++++ AntiAirCraftGun/AntiAirCraftGun/Program.cs | 30 ++-- .../Properties/Resources.Designer.cs | 103 +++++++++++ .../{Form1.resx => Properties/Resources.resx} | 13 ++ .../AntiAirCraftGun/Resources/strelkaDown.png | Bin 0 -> 39127 bytes .../AntiAirCraftGun/Resources/strelkaLeft.png | Bin 0 -> 38982 bytes .../Resources/strelkaRight.png | Bin 0 -> 1365 bytes .../AntiAirCraftGun/Resources/strelkaTop.png | Bin 0 -> 38632 bytes AntiAirCraftGun/AntiAirCraftGun/Vopros.cs | 20 +++ 18 files changed, 728 insertions(+), 71 deletions(-) rename AntiAirCraftGun/{AntiAirCraftGun.sln => AntiAirCraftGun/AntiAircraftGun.sln} (55%) create mode 100644 AntiAirCraftGun/AntiAirCraftGun/DirectionType.cs create mode 100644 AntiAirCraftGun/AntiAirCraftGun/DrawingAntiAirCraftGun.cs create mode 100644 AntiAirCraftGun/AntiAirCraftGun/EntityAntiAircraftGun.cs delete mode 100644 AntiAirCraftGun/AntiAirCraftGun/Form1.Designer.cs delete mode 100644 AntiAirCraftGun/AntiAirCraftGun/Form1.cs create mode 100644 AntiAirCraftGun/AntiAirCraftGun/FormAntiAirCraftGun.Designer.cs create mode 100644 AntiAirCraftGun/AntiAirCraftGun/FormAntiAirCraftGun.cs create mode 100644 AntiAirCraftGun/AntiAirCraftGun/FormAntiAirCraftGun.resx create mode 100644 AntiAirCraftGun/AntiAirCraftGun/Properties/Resources.Designer.cs rename AntiAirCraftGun/AntiAirCraftGun/{Form1.resx => Properties/Resources.resx} (83%) create mode 100644 AntiAirCraftGun/AntiAirCraftGun/Resources/strelkaDown.png create mode 100644 AntiAirCraftGun/AntiAirCraftGun/Resources/strelkaLeft.png create mode 100644 AntiAirCraftGun/AntiAirCraftGun/Resources/strelkaRight.png create mode 100644 AntiAirCraftGun/AntiAirCraftGun/Resources/strelkaTop.png create mode 100644 AntiAirCraftGun/AntiAirCraftGun/Vopros.cs diff --git a/AntiAirCraftGun/AntiAirCraftGun/AntiAirCraftGun.csproj b/AntiAirCraftGun/AntiAirCraftGun/AntiAirCraftGun.csproj index b57c89e..13ee123 100644 --- a/AntiAirCraftGun/AntiAirCraftGun/AntiAirCraftGun.csproj +++ b/AntiAirCraftGun/AntiAirCraftGun/AntiAirCraftGun.csproj @@ -8,4 +8,19 @@ enable + + + True + True + Resources.resx + + + + + + ResXFileCodeGenerator + Resources.Designer.cs + + + \ No newline at end of file diff --git a/AntiAirCraftGun/AntiAirCraftGun.sln b/AntiAirCraftGun/AntiAirCraftGun/AntiAircraftGun.sln similarity index 55% rename from AntiAirCraftGun/AntiAirCraftGun.sln rename to AntiAirCraftGun/AntiAirCraftGun/AntiAircraftGun.sln index 53fb493..22b9abd 100644 --- a/AntiAirCraftGun/AntiAirCraftGun.sln +++ b/AntiAirCraftGun/AntiAirCraftGun/AntiAircraftGun.sln @@ -1,9 +1,9 @@  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 -VisualStudioVersion = 17.4.33110.190 +VisualStudioVersion = 17.5.33530.505 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AntiAirCraftGun", "AntiAirCraftGun\AntiAirCraftGun.csproj", "{FB18B709-9154-45E0-8BD8-28822B29FB4B}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AntiAircraftGun", "AntiAircraftGun.csproj", "{40C43023-14E0-4146-82EE-7A5A7384992F}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -11,15 +11,15 @@ Global Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {FB18B709-9154-45E0-8BD8-28822B29FB4B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FB18B709-9154-45E0-8BD8-28822B29FB4B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FB18B709-9154-45E0-8BD8-28822B29FB4B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FB18B709-9154-45E0-8BD8-28822B29FB4B}.Release|Any CPU.Build.0 = Release|Any CPU + {40C43023-14E0-4146-82EE-7A5A7384992F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {40C43023-14E0-4146-82EE-7A5A7384992F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {40C43023-14E0-4146-82EE-7A5A7384992F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {40C43023-14E0-4146-82EE-7A5A7384992F}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {EB48B08E-3934-47B3-94AF-DF58D18CDB32} + SolutionGuid = {990D8FF3-8567-49C7-90F4-1811AB7EB423} EndGlobalSection EndGlobal diff --git a/AntiAirCraftGun/AntiAirCraftGun/DirectionType.cs b/AntiAirCraftGun/AntiAirCraftGun/DirectionType.cs new file mode 100644 index 0000000..4a2f95d --- /dev/null +++ b/AntiAirCraftGun/AntiAirCraftGun/DirectionType.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace AntiAircraftGun +{ + public enum DirectionType + { + /// + /// Вверх + /// + Up = 1, + /// + /// Вниз + /// + Down = 2, + /// + /// Влево + /// + Left = 3, + /// + /// Вправо + /// + Right = 4 + + } +} diff --git a/AntiAirCraftGun/AntiAirCraftGun/DrawingAntiAirCraftGun.cs b/AntiAirCraftGun/AntiAirCraftGun/DrawingAntiAirCraftGun.cs new file mode 100644 index 0000000..68ac91f --- /dev/null +++ b/AntiAirCraftGun/AntiAirCraftGun/DrawingAntiAirCraftGun.cs @@ -0,0 +1,169 @@ +using System; +using System.Collections.Generic; +using System.Drawing.Drawing2D; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static System.Windows.Forms.AxHost; + +namespace AntiAircraftGun +{ + public class DrawingAntiAirCraftGun + + { + private Point[] points = new Point[4]; + /// + /// Класс-сущность + /// + public EntityAntiAircraftGun? AntiAircraftGun { get; private set; } + /// + /// Ширина окна + /// + private int _pictureWidth; + /// + /// Высота окна + /// + private int _pictureHeight; + /// + /// Левая координата прорисовки автомобиля + /// + private int _startPosX; + /// + /// Верхняя кооридната прорисовки автомобиля + /// + private int _startPosY; + /// + /// Ширина прорисовки автомобиля + /// + private readonly int _carWidth = 110; + /// + /// Высота прорисовки автомобиля + /// + private readonly int _carHeight = 60; + /// + /// Инициализация свойств + /// + /// Скорость + /// Вес + /// Цвет кузова + + /// Ширина картинки + /// Высота картинки + /// true - объект создан, false - проверка не пройдена, + ///нельзя создать объект в этих размерах + public bool Init(int speed, double weight, Color bodyColor, Color + additionalColor, int width, int height) + { + // TODO: Продумать проверки + _pictureWidth = width; + _pictureHeight = height; + AntiAircraftGun = new EntityAntiAircraftGun(); + AntiAircraftGun.Init(speed, weight, bodyColor, additionalColor); + return true; + } + /// + /// Установка позиции + /// + /// Координата X + /// Координата Y + public void SetPosition(int x, int y) + { + // TODO: Изменение x, y + _startPosX = x; + _startPosY = y; + } + /// + /// Изменение направления перемещения + /// + /// Направление + public void MoveTransport(DirectionType direction) + { + if (AntiAircraftGun == null) + { + return; + } + + FormAntiAirCraftGun form1 = new FormAntiAirCraftGun(); + Size windowSize = form1.Size; + int windowWidth = windowSize.Width; + int windowHeight = windowSize.Height; + + // Теперь вы можете получить ширину и высоту отдельно, если это необходимо + + switch (direction) + { + //влево + case DirectionType.Left: + if (_startPosX - AntiAircraftGun.Step > 0) + { + _startPosX -= (int)AntiAircraftGun.Step; + } + break; + //вверх + case DirectionType.Up: + if (_startPosY - AntiAircraftGun.Step > 0) + { + _startPosY -= (int)AntiAircraftGun.Step; + } + break; + // вправо + case DirectionType.Right: + if (_startPosX + AntiAircraftGun.Step < windowWidth-150) + { + _startPosX += (int)AntiAircraftGun.Step; + } + break; + //вниз + case DirectionType.Down: + if (_startPosY + AntiAircraftGun.Step < windowHeight-100) + { + _startPosY += (int)AntiAircraftGun.Step; + } + break; + } + } + /// + /// Прорисовка объекта + /// + /// + public void DrawTransport(Graphics g) + { + if (AntiAircraftGun == null) + { + return; + } + Pen pen = new(Color.Black); + Brush bodyBrush = new SolidBrush(AntiAircraftGun.BodyColor); + Brush additionalBrush = new SolidBrush(AntiAircraftGun.AdditionalColor); + + // Нарисовать гусеницы + g.FillEllipse(additionalBrush, _startPosX, _startPosY+40, 110, 10); + g.DrawEllipse(pen, _startPosX, _startPosY+40, 110, 10); + g.FillRectangle(bodyBrush, _startPosX, _startPosY+30, 110, 10); + g.DrawRectangle(pen, _startPosX, _startPosY+30, 110, 10); + g.FillRectangle(bodyBrush, _startPosX+80, _startPosY+10, 30, 20); + g.DrawRectangle(pen, _startPosX+80, _startPosY+10, 30, 20); + + points[0] = new Point(_startPosX, _startPosY+30); + points[1] = new Point(_startPosX+95, _startPosY+5); + points[2] = new Point(_startPosX+92, _startPosY); + points[3] = new Point(_startPosX, _startPosY+25); + g.FillPolygon(additionalBrush, points); + g.DrawPolygon(pen, points); + //g.DrawLine(pen, _startPosX, _startPosY+30, _startPosX+95,_startPosY+5 ); + //g.DrawLine(pen, _startPosX+95, _startPosY+5, _startPosX+92, _startPosY); + //g.DrawLine(pen, _startPosX+92, _startPosY, _startPosX, _startPosY+26); + //g.DrawLine(pen, _startPosX, _startPosY+26, _startPosX, _startPosY+30); + for (int i = 0; i < 4; i++) + { + Rectangle trackRect = new Rectangle(_startPosX+20 + i*19, _startPosY+40,10, 10); + g.DrawEllipse(pen, trackRect); + g.FillEllipse(Brushes.Black, trackRect); + } + + + + } + } +} + diff --git a/AntiAirCraftGun/AntiAirCraftGun/EntityAntiAircraftGun.cs b/AntiAirCraftGun/AntiAirCraftGun/EntityAntiAircraftGun.cs new file mode 100644 index 0000000..6368799 --- /dev/null +++ b/AntiAirCraftGun/AntiAirCraftGun/EntityAntiAircraftGun.cs @@ -0,0 +1,46 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace AntiAircraftGun +{ + public class EntityAntiAircraftGun + { + /// + /// Скорость + /// + public int Speed { get; private set; } + /// + /// Вес + /// + public double Weight { get; private set; } + /// + /// Основной цвет + /// + public Color BodyColor { get; private set; } + /// + /// Дополнительный цвет (для опциональных элементов) + /// + public Color AdditionalColor { get; private set; } + /// + /// Шаг перемещения автомобиля + /// + public double Step => (double)Speed * 100 / Weight; + /// + /// Инициализация полей объекта-класса спортивного автомобиля + /// + /// Скорость + /// Вес автомобиля + /// Основной цвет + + public void Init(int speed, double weight, Color bodyColor, Color additionalColor) + { + Speed = speed; + Weight = weight; + BodyColor = bodyColor; + AdditionalColor = additionalColor; + } + } +} diff --git a/AntiAirCraftGun/AntiAirCraftGun/Form1.Designer.cs b/AntiAirCraftGun/AntiAirCraftGun/Form1.Designer.cs deleted file mode 100644 index 17bdc19..0000000 --- a/AntiAirCraftGun/AntiAirCraftGun/Form1.Designer.cs +++ /dev/null @@ -1,39 +0,0 @@ -namespace AntiAirCraftGun -{ - partial class Form1 - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.components = new System.ComponentModel.Container(); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(800, 450); - this.Text = "Form1"; - } - - #endregion - } -} \ No newline at end of file diff --git a/AntiAirCraftGun/AntiAirCraftGun/Form1.cs b/AntiAirCraftGun/AntiAirCraftGun/Form1.cs deleted file mode 100644 index d6bdcce..0000000 --- a/AntiAirCraftGun/AntiAirCraftGun/Form1.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace AntiAirCraftGun -{ - public partial class Form1 : Form - { - public Form1() - { - InitializeComponent(); - } - } -} \ No newline at end of file diff --git a/AntiAirCraftGun/AntiAirCraftGun/FormAntiAirCraftGun.Designer.cs b/AntiAirCraftGun/AntiAirCraftGun/FormAntiAirCraftGun.Designer.cs new file mode 100644 index 0000000..7990e0f --- /dev/null +++ b/AntiAirCraftGun/AntiAirCraftGun/FormAntiAirCraftGun.Designer.cs @@ -0,0 +1,137 @@ +namespace AntiAircraftGun +{ + partial class FormAntiAirCraftGun + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.pictureBoxAntiAircraftGun = new System.Windows.Forms.PictureBox(); + this.Create = new System.Windows.Forms.Button(); + this.buttonLeft = new System.Windows.Forms.Button(); + this.buttonUp = new System.Windows.Forms.Button(); + this.buttonRight = new System.Windows.Forms.Button(); + this.buttonDown = new System.Windows.Forms.Button(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxAntiAircraftGun)).BeginInit(); + this.SuspendLayout(); + // + // pictureBoxAntiAircraftGun + // + this.pictureBoxAntiAircraftGun.Dock = System.Windows.Forms.DockStyle.Fill; + this.pictureBoxAntiAircraftGun.Location = new System.Drawing.Point(0, 0); + this.pictureBoxAntiAircraftGun.Name = "pictureBoxAntiAircraftGun"; + this.pictureBoxAntiAircraftGun.Size = new System.Drawing.Size(1491, 628); + this.pictureBoxAntiAircraftGun.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; + this.pictureBoxAntiAircraftGun.TabIndex = 0; + this.pictureBoxAntiAircraftGun.TabStop = false; + // + // Create + // + this.Create.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.Create.Location = new System.Drawing.Point(32, 577); + this.Create.Name = "Create"; + this.Create.Size = new System.Drawing.Size(75, 23); + this.Create.TabIndex = 1; + this.Create.Text = "Создать"; + this.Create.UseVisualStyleBackColor = true; + this.Create.Click += new System.EventHandler(this.Create_Click_1); + // + // buttonLeft + // + this.buttonLeft.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.buttonLeft.BackgroundImage = global::AntiAircraftGun.Properties.Resources.strelkaLeft; + this.buttonLeft.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; + this.buttonLeft.Location = new System.Drawing.Point(1265, 562); + this.buttonLeft.Name = "buttonLeft"; + this.buttonLeft.Size = new System.Drawing.Size(30, 30); + this.buttonLeft.TabIndex = 2; + this.buttonLeft.UseVisualStyleBackColor = true; + this.buttonLeft.Click += new System.EventHandler(this.ButtonMove_Click); + // + // buttonUp + // + this.buttonUp.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.buttonUp.BackgroundImage = global::AntiAircraftGun.Properties.Resources.strelkaTop; + this.buttonUp.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; + this.buttonUp.Location = new System.Drawing.Point(1301, 526); + this.buttonUp.Name = "buttonUp"; + this.buttonUp.Size = new System.Drawing.Size(30, 30); + this.buttonUp.TabIndex = 3; + this.buttonUp.UseVisualStyleBackColor = true; + this.buttonUp.Click += new System.EventHandler(this.ButtonMove_Click); + // + // buttonRight + // + this.buttonRight.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.buttonRight.BackgroundImage = global::AntiAircraftGun.Properties.Resources.strelkaRight; + this.buttonRight.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; + this.buttonRight.Location = new System.Drawing.Point(1337, 562); + this.buttonRight.Name = "buttonRight"; + this.buttonRight.Size = new System.Drawing.Size(30, 30); + this.buttonRight.TabIndex = 4; + this.buttonRight.UseVisualStyleBackColor = true; + this.buttonRight.Click += new System.EventHandler(this.ButtonMove_Click); + // + // buttonDown + // + this.buttonDown.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.buttonDown.BackgroundImage = global::AntiAircraftGun.Properties.Resources.strelkaDown; + this.buttonDown.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; + this.buttonDown.Location = new System.Drawing.Point(1301, 562); + 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); + // + // Form1 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(1491, 628); + this.Controls.Add(this.buttonDown); + this.Controls.Add(this.buttonRight); + this.Controls.Add(this.buttonUp); + this.Controls.Add(this.buttonLeft); + this.Controls.Add(this.Create); + this.Controls.Add(this.pictureBoxAntiAircraftGun); + this.Name = "Form1"; + this.Text = "Form1"; + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxAntiAircraftGun)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private PictureBox pictureBoxAntiAircraftGun; + private Button Create; + private Button buttonLeft; + private Button buttonUp; + private Button buttonRight; + private Button buttonDown; + } +} \ No newline at end of file diff --git a/AntiAirCraftGun/AntiAirCraftGun/FormAntiAirCraftGun.cs b/AntiAirCraftGun/AntiAirCraftGun/FormAntiAirCraftGun.cs new file mode 100644 index 0000000..895da78 --- /dev/null +++ b/AntiAirCraftGun/AntiAirCraftGun/FormAntiAirCraftGun.cs @@ -0,0 +1,114 @@ +namespace AntiAircraftGun +{ + public partial class FormAntiAirCraftGun : Form + { + /// + /// - + /// + private DrawingAntiAirCraftGun? _drawing; + public FormAntiAirCraftGun() + { + InitializeComponent(); + } + private void Move_Click(object sender, EventArgs e) + { + if (_drawing == null) + { + return; + } + string name = ((Button)sender)?.Name ?? string.Empty; + switch (name) + { + case "buttonUp": + _drawing.MoveTransport(DirectionType.Up); + break; + case "buttonDown": + _drawing.MoveTransport(DirectionType.Down); + break; + case "buttonLeft": + _drawing.MoveTransport(DirectionType.Left); + break; + case "buttonRight": + _drawing.MoveTransport(DirectionType.Right); + break; + } + Draw(); + } + + + + /// + /// + /// + /// + /// + + private void pictureBoxZenit_Click(object sender, EventArgs e) + { + + } + /// + /// + /// + private void Draw() + { + if (_drawing == null) + { + return; + } + Bitmap bmp = new(pictureBoxAntiAircraftGun.Width,pictureBoxAntiAircraftGun.Height); + Graphics gr = Graphics.FromImage(bmp); + _drawing.DrawTransport(gr); + pictureBoxAntiAircraftGun.Image = bmp; + } + + /// + /// + /// + /// + /// + private void ButtonMove_Click(object sender, EventArgs e) + { + if (_drawing == null) + { + return; + } + string name = ((Button)sender)?.Name ?? string.Empty; + switch (name) + { + case "buttonUp": + _drawing.MoveTransport(DirectionType.Up); + break; + case "buttonDown": + _drawing.MoveTransport(DirectionType.Down); + break; + case "buttonLeft": + _drawing.MoveTransport(DirectionType.Left); + break; + case "buttonRight": + _drawing.MoveTransport(DirectionType.Right); + break; + } + Draw(); + } + + private void Create_Click_1(object sender, EventArgs e) + { + Random random = new(); + _drawing = new DrawingAntiAirCraftGun(); + _drawing.Init(random.Next(100, 300),//c + 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)), + + pictureBoxAntiAircraftGun.Width, pictureBoxAntiAircraftGun.Height); + _drawing.SetPosition(random.Next(10, 100), + random.Next(10, 100)); + + + Draw(); + } + } +} \ No newline at end of file diff --git a/AntiAirCraftGun/AntiAirCraftGun/FormAntiAirCraftGun.resx b/AntiAirCraftGun/AntiAirCraftGun/FormAntiAirCraftGun.resx new file mode 100644 index 0000000..f298a7b --- /dev/null +++ b/AntiAirCraftGun/AntiAirCraftGun/FormAntiAirCraftGun.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/AntiAirCraftGun/AntiAirCraftGun/Program.cs b/AntiAirCraftGun/AntiAirCraftGun/Program.cs index 17037d6..2be25a2 100644 --- a/AntiAirCraftGun/AntiAirCraftGun/Program.cs +++ b/AntiAirCraftGun/AntiAirCraftGun/Program.cs @@ -1,17 +1,17 @@ -namespace AntiAirCraftGun +namespace AntiAircraftGun { - 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 Form1()); - } - } + 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 FormAntiAirCraftGun()); + } + } } \ No newline at end of file diff --git a/AntiAirCraftGun/AntiAirCraftGun/Properties/Resources.Designer.cs b/AntiAirCraftGun/AntiAirCraftGun/Properties/Resources.Designer.cs new file mode 100644 index 0000000..417c06d --- /dev/null +++ b/AntiAirCraftGun/AntiAirCraftGun/Properties/Resources.Designer.cs @@ -0,0 +1,103 @@ +//------------------------------------------------------------------------------ +// +// Этот код создан программой. +// Исполняемая версия:4.0.30319.42000 +// +// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае +// повторной генерации кода. +// +//------------------------------------------------------------------------------ + +namespace AntiAircraftGun.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("AntiAircraftGun.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 strelkaDown { + get { + object obj = ResourceManager.GetObject("strelkaDown", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap strelkaLeft { + get { + object obj = ResourceManager.GetObject("strelkaLeft", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap strelkaRight { + get { + object obj = ResourceManager.GetObject("strelkaRight", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap strelkaTop { + get { + object obj = ResourceManager.GetObject("strelkaTop", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} diff --git a/AntiAirCraftGun/AntiAirCraftGun/Form1.resx b/AntiAirCraftGun/AntiAirCraftGun/Properties/Resources.resx similarity index 83% rename from AntiAirCraftGun/AntiAirCraftGun/Form1.resx rename to AntiAirCraftGun/AntiAirCraftGun/Properties/Resources.resx index 1af7de1..6d5810c 100644 --- a/AntiAirCraftGun/AntiAirCraftGun/Form1.resx +++ b/AntiAirCraftGun/AntiAirCraftGun/Properties/Resources.resx @@ -117,4 +117,17 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\strelkaDown.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\strelkaTop.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\strelkaLeft.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\strelkaRight.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/AntiAirCraftGun/AntiAirCraftGun/Resources/strelkaDown.png b/AntiAirCraftGun/AntiAirCraftGun/Resources/strelkaDown.png new file mode 100644 index 0000000000000000000000000000000000000000..d9ad0dd7ca24db536fc32afe0f8bea807b7299fb GIT binary patch literal 39127 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≻YZ+^&8C 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 literal 0 HcmV?d00001 diff --git a/AntiAirCraftGun/AntiAirCraftGun/Resources/strelkaRight.png b/AntiAirCraftGun/AntiAirCraftGun/Resources/strelkaRight.png new file mode 100644 index 0000000000000000000000000000000000000000..69bd44fa391f5ac37065270141500283b73c7ac7 GIT binary patch literal 1365 zcmX9;ZBSE36b%7ILP!F&5a}Zcm;g44s4!4SAjx}tgi#cAL`#FhK#ip$$O8gVBw~_> z6oe>)wIdLOsSYK6R6rwN0!p=wn4aHq^TIh2q-=ucB79p}=7Z;twJ3998}EK|*Po{edvI}leFuZx@8K{}erJWHKO z4d`>}liut-llJh`q1oEX2MVn7GulGm9w6 z9gCna4y_ejk7w!A z1IdznI$eLgBmllHZ!(P(%t@3Z0XDC`Bs+T`SazdAx)o|o?ian%Xl5e+wiT}o`I@C) zrdbO+v6HYzJzZ#nq+XlF5`$x;toMIfvNntb*vNlQId7;y5?kGo^u2jk(bELOy7Cll z5z!D@pW;*7PBf%89>7d~kI*S^fn`^c3~TQGCOmM6%L#S!K%`ZO^s>OhFNd@VtYT5C zK%*>kMRa^Jc>#*av4JV<16bSRU_37aYwDgx6KyVy$F6yL4~vGza-7xa3brGzhfcvJ zd#pqXyg0WAMlS8VoDSqS`dhQCXas|>P+GO((s)sFnUol2ukp2tVWl;hv>P+xv^eD- z7;}hu4eY?~bn^r<`Rc{Um~T!0>R6vDUcciSw{C!B3(1$&z2y!D!yj-Yww~Y8CmImA zs3=6JN}y3uNYEH#xq6la9a6BV?JXrdi_wp0=yx#)71(6uK?dGa>h^0T7jR9o8$(^y81O=pR=) z&*WU^ zqjH3dB~6A;Vl$BfCa~rrd9;H7f1r8qs=hTjzRyMx)Gs?iwtuEz?8)Hl({ms2=hNrm zzd7vwkJ-}Mh8K1w$KV4uZubBakEB#!b>`CD@)HFz!SEsalT3~U0!l@I2n6000lz>% zk`i!@1b$Zmh3_uJ6}jE4q1>pr@~*2w+3{NSN>}PhYya(-{|g!UOaY}77}^48%7CaE zGL`Q@mH5nGK})95xSHMXC+5fBE19sX)qRB+vus7j@{m=Gd>59{oiXRlgLn3TOFa8f z=H%mP^w(*WlW{_OdPHkJ@`q1+*m!}ll>?5 z;|@#c0k?L8t#QwNVJ9FCa}BOT-!izl9W}H1QR+)&Y&U4Xfd_BoS=c;S#|^M}eFW{S zE}Dsw2lC)`&wOE859ov6LV^Y*@l#phM^E$Pr;5tHlVK6Kk5pwW?lNhb z3=_*R$>A%*ACCnVGBgkF3j41h0&tkITFMX Kv5-!*@A&`QD|Z|K literal 0 HcmV?d00001 diff --git a/AntiAirCraftGun/AntiAirCraftGun/Resources/strelkaTop.png b/AntiAirCraftGun/AntiAirCraftGun/Resources/strelkaTop.png new file mode 100644 index 0000000000000000000000000000000000000000..300de92e5804212bc8de78b606dbcd2e2bb7a0ec GIT binary patch literal 38632 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 Date: Wed, 11 Oct 2023 03:25:57 +0400 Subject: [PATCH 2/5] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB?= =?UTF-8?q?=202=20=D1=81=D0=B2=D0=BE=D0=B9=D1=81=D1=82=D0=B2=D0=B0-=D0=BF?= =?UTF-8?q?=D1=80=D0=B8=D0=B7=D0=BD=D0=B0=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AntiAirCraftGun/DrawingAntiAirCraftGun.cs | 42 ++++++++++++------- .../AntiAirCraftGun/EntityAntiAircraftGun.cs | 11 ++++- .../AntiAirCraftGun/FormAntiAirCraftGun.cs | 4 ++ 3 files changed, 41 insertions(+), 16 deletions(-) diff --git a/AntiAirCraftGun/AntiAirCraftGun/DrawingAntiAirCraftGun.cs b/AntiAirCraftGun/AntiAirCraftGun/DrawingAntiAirCraftGun.cs index 68ac91f..e1b597f 100644 --- a/AntiAirCraftGun/AntiAirCraftGun/DrawingAntiAirCraftGun.cs +++ b/AntiAirCraftGun/AntiAirCraftGun/DrawingAntiAirCraftGun.cs @@ -52,13 +52,13 @@ namespace AntiAircraftGun /// true - объект создан, false - проверка не пройдена, ///нельзя создать объект в этих размерах public bool Init(int speed, double weight, Color bodyColor, Color - additionalColor, int width, int height) + additionalColor, Color dopColor, bool rocket, bool radar, int width, int height) { // TODO: Продумать проверки _pictureWidth = width; _pictureHeight = height; AntiAircraftGun = new EntityAntiAircraftGun(); - AntiAircraftGun.Init(speed, weight, bodyColor, additionalColor); + AntiAircraftGun.Init(speed, weight, bodyColor, additionalColor,dopColor,rocket,radar); return true; } /// @@ -136,30 +136,42 @@ namespace AntiAircraftGun Brush bodyBrush = new SolidBrush(AntiAircraftGun.BodyColor); Brush additionalBrush = new SolidBrush(AntiAircraftGun.AdditionalColor); - // Нарисовать гусеницы + g.FillEllipse(additionalBrush, _startPosX, _startPosY+40, 110, 10); g.DrawEllipse(pen, _startPosX, _startPosY+40, 110, 10); g.FillRectangle(bodyBrush, _startPosX, _startPosY+30, 110, 10); g.DrawRectangle(pen, _startPosX, _startPosY+30, 110, 10); g.FillRectangle(bodyBrush, _startPosX+80, _startPosY+10, 30, 20); g.DrawRectangle(pen, _startPosX+80, _startPosY+10, 30, 20); - - points[0] = new Point(_startPosX, _startPosY+30); - points[1] = new Point(_startPosX+95, _startPosY+5); - points[2] = new Point(_startPosX+92, _startPosY); - points[3] = new Point(_startPosX, _startPosY+25); - g.FillPolygon(additionalBrush, points); - g.DrawPolygon(pen, points); - //g.DrawLine(pen, _startPosX, _startPosY+30, _startPosX+95,_startPosY+5 ); - //g.DrawLine(pen, _startPosX+95, _startPosY+5, _startPosX+92, _startPosY); - //g.DrawLine(pen, _startPosX+92, _startPosY, _startPosX, _startPosY+26); - //g.DrawLine(pen, _startPosX, _startPosY+26, _startPosX, _startPosY+30); for (int i = 0; i < 4; i++) { - Rectangle trackRect = new Rectangle(_startPosX+20 + i*19, _startPosY+40,10, 10); + Rectangle trackRect = new Rectangle(_startPosX+20 + i*19, _startPosY+40, 10, 10); g.DrawEllipse(pen, trackRect); g.FillEllipse(Brushes.Black, trackRect); } + + + Brush dopBrush = new SolidBrush(AntiAircraftGun.DopColor); + Pen dopPen = new Pen(AntiAircraftGun.DopColor); + if (AntiAircraftGun.Rocket) + { + points[0] = new Point(_startPosX, _startPosY + 30); + points[1] = new Point(_startPosX + 95, _startPosY + 5); + points[2] = new Point(_startPosX + 92, _startPosY); + points[3] = new Point(_startPosX, _startPosY + 25); + g.FillPolygon(dopBrush, points); + g.DrawPolygon(pen, points); + } + if (AntiAircraftGun.Radar) + { + g.DrawLine(dopPen, _startPosX + 105, _startPosY + 20, _startPosX +105, _startPosY + 5); + g.FillPie(dopBrush, _startPosX + 81, _startPosY-15, 30, 30, -45, 180); + g.DrawLine(dopPen, _startPosX + 98, _startPosY, _startPosX + 93, _startPosY + 10); + g.FillEllipse(dopBrush, _startPosX + 88, _startPosY -10, 10, 10); + } + + + diff --git a/AntiAirCraftGun/AntiAirCraftGun/EntityAntiAircraftGun.cs b/AntiAirCraftGun/AntiAirCraftGun/EntityAntiAircraftGun.cs index 6368799..9e0de1e 100644 --- a/AntiAirCraftGun/AntiAirCraftGun/EntityAntiAircraftGun.cs +++ b/AntiAirCraftGun/AntiAirCraftGun/EntityAntiAircraftGun.cs @@ -28,6 +28,12 @@ namespace AntiAircraftGun /// Шаг перемещения автомобиля /// public double Step => (double)Speed * 100 / Weight; + + public Color DopColor { get; private set; } + + public bool Rocket { get; private set; } + + public bool Radar { get; private set; } /// /// Инициализация полей объекта-класса спортивного автомобиля /// @@ -35,12 +41,15 @@ namespace AntiAircraftGun /// Вес автомобиля /// Основной цвет - public void Init(int speed, double weight, Color bodyColor, Color additionalColor) + public void Init(int speed, double weight, Color bodyColor, Color additionalColor, Color dopColor, bool rocket, bool radar) { Speed = speed; Weight = weight; BodyColor = bodyColor; AdditionalColor = additionalColor; + DopColor = dopColor; + Rocket = rocket; + Radar = radar; } } } diff --git a/AntiAirCraftGun/AntiAirCraftGun/FormAntiAirCraftGun.cs b/AntiAirCraftGun/AntiAirCraftGun/FormAntiAirCraftGun.cs index 895da78..4f42f5b 100644 --- a/AntiAirCraftGun/AntiAirCraftGun/FormAntiAirCraftGun.cs +++ b/AntiAirCraftGun/AntiAirCraftGun/FormAntiAirCraftGun.cs @@ -102,6 +102,10 @@ namespace AntiAircraftGun random.Next(0, 256)), 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)), // . 2 + Convert.ToBoolean(random.Next(2)), // Rocket + Convert.ToBoolean(random.Next(2)), // Radar pictureBoxAntiAircraftGun.Width, pictureBoxAntiAircraftGun.Height); _drawing.SetPosition(random.Next(10, 100), -- 2.25.1 From b48aa06661f5c7e33e5953478f261b40c1e1d768 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9=20=D0=A2=D0=B8?= =?UTF-8?q?=D1=85=D0=BE=D0=BD=D0=B5=D0=BD=D0=BA=D0=BE=D0=B2?= Date: Wed, 11 Oct 2023 03:30:11 +0400 Subject: [PATCH 3/5] =?UTF-8?q?#=D1=82=D1=83=D1=82=20=D0=B1=D1=8B=D0=BB?= =?UTF-8?q?=D0=BE=20=D0=BA=D0=BE=D0=BD=D1=82=D1=80=D0=BE=D0=BB=D1=8C=D0=BD?= =?UTF-8?q?=D0=BE=D0=B5=20=D0=B7=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AntiAirCraftGun/AntiAirCraftGun/Vopros.cs | 20 -------------------- 1 file changed, 20 deletions(-) delete mode 100644 AntiAirCraftGun/AntiAirCraftGun/Vopros.cs diff --git a/AntiAirCraftGun/AntiAirCraftGun/Vopros.cs b/AntiAirCraftGun/AntiAirCraftGun/Vopros.cs deleted file mode 100644 index c1932e3..0000000 --- a/AntiAirCraftGun/AntiAirCraftGun/Vopros.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace AntiAircraftGun -{ - public class Vopros - { - private int _id; - - public int change_id { set { _id = value; } } - - public void Change(int id) - { - change_id = id; - } - } -} -- 2.25.1 From a0db4e8315375b40ae5336594ea8e0d464f569df Mon Sep 17 00:00:00 2001 From: YourDax Date: Thu, 12 Oct 2023 20:51:18 +0400 Subject: [PATCH 4/5] =?UTF-8?q?=D0=94=D0=BE=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AntiAirCraftGun/DrawingAntiAirCraftGun.cs | 34 +++---- .../AntiAirCraftGun/EntityAntiAircraftGun.cs | 12 ++- .../FormAntiAirCraftGun.Designer.cs | 91 ++++++++++--------- .../AntiAirCraftGun/FormAntiAirCraftGun.cs | 20 ++-- AntiAirCraftGun/AntiAirCraftGun/Vopros.cs | 20 ---- 5 files changed, 73 insertions(+), 104 deletions(-) delete mode 100644 AntiAirCraftGun/AntiAirCraftGun/Vopros.cs diff --git a/AntiAirCraftGun/AntiAirCraftGun/DrawingAntiAirCraftGun.cs b/AntiAirCraftGun/AntiAirCraftGun/DrawingAntiAirCraftGun.cs index e1b597f..e4de4a3 100644 --- a/AntiAirCraftGun/AntiAirCraftGun/DrawingAntiAirCraftGun.cs +++ b/AntiAirCraftGun/AntiAirCraftGun/DrawingAntiAirCraftGun.cs @@ -35,11 +35,11 @@ namespace AntiAircraftGun /// /// Ширина прорисовки автомобиля /// - private readonly int _carWidth = 110; + private readonly int _zenitWidth = 110; /// /// Высота прорисовки автомобиля /// - private readonly int _carHeight = 60; + private readonly int _zenitHeight = 60; /// /// Инициализация свойств /// @@ -54,7 +54,8 @@ namespace AntiAircraftGun public bool Init(int speed, double weight, Color bodyColor, Color additionalColor, Color dopColor, bool rocket, bool radar, int width, int height) { - // TODO: Продумать проверки + if (width <= _zenitWidth || height <= _zenitHeight) return false; + _pictureWidth = width; _pictureHeight = height; AntiAircraftGun = new EntityAntiAircraftGun(); @@ -68,9 +69,14 @@ namespace AntiAircraftGun /// Координата Y public void SetPosition(int x, int y) { - // TODO: Изменение x, y + if (AntiAircraftGun == null) return; _startPosX = x; _startPosY = y; + if (x + _zenitWidth >= _pictureWidth || y + _zenitHeight>= _pictureHeight) + { + _startPosX = 1; + _startPosY = 1; + } } /// /// Изменение направления перемещения @@ -82,14 +88,6 @@ namespace AntiAircraftGun { return; } - - FormAntiAirCraftGun form1 = new FormAntiAirCraftGun(); - Size windowSize = form1.Size; - int windowWidth = windowSize.Width; - int windowHeight = windowSize.Height; - - // Теперь вы можете получить ширину и высоту отдельно, если это необходимо - switch (direction) { //влево @@ -108,14 +106,14 @@ namespace AntiAircraftGun break; // вправо case DirectionType.Right: - if (_startPosX + AntiAircraftGun.Step < windowWidth-150) + if (_startPosX + AntiAircraftGun.Step < _pictureWidth-110) { _startPosX += (int)AntiAircraftGun.Step; } break; //вниз case DirectionType.Down: - if (_startPosY + AntiAircraftGun.Step < windowHeight-100) + if (_startPosY + AntiAircraftGun.Step < _pictureHeight-60) { _startPosY += (int)AntiAircraftGun.Step; } @@ -149,8 +147,6 @@ namespace AntiAircraftGun g.DrawEllipse(pen, trackRect); g.FillEllipse(Brushes.Black, trackRect); } - - Brush dopBrush = new SolidBrush(AntiAircraftGun.DopColor); Pen dopPen = new Pen(AntiAircraftGun.DopColor); if (AntiAircraftGun.Rocket) @@ -169,12 +165,6 @@ namespace AntiAircraftGun g.DrawLine(dopPen, _startPosX + 98, _startPosY, _startPosX + 93, _startPosY + 10); g.FillEllipse(dopBrush, _startPosX + 88, _startPosY -10, 10, 10); } - - - - - - } } } diff --git a/AntiAirCraftGun/AntiAirCraftGun/EntityAntiAircraftGun.cs b/AntiAirCraftGun/AntiAirCraftGun/EntityAntiAircraftGun.cs index 9e0de1e..c6c6b17 100644 --- a/AntiAirCraftGun/AntiAirCraftGun/EntityAntiAircraftGun.cs +++ b/AntiAirCraftGun/AntiAirCraftGun/EntityAntiAircraftGun.cs @@ -28,11 +28,17 @@ namespace AntiAircraftGun /// Шаг перемещения автомобиля /// public double Step => (double)Speed * 100 / Weight; - + /// + /// Цвет для доп. деталей + /// public Color DopColor { get; private set; } - + /// + /// Ракета + /// public bool Rocket { get; private set; } - + /// + /// Радар + /// public bool Radar { get; private set; } /// /// Инициализация полей объекта-класса спортивного автомобиля diff --git a/AntiAirCraftGun/AntiAirCraftGun/FormAntiAirCraftGun.Designer.cs b/AntiAirCraftGun/AntiAirCraftGun/FormAntiAirCraftGun.Designer.cs index 7990e0f..347ee34 100644 --- a/AntiAirCraftGun/AntiAirCraftGun/FormAntiAirCraftGun.Designer.cs +++ b/AntiAirCraftGun/AntiAirCraftGun/FormAntiAirCraftGun.Designer.cs @@ -2,34 +2,34 @@ { partial class FormAntiAirCraftGun { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } - #region Windows Form Designer generated code + #region Windows Form Designer generated code - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { this.pictureBoxAntiAircraftGun = new System.Windows.Forms.PictureBox(); - this.Create = new System.Windows.Forms.Button(); + this.buttonCreate = new System.Windows.Forms.Button(); this.buttonLeft = new System.Windows.Forms.Button(); this.buttonUp = new System.Windows.Forms.Button(); this.buttonRight = new System.Windows.Forms.Button(); @@ -47,16 +47,16 @@ this.pictureBoxAntiAircraftGun.TabIndex = 0; this.pictureBoxAntiAircraftGun.TabStop = false; // - // Create + // buttonCreate // - this.Create.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.Create.Location = new System.Drawing.Point(32, 577); - this.Create.Name = "Create"; - this.Create.Size = new System.Drawing.Size(75, 23); - this.Create.TabIndex = 1; - this.Create.Text = "Создать"; - this.Create.UseVisualStyleBackColor = true; - this.Create.Click += new System.EventHandler(this.Create_Click_1); + this.buttonCreate.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.buttonCreate.Location = new System.Drawing.Point(32, 577); + this.buttonCreate.Name = "buttonCreate"; + this.buttonCreate.Size = new System.Drawing.Size(75, 23); + this.buttonCreate.TabIndex = 1; + this.buttonCreate.Text = "Создать"; + this.buttonCreate.UseVisualStyleBackColor = true; + this.buttonCreate.Click += new System.EventHandler(this.buttonCreate_Click); // // buttonLeft // @@ -106,7 +106,7 @@ this.buttonDown.UseVisualStyleBackColor = true; this.buttonDown.Click += new System.EventHandler(this.ButtonMove_Click); // - // Form1 + // FormAntiAirCraftGun // this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; @@ -115,23 +115,24 @@ this.Controls.Add(this.buttonRight); this.Controls.Add(this.buttonUp); this.Controls.Add(this.buttonLeft); - this.Controls.Add(this.Create); + this.Controls.Add(this.buttonCreate); this.Controls.Add(this.pictureBoxAntiAircraftGun); - this.Name = "Form1"; + this.Name = "FormAntiAirCraftGun"; this.Text = "Form1"; ((System.ComponentModel.ISupportInitialize)(this.pictureBoxAntiAircraftGun)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); - } + } - #endregion + #endregion - private PictureBox pictureBoxAntiAircraftGun; - private Button Create; - private Button buttonLeft; - private Button buttonUp; - private Button buttonRight; - private Button buttonDown; - } + private PictureBox pictureBoxAntiAircraftGun; + private Button buttonCreate; + private Button buttonLeft; + private Button buttonUp; + private Button buttonRight; + private Button buttonDown; + + } } \ No newline at end of file diff --git a/AntiAirCraftGun/AntiAirCraftGun/FormAntiAirCraftGun.cs b/AntiAirCraftGun/AntiAirCraftGun/FormAntiAirCraftGun.cs index 4f42f5b..c8b7f39 100644 --- a/AntiAirCraftGun/AntiAirCraftGun/FormAntiAirCraftGun.cs +++ b/AntiAirCraftGun/AntiAirCraftGun/FormAntiAirCraftGun.cs @@ -37,11 +37,7 @@ namespace AntiAircraftGun - /// - /// - /// - /// - /// + private void pictureBoxZenit_Click(object sender, EventArgs e) { @@ -62,11 +58,7 @@ namespace AntiAircraftGun pictureBoxAntiAircraftGun.Image = bmp; } - /// - /// - /// - /// - /// + private void ButtonMove_Click(object sender, EventArgs e) { if (_drawing == null) @@ -91,8 +83,7 @@ namespace AntiAircraftGun } Draw(); } - - private void Create_Click_1(object sender, EventArgs e) + private void buttonCreate_Click(object sender, EventArgs e) { Random random = new(); _drawing = new DrawingAntiAirCraftGun(); @@ -102,7 +93,7 @@ namespace AntiAircraftGun random.Next(0, 256)), 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)), // . 2 Convert.ToBoolean(random.Next(2)), // Rocket Convert.ToBoolean(random.Next(2)), // Radar @@ -111,8 +102,9 @@ namespace AntiAircraftGun _drawing.SetPosition(random.Next(10, 100), random.Next(10, 100)); - + Draw(); } + } } \ No newline at end of file diff --git a/AntiAirCraftGun/AntiAirCraftGun/Vopros.cs b/AntiAirCraftGun/AntiAirCraftGun/Vopros.cs deleted file mode 100644 index c1932e3..0000000 --- a/AntiAirCraftGun/AntiAirCraftGun/Vopros.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace AntiAircraftGun -{ - public class Vopros - { - private int _id; - - public int change_id { set { _id = value; } } - - public void Change(int id) - { - change_id = id; - } - } -} -- 2.25.1 From 4bc51728fefbc5d03d5ad896c27ec4a85f1b7f7a Mon Sep 17 00:00:00 2001 From: YourDax Date: Sun, 15 Oct 2023 20:14:11 +0400 Subject: [PATCH 5/5] Fixed --- .../AntiAirCraftGun/DrawingAntiAirCraftGun.cs | 6 +- .../AntiAirCraftGun/FormAntiAirCraftGun.cs | 57 ++++--------------- 2 files changed, 14 insertions(+), 49 deletions(-) diff --git a/AntiAirCraftGun/AntiAirCraftGun/DrawingAntiAirCraftGun.cs b/AntiAirCraftGun/AntiAirCraftGun/DrawingAntiAirCraftGun.cs index e4de4a3..dc404a8 100644 --- a/AntiAirCraftGun/AntiAirCraftGun/DrawingAntiAirCraftGun.cs +++ b/AntiAirCraftGun/AntiAirCraftGun/DrawingAntiAirCraftGun.cs @@ -72,7 +72,7 @@ namespace AntiAircraftGun if (AntiAircraftGun == null) return; _startPosX = x; _startPosY = y; - if (x + _zenitWidth >= _pictureWidth || y + _zenitHeight>= _pictureHeight) + if (x < 0 || y < 0 ||x + _zenitWidth >= _pictureWidth || y + _zenitHeight>= _pictureHeight) { _startPosX = 1; _startPosY = 1; @@ -106,14 +106,14 @@ namespace AntiAircraftGun break; // вправо case DirectionType.Right: - if (_startPosX + AntiAircraftGun.Step < _pictureWidth-110) + if (_startPosX + AntiAircraftGun.Step + _zenitWidth < _pictureWidth) { _startPosX += (int)AntiAircraftGun.Step; } break; //вниз case DirectionType.Down: - if (_startPosY + AntiAircraftGun.Step < _pictureHeight-60) + if (_startPosY + AntiAircraftGun.Step + _zenitHeight < _pictureHeight) { _startPosY += (int)AntiAircraftGun.Step; } diff --git a/AntiAirCraftGun/AntiAirCraftGun/FormAntiAirCraftGun.cs b/AntiAirCraftGun/AntiAirCraftGun/FormAntiAirCraftGun.cs index c8b7f39..c5c8fea 100644 --- a/AntiAirCraftGun/AntiAirCraftGun/FormAntiAirCraftGun.cs +++ b/AntiAirCraftGun/AntiAirCraftGun/FormAntiAirCraftGun.cs @@ -5,63 +5,28 @@ namespace AntiAircraftGun /// /// - /// - private DrawingAntiAirCraftGun? _drawing; + private DrawingAntiAirCraftGun? _drawingAntiAirCraftGun; public FormAntiAirCraftGun() { InitializeComponent(); } - private void Move_Click(object sender, EventArgs e) - { - if (_drawing == null) - { - return; - } - string name = ((Button)sender)?.Name ?? string.Empty; - switch (name) - { - case "buttonUp": - _drawing.MoveTransport(DirectionType.Up); - break; - case "buttonDown": - _drawing.MoveTransport(DirectionType.Down); - break; - case "buttonLeft": - _drawing.MoveTransport(DirectionType.Left); - break; - case "buttonRight": - _drawing.MoveTransport(DirectionType.Right); - break; - } - Draw(); - } - - - - - - private void pictureBoxZenit_Click(object sender, EventArgs e) - { - - } /// /// /// private void Draw() { - if (_drawing == null) + if (_drawingAntiAirCraftGun == null) { return; } Bitmap bmp = new(pictureBoxAntiAircraftGun.Width,pictureBoxAntiAircraftGun.Height); Graphics gr = Graphics.FromImage(bmp); - _drawing.DrawTransport(gr); + _drawingAntiAirCraftGun.DrawTransport(gr); pictureBoxAntiAircraftGun.Image = bmp; } - - private void ButtonMove_Click(object sender, EventArgs e) { - if (_drawing == null) + if (_drawingAntiAirCraftGun == null) { return; } @@ -69,16 +34,16 @@ namespace AntiAircraftGun switch (name) { case "buttonUp": - _drawing.MoveTransport(DirectionType.Up); + _drawingAntiAirCraftGun.MoveTransport(DirectionType.Up); break; case "buttonDown": - _drawing.MoveTransport(DirectionType.Down); + _drawingAntiAirCraftGun.MoveTransport(DirectionType.Down); break; case "buttonLeft": - _drawing.MoveTransport(DirectionType.Left); + _drawingAntiAirCraftGun.MoveTransport(DirectionType.Left); break; case "buttonRight": - _drawing.MoveTransport(DirectionType.Right); + _drawingAntiAirCraftGun.MoveTransport(DirectionType.Right); break; } Draw(); @@ -86,8 +51,8 @@ namespace AntiAircraftGun private void buttonCreate_Click(object sender, EventArgs e) { Random random = new(); - _drawing = new DrawingAntiAirCraftGun(); - _drawing.Init(random.Next(100, 300),//c + _drawingAntiAirCraftGun = new DrawingAntiAirCraftGun(); + _drawingAntiAirCraftGun.Init(random.Next(100, 300),//c random.Next(1000, 3000), // Color.FromArgb(random.Next(0, 256), random.Next(0, 256),// random.Next(0, 256)), @@ -99,7 +64,7 @@ namespace AntiAircraftGun Convert.ToBoolean(random.Next(2)), // Radar pictureBoxAntiAircraftGun.Width, pictureBoxAntiAircraftGun.Height); - _drawing.SetPosition(random.Next(10, 100), + _drawingAntiAirCraftGun.SetPosition(random.Next(10, 100), random.Next(10, 100)); -- 2.25.1