From 1a9823257667fb2062fb87a2e9a8104d3c329fc2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D0=BA=D1=81?= Date: Sun, 16 Feb 2025 19:57:49 +0400 Subject: [PATCH 1/4] =?UTF-8?q?=D0=9B=D0=B0=D0=B1=D0=BE=D1=80=D0=B0=D1=82?= =?UTF-8?q?=D0=BE=D1=80=D0=BD=D0=B0=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=B0=20=E2=84=961?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Projekt/Projekt/DirectionType.cs | 29 +++ Projekt/Projekt/DrawingTank.cs | 194 ++++++++++++++++++ Projekt/Projekt/EntityTank.cs | 53 +++++ Projekt/Projekt/Form1.Designer.cs | 39 ---- Projekt/Projekt/Form1.cs | 10 - Projekt/Projekt/FormTank.Designer.cs | 134 ++++++++++++ Projekt/Projekt/FormTank.cs | 88 ++++++++ Projekt/Projekt/{Form1.resx => FormTank.resx} | 54 ++--- Projekt/Projekt/Program.cs | 2 +- Projekt/Projekt/Projekt.csproj | 15 ++ .../Projekt/Properties/Resources.Designer.cs | 103 ++++++++++ Projekt/Projekt/Properties/Resources.resx | 133 ++++++++++++ Projekt/Projekt/Resources/Down.png | Bin 0 -> 8592 bytes Projekt/Projekt/Resources/Left.png | Bin 0 -> 8058 bytes Projekt/Projekt/Resources/Right.png | Bin 0 -> 3207 bytes Projekt/Projekt/Resources/Up.png | Bin 0 -> 8634 bytes 16 files changed, 777 insertions(+), 77 deletions(-) create mode 100644 Projekt/Projekt/DirectionType.cs create mode 100644 Projekt/Projekt/DrawingTank.cs create mode 100644 Projekt/Projekt/EntityTank.cs delete mode 100644 Projekt/Projekt/Form1.Designer.cs delete mode 100644 Projekt/Projekt/Form1.cs create mode 100644 Projekt/Projekt/FormTank.Designer.cs create mode 100644 Projekt/Projekt/FormTank.cs rename Projekt/Projekt/{Form1.resx => FormTank.resx} (92%) create mode 100644 Projekt/Projekt/Properties/Resources.Designer.cs create mode 100644 Projekt/Projekt/Properties/Resources.resx create mode 100644 Projekt/Projekt/Resources/Down.png create mode 100644 Projekt/Projekt/Resources/Left.png create mode 100644 Projekt/Projekt/Resources/Right.png create mode 100644 Projekt/Projekt/Resources/Up.png diff --git a/Projekt/Projekt/DirectionType.cs b/Projekt/Projekt/DirectionType.cs new file mode 100644 index 0000000..baa2bcb --- /dev/null +++ b/Projekt/Projekt/DirectionType.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Projekt; +/// +/// Направление перемещения +/// +public enum DirectionType +{ + /// + /// Вверх + /// + Up = 1, + /// + /// Вниз + /// + Down = 2, + /// + /// Влево + /// + Left = 3, + /// + /// Вправо + /// + Right = 4, +} diff --git a/Projekt/Projekt/DrawingTank.cs b/Projekt/Projekt/DrawingTank.cs new file mode 100644 index 0000000..b2f3de8 --- /dev/null +++ b/Projekt/Projekt/DrawingTank.cs @@ -0,0 +1,194 @@ + +namespace Projekt; + +public class DrawingTank +{ + /// + /// Класс-сущность + /// + public EntityTank? EntityTank { get; private set; } + /// + /// Ширина окна + /// + private int? _pictureWidth; + /// + /// Высота окна + /// + private int? _pictureHeight; + /// + /// Левая координата прорисовки танка + /// + private int? _startPosX; + /// + /// Верхняя кооридната прорисовки танка + /// + private int? _startPosY; + /// + /// Ширина прорисовки танка + /// + private readonly int _drawningTankWidth = 150; + /// + /// Высота прорисовки танка + /// + private readonly int _drawningTankHeight = 50; + /// + /// Инициализация свойств + /// + /// Скорость + /// Вес + /// Основной цвет + /// Дополнительный цвет + /// Наличие Башни с орудием + /// Наличие пулимета на башне + public void Init(int speed, double weight, Color bodyColor, Color additionalColor, bool tankTurret, bool tankMachineGun) + { + EntityTank = new EntityTank(); + EntityTank.Init(speed, weight, bodyColor, additionalColor, tankTurret, tankMachineGun); + _pictureWidth = null; + _pictureHeight = null; + _startPosX = null; + _startPosY = null; + } + /// + /// Установка границ поля + /// + /// Ширина поля + /// Высота поля + /// true - границы заданы, false - проверка не пройдена, нельзя разместить объект в этих размерах + public bool SetPictureSize(int width, int height) + { + // TODO проверка, что объект "влезает" в размеры поля + // если влезает, сохраняем границы и корректируем позицию объекта, если она была уже установлена + if (width < _drawningTankWidth && height < _drawningTankHeight) + { + return false; + } + _pictureWidth = width; + _pictureHeight = height; + return true; + } + /// + /// Установка позиции + /// + /// Координата X + /// Координата Y + public void SetPosition(int x, int y) + { + if (!_pictureHeight.HasValue || !_pictureWidth.HasValue) + { + return; + } + + int newX = x; + int newY = y; + + if (newX < 0) + { + newX = 0; + } + if (newX + _drawningTankWidth > _pictureWidth) + { + newX = _pictureWidth.Value - _drawningTankWidth; + } + + if (newY < 0) + { + newY = 0; + } + if (newY + _drawningTankHeight > _pictureHeight) + { + newY = _pictureHeight.Value - _drawningTankHeight; + } + + _startPosX = newX; + _startPosY = newY; + } + /// + /// Изменение направления перемещения + /// + /// Направление + /// true - перемещене выполнено, false - перемещение невозможно + public bool MoveTransport(DirectionType direction) + { + if (EntityTank == null || !_startPosX.HasValue || !_startPosY.HasValue) + { + return false; + } + + int newX = _startPosX.Value; + int newY = _startPosY.Value; + + switch (direction) + { + case DirectionType.Left: + newX -= (int)EntityTank.Step; + if (newX < 0) newX = 0; + break; + case DirectionType.Up: + newY -= (int)EntityTank.Step; + if (newY < 0) newY = 0; + break; + case DirectionType.Right: + newX += (int)EntityTank.Step; + if (newX + _drawningTankWidth > _pictureWidth) newX = _pictureWidth.Value - _drawningTankWidth; + break; + case DirectionType.Down: + newY += (int)EntityTank.Step; + if (newY + _drawningTankHeight > _pictureHeight) newY = _pictureHeight.Value - _drawningTankHeight; + break; + default: + return false; + } + + // Устанавливаем новые координаты + _startPosX = newX; + _startPosY = newY; + + return true; + } + public void DrawTransport(Graphics g) + { + if (EntityTank == null || !_startPosX.HasValue || + !_startPosY.HasValue) + { + return; + } + Pen pen = new(Color.Black); + Brush additionalBrush = new SolidBrush(EntityTank.AdditionalColor); + Brush brWhite = new SolidBrush(Color.White); + Brush brBlack = new SolidBrush(Color.Black); + //пушка + if (EntityTank.TankTurret) + { + g.FillRectangle(brBlack, _startPosX.Value + 70, _startPosY.Value + 15, 80, 8); + g.FillRectangle(brBlack, _startPosX.Value + 140, _startPosY.Value + 14, 10, 10); + g.FillRectangle(brWhite, _startPosX.Value + 143, _startPosY.Value + 16, 5, 2); + g.FillRectangle(brWhite, _startPosX.Value + 143, _startPosY.Value + 20, 5, 2); + } + //границы танка + g.FillRectangle(brBlack, _startPosX.Value + 20, _startPosY.Value + 10, 50, 20); + g.DrawRectangle(pen, _startPosX.Value + 1, _startPosY.Value + 30, 100, 10); + g.DrawRectangle(pen, _startPosX.Value + 1, _startPosY.Value + 40, 100, 5); + g.DrawEllipse(pen, _startPosX.Value + 1, _startPosY.Value + 40, 10,10); + g.DrawRectangle(pen, _startPosX.Value + 5, _startPosY.Value + 30, 90, 20); + g.DrawEllipse(pen, _startPosX.Value + 90, _startPosY.Value + 40, 10, 10); + g.FillRectangle(brWhite, _startPosX.Value + 2, _startPosY.Value + 31, 99, 15); + g.FillRectangle(brWhite, _startPosX.Value + 5, _startPosY.Value + 31, 91, 19); + g.FillRectangle(brBlack, _startPosX.Value + 1, _startPosY.Value + 27, 101, 7); + g.DrawEllipse(pen, _startPosX.Value + 3, _startPosY.Value + 35, 13, 13); + g.DrawEllipse(pen, _startPosX.Value + 86, _startPosY.Value + 35, 13, 13); + g.DrawEllipse(pen, _startPosX.Value + 25, _startPosY.Value + 37, 10, 10); + g.DrawEllipse(pen, _startPosX.Value + 45, _startPosY.Value + 37, 10, 10); + g.DrawEllipse(pen, _startPosX.Value + 65, _startPosY.Value + 37, 10, 10); + //пулимет на башне + if (EntityTank.TankMachineGun) + { + g.FillRectangle(brBlack, _startPosX.Value + 37, _startPosY.Value, 5, 10); + g.FillRectangle(additionalBrush, _startPosX.Value + 49, _startPosY.Value + 5, 3, 5); + g.FillRectangle(additionalBrush, _startPosX.Value + 47, _startPosY.Value + 1, 2, 5); + g.FillRectangle(additionalBrush, _startPosX.Value + 49, _startPosY.Value + 3, 10, 3); + g.FillRectangle(additionalBrush, _startPosX.Value + 56, _startPosY.Value+1, 20, 3); + g.FillRectangle(additionalBrush, _startPosX.Value + 71, _startPosY.Value, 2, 2); + } + } +} diff --git a/Projekt/Projekt/EntityTank.cs b/Projekt/Projekt/EntityTank.cs new file mode 100644 index 0000000..987917d --- /dev/null +++ b/Projekt/Projekt/EntityTank.cs @@ -0,0 +1,53 @@ +namespace Projekt; +/// +/// Класс-Сущность "танк" +/// +public class EntityTank +{ + /// + /// Скорость + /// + 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 bool TankTurret { get; private set; } + /// + /// Признак (Опция) наличия Пулимет на башне + /// + public bool TankMachineGun { get; private set; } + /// + /// Шаг перемещения танка + /// + public double Step => Speed * 100 / Weight; + /// + /// Инициализация полей объекта класса "танк" + /// + /// Скорость + /// Вес + /// Основной цвет + /// Дополнительный цвет + /// Наличие Башни с орудием + /// Наличие пулимета на башне + public void Init(int speed, double weight,Color bodyColor,Color additionalColor, bool tankTurret, bool tankMachineGun) + { + Speed = speed; + Weight = weight; + BodyColor = bodyColor; + AdditionalColor = additionalColor; + TankMachineGun = tankMachineGun; + TankTurret = tankTurret; + } +} diff --git a/Projekt/Projekt/Form1.Designer.cs b/Projekt/Projekt/Form1.Designer.cs deleted file mode 100644 index 679ab30..0000000 --- a/Projekt/Projekt/Form1.Designer.cs +++ /dev/null @@ -1,39 +0,0 @@ -namespace Projekt -{ - 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 - } -} diff --git a/Projekt/Projekt/Form1.cs b/Projekt/Projekt/Form1.cs deleted file mode 100644 index 93db0dd..0000000 --- a/Projekt/Projekt/Form1.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Projekt -{ - public partial class Form1 : Form - { - public Form1() - { - InitializeComponent(); - } - } -} diff --git a/Projekt/Projekt/FormTank.Designer.cs b/Projekt/Projekt/FormTank.Designer.cs new file mode 100644 index 0000000..e1be573 --- /dev/null +++ b/Projekt/Projekt/FormTank.Designer.cs @@ -0,0 +1,134 @@ +namespace Projekt +{ + partial class FormTank + { + /// + /// 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() + { + pictureBoxTank = new PictureBox(); + buttonCreate = new Button(); + buttonUp = new Button(); + buttonLeft = new Button(); + buttonRight = new Button(); + buttonDown = new Button(); + ((System.ComponentModel.ISupportInitialize)pictureBoxTank).BeginInit(); + SuspendLayout(); + // + // pictureBoxTank + // + pictureBoxTank.Dock = DockStyle.Fill; + pictureBoxTank.Location = new Point(0, 0); + pictureBoxTank.Name = "pictureBoxTank"; + pictureBoxTank.Size = new Size(713, 567); + pictureBoxTank.TabIndex = 0; + pictureBoxTank.TabStop = false; + // + // buttonCreate + // + buttonCreate.Anchor = AnchorStyles.Bottom | AnchorStyles.Left; + buttonCreate.Location = new Point(12, 532); + buttonCreate.Name = "buttonCreate"; + buttonCreate.Size = new Size(75, 23); + buttonCreate.TabIndex = 1; + buttonCreate.Text = "Создать"; + buttonCreate.UseVisualStyleBackColor = true; + buttonCreate.Click += buttonCreate_Click; + // + // buttonUp + // + buttonUp.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonUp.BackgroundImage = Properties.Resources.Up; + buttonUp.BackgroundImageLayout = ImageLayout.Stretch; + buttonUp.Location = new Point(614, 479); + buttonUp.Name = "buttonUp"; + buttonUp.Size = new Size(35, 35); + buttonUp.TabIndex = 2; + buttonUp.UseVisualStyleBackColor = true; + buttonUp.Click += ButtonMove_Click; + // + // buttonLeft + // + buttonLeft.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonLeft.BackgroundImage = Properties.Resources.Left; + buttonLeft.BackgroundImageLayout = ImageLayout.Stretch; + buttonLeft.Location = new Point(573, 520); + buttonLeft.Name = "buttonLeft"; + buttonLeft.Size = new Size(35, 35); + buttonLeft.TabIndex = 3; + buttonLeft.UseVisualStyleBackColor = true; + buttonLeft.Click += ButtonMove_Click; + // + // buttonRight + // + buttonRight.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonRight.BackgroundImage = Properties.Resources.Right; + buttonRight.BackgroundImageLayout = ImageLayout.Stretch; + buttonRight.Location = new Point(655, 520); + buttonRight.Name = "buttonRight"; + buttonRight.Size = new Size(35, 35); + buttonRight.TabIndex = 4; + buttonRight.UseVisualStyleBackColor = true; + buttonRight.Click += ButtonMove_Click; + // + // buttonDown + // + buttonDown.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonDown.BackgroundImage = Properties.Resources.Down; + buttonDown.BackgroundImageLayout = ImageLayout.Stretch; + buttonDown.Location = new Point(614, 520); + buttonDown.Name = "buttonDown"; + buttonDown.Size = new Size(35, 35); + buttonDown.TabIndex = 5; + buttonDown.UseVisualStyleBackColor = true; + buttonDown.Click += ButtonMove_Click; + // + // FormTank + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(713, 567); + Controls.Add(buttonDown); + Controls.Add(buttonRight); + Controls.Add(buttonLeft); + Controls.Add(buttonUp); + Controls.Add(buttonCreate); + Controls.Add(pictureBoxTank); + Name = "FormTank"; + Text = "Танк"; + ((System.ComponentModel.ISupportInitialize)pictureBoxTank).EndInit(); + ResumeLayout(false); + } + + #endregion + + private PictureBox pictureBoxTank; + private Button buttonCreate; + private Button buttonUp; + private Button buttonLeft; + private Button buttonRight; + private Button buttonDown; + } +} \ No newline at end of file diff --git a/Projekt/Projekt/FormTank.cs b/Projekt/Projekt/FormTank.cs new file mode 100644 index 0000000..14cb6ca --- /dev/null +++ b/Projekt/Projekt/FormTank.cs @@ -0,0 +1,88 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Projekt +{ + public partial class FormTank : Form + { + private DrawingTank _drawingTank; + public FormTank() + { + InitializeComponent(); + } + + private void buttonLeft_Click(object sender, EventArgs e) + { + + } + private void Draw() + { + if (_drawingTank == null) + { + return; + } + Bitmap bmp = new(pictureBoxTank.Width, pictureBoxTank.Height); + Graphics gr = Graphics.FromImage(bmp); + _drawingTank.DrawTransport(gr); + pictureBoxTank.Image = bmp; + } + + + private void buttonCreate_Click(object sender, EventArgs e) + { + Random random = new(); + _drawingTank = new DrawingTank(); + _drawingTank.Init(random.Next(30,70), random.Next(3000, 5000), + Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256)), + Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256)), + Convert.ToBoolean(random.Next(0, 2)), Convert.ToBoolean(random.Next(0, 2))); + _drawingTank.SetPictureSize(pictureBoxTank.Width, pictureBoxTank.Height); + _drawingTank.SetPosition(random.Next(10, 100), random.Next(10,100)); + Draw(); + } + /// + /// Перемещение объекта по форме (нажатие кнопок навигации) + /// + /// + /// + private void ButtonMove_Click(object sender, EventArgs e) + { + if (_drawingTank == null) + { + return; + } + string name = ((Button)sender)?.Name ?? string.Empty; + bool result = false; + switch (name) + { + case "buttonUp": + result = + _drawingTank.MoveTransport(DirectionType.Up); + break; + case "buttonDown": + result = + _drawingTank.MoveTransport(DirectionType.Down); + break; + case "buttonLeft": + result = + _drawingTank.MoveTransport(DirectionType.Left); + break; + case "buttonRight": + result = + _drawingTank.MoveTransport(DirectionType.Right); + break; + } + if (result) + { + Draw(); + } + } + } +} diff --git a/Projekt/Projekt/Form1.resx b/Projekt/Projekt/FormTank.resx similarity index 92% rename from Projekt/Projekt/Form1.resx rename to Projekt/Projekt/FormTank.resx index 1af7de1..8b2ff64 100644 --- a/Projekt/Projekt/Form1.resx +++ b/Projekt/Projekt/FormTank.resx @@ -1,17 +1,17 @@  - diff --git a/Projekt/Projekt/Program.cs b/Projekt/Projekt/Program.cs index 5e7eb92..00ee9a7 100644 --- a/Projekt/Projekt/Program.cs +++ b/Projekt/Projekt/Program.cs @@ -11,7 +11,7 @@ namespace Projekt // 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 FormTank()); } } } \ No newline at end of file diff --git a/Projekt/Projekt/Projekt.csproj b/Projekt/Projekt/Projekt.csproj index 663fdb8..af03d74 100644 --- a/Projekt/Projekt/Projekt.csproj +++ b/Projekt/Projekt/Projekt.csproj @@ -8,4 +8,19 @@ enable + + + True + True + Resources.resx + + + + + + ResXFileCodeGenerator + Resources.Designer.cs + + + \ No newline at end of file diff --git a/Projekt/Projekt/Properties/Resources.Designer.cs b/Projekt/Projekt/Properties/Resources.Designer.cs new file mode 100644 index 0000000..97b2076 --- /dev/null +++ b/Projekt/Projekt/Properties/Resources.Designer.cs @@ -0,0 +1,103 @@ +//------------------------------------------------------------------------------ +// +// Этот код создан программой. +// Исполняемая версия:4.0.30319.42000 +// +// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае +// повторной генерации кода. +// +//------------------------------------------------------------------------------ + +namespace Projekt.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("Projekt.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 Down { + get { + object obj = ResourceManager.GetObject("Down", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Left { + get { + object obj = ResourceManager.GetObject("Left", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Right { + get { + object obj = ResourceManager.GetObject("Right", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Up { + get { + object obj = ResourceManager.GetObject("Up", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} diff --git a/Projekt/Projekt/Properties/Resources.resx b/Projekt/Projekt/Properties/Resources.resx new file mode 100644 index 0000000..8d1ebe1 --- /dev/null +++ b/Projekt/Projekt/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\Right.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Up.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Down.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Left.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + \ No newline at end of file diff --git a/Projekt/Projekt/Resources/Down.png b/Projekt/Projekt/Resources/Down.png new file mode 100644 index 0000000000000000000000000000000000000000..7ff95f2cf8edf90c0ce815f0c41187bd4898b7b7 GIT binary patch literal 8592 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 literal 0 HcmV?d00001 -- 2.25.1 From 5097475d5d1fe05a5d332cc16355509edfb16012 Mon Sep 17 00:00:00 2001 From: NikitaShipilov Date: Thu, 20 Feb 2025 10:16:02 +0300 Subject: [PATCH 2/4] =?UTF-8?q?=D0=9B=D0=B0=D0=B1=D0=BE=D1=80=D0=B0=D1=82?= =?UTF-8?q?=D0=BE=D1=80=D0=BD=D0=B0=D1=8F1(=D0=A4=D0=B8=D0=BD=D0=B0=D0=BB)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Projekt/Projekt/DrawingTank.cs | 64 +++++++++++++++++++--------------- Projekt/Projekt/EntityTank.cs | 2 +- Projekt/Projekt/FormTank.cs | 2 +- 3 files changed, 37 insertions(+), 31 deletions(-) diff --git a/Projekt/Projekt/DrawingTank.cs b/Projekt/Projekt/DrawingTank.cs index b2f3de8..b699a24 100644 --- a/Projekt/Projekt/DrawingTank.cs +++ b/Projekt/Projekt/DrawingTank.cs @@ -26,11 +26,11 @@ public class DrawingTank /// /// Ширина прорисовки танка /// - private readonly int _drawningTankWidth = 150; + private readonly int _drawningTankWidth = 160; /// /// Высота прорисовки танка /// - private readonly int _drawningTankHeight = 50; + private readonly int _drawningTankHeight = 60; /// /// Инициализация свойств /// @@ -110,41 +110,46 @@ public class DrawingTank /// true - перемещене выполнено, false - перемещение невозможно public bool MoveTransport(DirectionType direction) { - if (EntityTank == null || !_startPosX.HasValue || !_startPosY.HasValue) + if (EntityTank == null || !_startPosX.HasValue || + !_startPosY.HasValue) { return false; } - - int newX = _startPosX.Value; - int newY = _startPosY.Value; - switch (direction) { + //влево case DirectionType.Left: - newX -= (int)EntityTank.Step; - if (newX < 0) newX = 0; - break; + if (_startPosX.Value - EntityTank.Step > 0) + { + _startPosX -= (int)EntityTank.Step; + } + return true; + //вверх case DirectionType.Up: - newY -= (int)EntityTank.Step; - if (newY < 0) newY = 0; - break; + if (_startPosY.Value - EntityTank.Step > 0) + { + _startPosY -= (int)EntityTank.Step; + } + return true; + // вправо case DirectionType.Right: - newX += (int)EntityTank.Step; - if (newX + _drawningTankWidth > _pictureWidth) newX = _pictureWidth.Value - _drawningTankWidth; - break; + //TODO прописать логику сдвига в право + if (_startPosX.Value + _drawningTankWidth < _pictureWidth) + { + _startPosX += (int)EntityTank.Step; + } + return true; + //вниз case DirectionType.Down: - newY += (int)EntityTank.Step; - if (newY + _drawningTankHeight > _pictureHeight) newY = _pictureHeight.Value - _drawningTankHeight; - break; + //TODO прописать логику сдвига в вниз + if (_startPosY.Value + _drawningTankHeight < _pictureHeight) + { + _startPosY += (int)EntityTank.Step; + } + return true; default: return false; } - - // Устанавливаем новые координаты - _startPosX = newX; - _startPosY = newY; - - return true; } public void DrawTransport(Graphics g) { @@ -157,16 +162,17 @@ public class DrawingTank Brush additionalBrush = new SolidBrush(EntityTank.AdditionalColor); Brush brWhite = new SolidBrush(Color.White); Brush brBlack = new SolidBrush(Color.Black); + Brush MainBrush = new SolidBrush(EntityTank.BodyColor); //пушка if (EntityTank.TankTurret) { - g.FillRectangle(brBlack, _startPosX.Value + 70, _startPosY.Value + 15, 80, 8); - g.FillRectangle(brBlack, _startPosX.Value + 140, _startPosY.Value + 14, 10, 10); + g.FillRectangle(MainBrush, _startPosX.Value + 70, _startPosY.Value + 15, 80, 8); + g.FillRectangle(MainBrush, _startPosX.Value + 140, _startPosY.Value + 14, 10, 10); g.FillRectangle(brWhite, _startPosX.Value + 143, _startPosY.Value + 16, 5, 2); g.FillRectangle(brWhite, _startPosX.Value + 143, _startPosY.Value + 20, 5, 2); } //границы танка - g.FillRectangle(brBlack, _startPosX.Value + 20, _startPosY.Value + 10, 50, 20); + g.FillRectangle(MainBrush, _startPosX.Value + 20, _startPosY.Value + 10, 50, 20); g.DrawRectangle(pen, _startPosX.Value + 1, _startPosY.Value + 30, 100, 10); g.DrawRectangle(pen, _startPosX.Value + 1, _startPosY.Value + 40, 100, 5); g.DrawEllipse(pen, _startPosX.Value + 1, _startPosY.Value + 40, 10,10); @@ -174,7 +180,7 @@ public class DrawingTank g.DrawEllipse(pen, _startPosX.Value + 90, _startPosY.Value + 40, 10, 10); g.FillRectangle(brWhite, _startPosX.Value + 2, _startPosY.Value + 31, 99, 15); g.FillRectangle(brWhite, _startPosX.Value + 5, _startPosY.Value + 31, 91, 19); - g.FillRectangle(brBlack, _startPosX.Value + 1, _startPosY.Value + 27, 101, 7); + g.FillRectangle(MainBrush, _startPosX.Value + 1, _startPosY.Value + 27, 101, 7); g.DrawEllipse(pen, _startPosX.Value + 3, _startPosY.Value + 35, 13, 13); g.DrawEllipse(pen, _startPosX.Value + 86, _startPosY.Value + 35, 13, 13); g.DrawEllipse(pen, _startPosX.Value + 25, _startPosY.Value + 37, 10, 10); diff --git a/Projekt/Projekt/EntityTank.cs b/Projekt/Projekt/EntityTank.cs index 987917d..5ca1a5a 100644 --- a/Projekt/Projekt/EntityTank.cs +++ b/Projekt/Projekt/EntityTank.cs @@ -31,7 +31,7 @@ public class EntityTank /// /// Шаг перемещения танка /// - public double Step => Speed * 100 / Weight; + public double Step => Speed * 100 / Weight; //краткая запись - это совйство у которого есть только гетер /// /// Инициализация полей объекта класса "танк" /// diff --git a/Projekt/Projekt/FormTank.cs b/Projekt/Projekt/FormTank.cs index 14cb6ca..883e4ba 100644 --- a/Projekt/Projekt/FormTank.cs +++ b/Projekt/Projekt/FormTank.cs @@ -39,7 +39,7 @@ namespace Projekt { Random random = new(); _drawingTank = new DrawingTank(); - _drawingTank.Init(random.Next(30,70), random.Next(3000, 5000), + _drawingTank.Init(random.Next(30,70), random.Next(300, 500), Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256)), Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256)), Convert.ToBoolean(random.Next(0, 2)), Convert.ToBoolean(random.Next(0, 2))); -- 2.25.1 From 69a8cc5ae404435d615a3a4169d4649eeaf6468c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D0=BA=D1=81?= Date: Thu, 20 Feb 2025 21:31:04 +0400 Subject: [PATCH 3/4] =?UTF-8?q?=D0=9B=D0=B0=D0=B1=D0=BE=D1=80=D0=B0=D1=82?= =?UTF-8?q?=D0=BE=D1=80=D0=BD=D0=B0=D1=8F1(=D0=A4=D0=B8=D0=BD=D0=B0=D0=BB?= =?UTF-8?q?=D1=8C=D0=BD=D1=8B=D0=B9=D0=A4=D0=B8=D0=BD=D0=B0=D0=BB)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Projekt/Projekt/DirectionType.cs | 7 +------ Projekt/Projekt/DrawingTank.cs | 14 +++++++------- Projekt/Projekt/FormTank.cs | 11 +---------- 3 files changed, 9 insertions(+), 23 deletions(-) diff --git a/Projekt/Projekt/DirectionType.cs b/Projekt/Projekt/DirectionType.cs index baa2bcb..6874086 100644 --- a/Projekt/Projekt/DirectionType.cs +++ b/Projekt/Projekt/DirectionType.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - + namespace Projekt; /// /// Направление перемещения diff --git a/Projekt/Projekt/DrawingTank.cs b/Projekt/Projekt/DrawingTank.cs index b699a24..308729e 100644 --- a/Projekt/Projekt/DrawingTank.cs +++ b/Projekt/Projekt/DrawingTank.cs @@ -26,11 +26,11 @@ public class DrawingTank /// /// Ширина прорисовки танка /// - private readonly int _drawningTankWidth = 160; + private readonly int _drawningTankWidth = 150; /// /// Высота прорисовки танка /// - private readonly int _drawningTankHeight = 60; + private readonly int _drawningTankHeight = 62; /// /// Инициализация свойств /// @@ -145,7 +145,7 @@ public class DrawingTank if (_startPosY.Value + _drawningTankHeight < _pictureHeight) { _startPosY += (int)EntityTank.Step; - } + } return true; default: return false; @@ -166,10 +166,10 @@ public class DrawingTank //пушка if (EntityTank.TankTurret) { - g.FillRectangle(MainBrush, _startPosX.Value + 70, _startPosY.Value + 15, 80, 8); - g.FillRectangle(MainBrush, _startPosX.Value + 140, _startPosY.Value + 14, 10, 10); - g.FillRectangle(brWhite, _startPosX.Value + 143, _startPosY.Value + 16, 5, 2); - g.FillRectangle(brWhite, _startPosX.Value + 143, _startPosY.Value + 20, 5, 2); + g.FillRectangle(MainBrush, _startPosX.Value + 70, _startPosY.Value + 15, 70, 8); + g.FillRectangle(MainBrush, _startPosX.Value + 130, _startPosY.Value + 14, 10, 10); + g.FillRectangle(brWhite, _startPosX.Value + 133, _startPosY.Value + 16, 5, 2); + g.FillRectangle(brWhite, _startPosX.Value + 133, _startPosY.Value + 20, 5, 2); } //границы танка g.FillRectangle(MainBrush, _startPosX.Value + 20, _startPosY.Value + 10, 50, 20); diff --git a/Projekt/Projekt/FormTank.cs b/Projekt/Projekt/FormTank.cs index 883e4ba..8c7de24 100644 --- a/Projekt/Projekt/FormTank.cs +++ b/Projekt/Projekt/FormTank.cs @@ -1,13 +1,4 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows.Forms; - + namespace Projekt { public partial class FormTank : Form -- 2.25.1 From 1c6cc2b657d0890b991942ac65d7aff7f34fc30c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D0=BA=D1=81?= Date: Thu, 20 Feb 2025 21:38:52 +0400 Subject: [PATCH 4/4] =?UTF-8?q?=D0=9B=D0=B0=D0=B1=D0=BE=D1=80=D0=B0=D1=82?= =?UTF-8?q?=D0=BE=D1=80=D0=BD=D0=B0=D1=8F1(pull=20request)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Projekt/Projekt/DirectionType.cs | 2 +- Projekt/Projekt/DrawingTank.cs | 2 +- Projekt/Projekt/EntityTank.cs | 2 +- Projekt/Projekt/FormTank.Designer.cs | 2 +- Projekt/Projekt/FormTank.cs | 2 +- Projekt/Projekt/Program.cs | 2 +- Projekt/Projekt/{Projekt.csproj => ProjektTank.csproj} | 0 Projekt/Projekt/Properties/Resources.Designer.cs | 4 ++-- Projekt/{Projekt.sln => ProjektTank.sln} | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) rename Projekt/Projekt/{Projekt.csproj => ProjektTank.csproj} (100%) rename Projekt/{Projekt.sln => ProjektTank.sln} (87%) diff --git a/Projekt/Projekt/DirectionType.cs b/Projekt/Projekt/DirectionType.cs index 6874086..66c321f 100644 --- a/Projekt/Projekt/DirectionType.cs +++ b/Projekt/Projekt/DirectionType.cs @@ -1,5 +1,5 @@  -namespace Projekt; +namespace ProjektTank; /// /// Направление перемещения /// diff --git a/Projekt/Projekt/DrawingTank.cs b/Projekt/Projekt/DrawingTank.cs index 308729e..a655f1f 100644 --- a/Projekt/Projekt/DrawingTank.cs +++ b/Projekt/Projekt/DrawingTank.cs @@ -1,5 +1,5 @@  -namespace Projekt; +namespace ProjektTank; public class DrawingTank { diff --git a/Projekt/Projekt/EntityTank.cs b/Projekt/Projekt/EntityTank.cs index 5ca1a5a..62d13f1 100644 --- a/Projekt/Projekt/EntityTank.cs +++ b/Projekt/Projekt/EntityTank.cs @@ -1,4 +1,4 @@ -namespace Projekt; +namespace ProjektTank; /// /// Класс-Сущность "танк" /// diff --git a/Projekt/Projekt/FormTank.Designer.cs b/Projekt/Projekt/FormTank.Designer.cs index e1be573..e2beec2 100644 --- a/Projekt/Projekt/FormTank.Designer.cs +++ b/Projekt/Projekt/FormTank.Designer.cs @@ -1,4 +1,4 @@ -namespace Projekt +namespace ProjektTank { partial class FormTank { diff --git a/Projekt/Projekt/FormTank.cs b/Projekt/Projekt/FormTank.cs index 8c7de24..6d53815 100644 --- a/Projekt/Projekt/FormTank.cs +++ b/Projekt/Projekt/FormTank.cs @@ -1,5 +1,5 @@  -namespace Projekt +namespace ProjektTank { public partial class FormTank : Form { diff --git a/Projekt/Projekt/Program.cs b/Projekt/Projekt/Program.cs index 00ee9a7..cb1a88c 100644 --- a/Projekt/Projekt/Program.cs +++ b/Projekt/Projekt/Program.cs @@ -1,4 +1,4 @@ -namespace Projekt +namespace ProjektTank { internal static class Program { diff --git a/Projekt/Projekt/Projekt.csproj b/Projekt/Projekt/ProjektTank.csproj similarity index 100% rename from Projekt/Projekt/Projekt.csproj rename to Projekt/Projekt/ProjektTank.csproj diff --git a/Projekt/Projekt/Properties/Resources.Designer.cs b/Projekt/Projekt/Properties/Resources.Designer.cs index 97b2076..1af5663 100644 --- a/Projekt/Projekt/Properties/Resources.Designer.cs +++ b/Projekt/Projekt/Properties/Resources.Designer.cs @@ -8,7 +8,7 @@ // //------------------------------------------------------------------------------ -namespace Projekt.Properties { +namespace ProjektTank.Properties { using System; @@ -39,7 +39,7 @@ namespace Projekt.Properties { internal static global::System.Resources.ResourceManager ResourceManager { get { if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Projekt.Properties.Resources", typeof(Resources).Assembly); + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ProjektTank.Properties.Resources", typeof(Resources).Assembly); resourceMan = temp; } return resourceMan; diff --git a/Projekt/Projekt.sln b/Projekt/ProjektTank.sln similarity index 87% rename from Projekt/Projekt.sln rename to Projekt/ProjektTank.sln index 55fcaa6..48029e6 100644 --- a/Projekt/Projekt.sln +++ b/Projekt/ProjektTank.sln @@ -3,7 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.11.35222.181 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Projekt", "Projekt\Projekt.csproj", "{E8C43317-A6CD-43B7-BB82-08DBD5C825FF}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ProjektTank", "Projekt\ProjektTank.csproj", "{E8C43317-A6CD-43B7-BB82-08DBD5C825FF}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution -- 2.25.1