From 95b7b05dc750a3eeaab935271c1ab87344041ca3 Mon Sep 17 00:00:00 2001 From: Ziyoviddin Mamadosimov Date: Fri, 13 Oct 2023 10:51:06 +0400 Subject: [PATCH] Lab1 --- Lab1/SelfPropelledArtilleryUnit.sln | 25 + Lab1/SelfPropelledArtilleryUnit/Direction.cs | 14 + .../DrawningTank.cs | 200 +++++++ Lab1/SelfPropelledArtilleryUnit/EntityTank.cs | 61 +++ .../Form1.Designer.cs | 145 +++++ Lab1/SelfPropelledArtilleryUnit/Form1.cs | 117 ++++ Lab1/SelfPropelledArtilleryUnit/Form1.resx | 507 ++++++++++++++++++ Lab1/SelfPropelledArtilleryUnit/Program.cs | 26 + .../Properties/Resources.Designer.cs | 63 +++ .../Properties/Resources.resx | 120 +++++ .../SelfPropelledArtilleryUnit.csproj | 24 + 11 files changed, 1302 insertions(+) create mode 100644 Lab1/SelfPropelledArtilleryUnit.sln create mode 100644 Lab1/SelfPropelledArtilleryUnit/Direction.cs create mode 100644 Lab1/SelfPropelledArtilleryUnit/DrawningTank.cs create mode 100644 Lab1/SelfPropelledArtilleryUnit/EntityTank.cs create mode 100644 Lab1/SelfPropelledArtilleryUnit/Form1.Designer.cs create mode 100644 Lab1/SelfPropelledArtilleryUnit/Form1.cs create mode 100644 Lab1/SelfPropelledArtilleryUnit/Form1.resx create mode 100644 Lab1/SelfPropelledArtilleryUnit/Program.cs create mode 100644 Lab1/SelfPropelledArtilleryUnit/Properties/Resources.Designer.cs create mode 100644 Lab1/SelfPropelledArtilleryUnit/Properties/Resources.resx create mode 100644 Lab1/SelfPropelledArtilleryUnit/SelfPropelledArtilleryUnit.csproj diff --git a/Lab1/SelfPropelledArtilleryUnit.sln b/Lab1/SelfPropelledArtilleryUnit.sln new file mode 100644 index 0000000..73a8f8b --- /dev/null +++ b/Lab1/SelfPropelledArtilleryUnit.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.32901.82 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SelfPropelledArtilleryUnit", "SelfPropelledArtilleryUnit\SelfPropelledArtilleryUnit.csproj", "{061F3D72-41C0-4577-A0FD-F835435A18ED}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {061F3D72-41C0-4577-A0FD-F835435A18ED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {061F3D72-41C0-4577-A0FD-F835435A18ED}.Debug|Any CPU.Build.0 = Debug|Any CPU + {061F3D72-41C0-4577-A0FD-F835435A18ED}.Release|Any CPU.ActiveCfg = Release|Any CPU + {061F3D72-41C0-4577-A0FD-F835435A18ED}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {F0BAF71E-9A87-4EFE-90D6-9AE655732244} + EndGlobalSection +EndGlobal diff --git a/Lab1/SelfPropelledArtilleryUnit/Direction.cs b/Lab1/SelfPropelledArtilleryUnit/Direction.cs new file mode 100644 index 0000000..adf2399 --- /dev/null +++ b/Lab1/SelfPropelledArtilleryUnit/Direction.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace SelfPropelledArtilleryUnit +{ + public enum Direction + { + Up = 1, + Down = 2, + Left = 3, + Right = 4 + } +} diff --git a/Lab1/SelfPropelledArtilleryUnit/DrawningTank.cs b/Lab1/SelfPropelledArtilleryUnit/DrawningTank.cs new file mode 100644 index 0000000..3d76f40 --- /dev/null +++ b/Lab1/SelfPropelledArtilleryUnit/DrawningTank.cs @@ -0,0 +1,200 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Text; +using SelfPropelledArtilleryUnit; +using System.Windows.Forms; + +namespace SelfPropelledArtilleryUnit +{ + /// + /// Класс, отвечающий за прорисовку и перемещение объекта-сущности + /// + class DrawningTank + { + + /// + /// Класс-сущность + /// + public EntityTank? EntityTank { get; private set; } + /// + /// Ширина окна + /// + private int _pictureWidth; + /// + /// Высота окна + /// + private int _pictureHeight; + /// + /// + /// Левая координата прорисовки автомобиля + /// + private int _startPosX; + /// + /// Верхняя кооридната прорисовки автомобиля + /// + private int _startPosY; + /// + /// Ширина прорисовки танка + /// + private readonly int _tankWidth = 135; + /// + /// Высота прорисовки танка + /// + private readonly int _tankHeight = 75; + + /// + /// Инициализация свойств + /// + /// Скорость + /// Вес + /// Цвет кузова + /// Дополнительный цвет + /// Признак наличия пулемета + /// Признак наличия пушки + /// Ширина картинки + /// Высота картинки + /// true - объект создан, false - проверка не пройдена,нельзя создать объект в этих размерах + public bool Init(int speed, double weight, Color bodyColor, Color additionalColor, bool machine_gun, bool cannon, int width, int height) + { + _pictureWidth = width; + _pictureHeight = height; + + if (_tankHeight >= height) + { + return false; + } + if (_tankWidth >= width) + { + return false; + } + + EntityTank = new EntityTank(); + EntityTank.Init(speed, weight, bodyColor, additionalColor, machine_gun, cannon); + return true; + + //EntityTank myTank = new EntityTank(); + //myTank.Init(50, 75.5, Color.Green, Color.Black, true, false, true); + //return true; + } + + public void SetPosition(int x, int y) + { + if (x < 0 || x > _pictureWidth - _tankWidth) + { + x = 0; + } + if (y < 0 || y > _pictureHeight - _tankHeight) + { + y = 0; + } + + _startPosX = x; + _startPosY = y; + + } + + + public void MoveTransport(Direction direction) + { + if (EntityTank == null) + { + return; + } + switch (direction) + { + //влево + case Direction.Left: + if (_startPosX - EntityTank.Step > 0) + { + _startPosX -= (int)EntityTank.Step; + } + break; + //вверх + case Direction.Up: + if (_startPosY - EntityTank.Step > 0) + { + _startPosY -= (int)EntityTank.Step; + } + break; + + // вправо + case Direction.Right: + if (_startPosX + EntityTank.Step < _pictureWidth - _tankWidth) + { + _startPosX += (int)EntityTank.Step; + } + break; + + + //вниз + case Direction.Down: + if (_startPosY + EntityTank.Step < _pictureHeight - _tankHeight) + { + _startPosY += (int)EntityTank.Step; + } + break; + + } + } + + /// + /// Прорисовка объекта + /// + /// + public void DrawTransport(Graphics g) + { + if (EntityTank == null) + { + return; + } + + Pen penBlack = new(Color.Black); + Brush additionalBrush = new SolidBrush(EntityTank.AdditionalColor); + + // пулемет + if (EntityTank.Machine_gun) + { + //залповая усутановка + g.FillRectangle(additionalBrush, _startPosX + 15, _startPosY + 20, 20, 40); + g.DrawLine(penBlack, _startPosX + 5, _startPosY + 20, _startPosX + 15, _startPosY + 25); + } + + //гусеницы + Brush brBlack = new SolidBrush(Color.Black); + Brush brBody = new SolidBrush(EntityTank.BodyColor); + g.FillEllipse(brBlack, _startPosX + 5, _startPosY + 50, 20, 20); + g.FillEllipse(brBlack, _startPosX + 30, _startPosY + 50, 20, 20); + g.FillEllipse(brBlack, _startPosX + 55, _startPosY + 50, 20, 20); + g.FillEllipse(brBlack, _startPosX + 80, _startPosY + 50, 20, 20); + g.FillEllipse(brBlack, _startPosX + 105, _startPosY + 50, 20, 20); + g.DrawEllipse(penBlack, _startPosX + 10, _startPosY + 55, 113, 20); + //пушка + Point[] pointsGun = new Point[4]; + pointsGun[0].X = _startPosX + 85; pointsGun[0].Y = _startPosY + 25; + pointsGun[1].X = _startPosX + 80; pointsGun[1].Y = _startPosY + 30; + pointsGun[2].X = _startPosX - 15; pointsGun[2].Y = _startPosY + 5; + pointsGun[3].X = _startPosX - 10; pointsGun[3].Y = _startPosY + 0; + g.FillPolygon(brBody, pointsGun); + g.DrawPolygon(penBlack, pointsGun); + //корпус + Point[] pointsCorp = new Point[4]; + pointsCorp[0].X = _startPosX; pointsCorp[0].Y = _startPosY + 60; + pointsCorp[1].X = _startPosX + 10; pointsCorp[1].Y = _startPosY + 30; + pointsCorp[2].X = _startPosX + 130; pointsCorp[2].Y = _startPosY + 30; + pointsCorp[3].X = _startPosX + 135; pointsCorp[3].Y = _startPosY + 60; + g.FillPolygon(brBody, pointsCorp); + g.DrawPolygon(penBlack, pointsCorp); + //башня + Point[] pointsHead = new Point[4]; + pointsHead[0].X = _startPosX + 60; pointsHead[0].Y = _startPosY + 30; + pointsHead[1].X = _startPosX + 65; pointsHead[1].Y = _startPosY + 15; + pointsHead[2].X = _startPosX + 90; pointsHead[2].Y = _startPosY + 15; + pointsHead[3].X = _startPosX + 95; pointsHead[3].Y = _startPosY + 30; + g.FillPolygon(brBody, pointsHead); + g.DrawPolygon(penBlack, pointsHead); + + + } + } +} diff --git a/Lab1/SelfPropelledArtilleryUnit/EntityTank.cs b/Lab1/SelfPropelledArtilleryUnit/EntityTank.cs new file mode 100644 index 0000000..4986a20 --- /dev/null +++ b/Lab1/SelfPropelledArtilleryUnit/EntityTank.cs @@ -0,0 +1,61 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Reflection.PortableExecutable; +using System.Text; + + +namespace SelfPropelledArtilleryUnit +{ + 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 Machine_gun { get; private set; } + + public bool Cannon { get; private set; } + public double Step => (double)Speed * 100 / Weight; + + + + /// + /// Инициализация полей объекта-класса спортивного автомобиля + /// + /// Скорость + /// Вес автомобиля + /// Основной цвет + /// Дополнительный цвет + /// Признак наличия пулемета + /// Признак наличия пушки + + public void Init(int speed, double weight, Color bodyColor, Color additionalColor, bool machine_gun, bool cannon) + { + Speed = speed; + Weight = weight; + BodyColor = bodyColor; + AdditionalColor = additionalColor; + + Machine_gun = machine_gun; + Cannon = cannon; + + } + } +} diff --git a/Lab1/SelfPropelledArtilleryUnit/Form1.Designer.cs b/Lab1/SelfPropelledArtilleryUnit/Form1.Designer.cs new file mode 100644 index 0000000..4e699e1 --- /dev/null +++ b/Lab1/SelfPropelledArtilleryUnit/Form1.Designer.cs @@ -0,0 +1,145 @@ + +namespace SelfPropelledArtilleryUnit +{ + 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() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormTank)); + buttonCreateTank = new System.Windows.Forms.Button(); + buttonUp = new System.Windows.Forms.Button(); + buttonDown = new System.Windows.Forms.Button(); + buttonLeft = new System.Windows.Forms.Button(); + buttonRight = new System.Windows.Forms.Button(); + pictureboxTankk = new System.Windows.Forms.PictureBox(); + ((System.ComponentModel.ISupportInitialize)pictureboxTankk).BeginInit(); + SuspendLayout(); + // + // buttonCreateTank + // + buttonCreateTank.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left; + buttonCreateTank.Location = new System.Drawing.Point(31, 398); + buttonCreateTank.Name = "buttonCreateTank"; + buttonCreateTank.Size = new System.Drawing.Size(94, 29); + buttonCreateTank.TabIndex = 1; + buttonCreateTank.Text = "Создать"; + buttonCreateTank.UseVisualStyleBackColor = true; + buttonCreateTank.Click += buttonCreate_Click; + // + // buttonUp + // + buttonUp.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right; + buttonUp.BackgroundImage = (System.Drawing.Image)resources.GetObject("buttonUp.BackgroundImage"); + buttonUp.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; + buttonUp.Location = new System.Drawing.Point(680, 361); + buttonUp.Name = "buttonUp"; + buttonUp.Size = new System.Drawing.Size(94, 29); + buttonUp.TabIndex = 2; + buttonUp.Text = "\\"; + buttonUp.UseVisualStyleBackColor = true; + buttonUp.Click += ButtonMove_Click; + // + // buttonDown + // + buttonDown.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right; + buttonDown.BackgroundImage = (System.Drawing.Image)resources.GetObject("buttonDown.BackgroundImage"); + buttonDown.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; + buttonDown.Location = new System.Drawing.Point(680, 396); + buttonDown.Name = "buttonDown"; + buttonDown.Size = new System.Drawing.Size(94, 29); + buttonDown.TabIndex = 3; + buttonDown.UseVisualStyleBackColor = true; + buttonDown.Click += ButtonMove_Click; + // + // buttonLeft + // + buttonLeft.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right; + buttonLeft.BackgroundImage = (System.Drawing.Image)resources.GetObject("buttonLeft.BackgroundImage"); + buttonLeft.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; + buttonLeft.Location = new System.Drawing.Point(580, 396); + buttonLeft.Name = "buttonLeft"; + buttonLeft.Size = new System.Drawing.Size(94, 29); + buttonLeft.TabIndex = 4; + buttonLeft.UseVisualStyleBackColor = true; + buttonLeft.Click += ButtonMove_Click; + // + // buttonRight + // + buttonRight.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right; + buttonRight.BackgroundImage = (System.Drawing.Image)resources.GetObject("buttonRight.BackgroundImage"); + buttonRight.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; + buttonRight.Location = new System.Drawing.Point(784, 396); + buttonRight.Name = "buttonRight"; + buttonRight.Size = new System.Drawing.Size(94, 29); + buttonRight.TabIndex = 5; + buttonRight.UseVisualStyleBackColor = true; + buttonRight.Click += ButtonMove_Click; + // + // pictureboxTankk + // + pictureboxTankk.Dock = System.Windows.Forms.DockStyle.Fill; + pictureboxTankk.Location = new System.Drawing.Point(0, 0); + pictureboxTankk.Name = "pictureboxTankk"; + pictureboxTankk.Size = new System.Drawing.Size(882, 453); + pictureboxTankk.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; + pictureboxTankk.TabIndex = 6; + pictureboxTankk.TabStop = false; + pictureboxTankk.Click += pictureBox1_Click_1; + // + // FormTank + // + AutoScaleDimensions = new System.Drawing.SizeF(8F, 20F); + AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + ClientSize = new System.Drawing.Size(882, 453); + Controls.Add(buttonRight); + Controls.Add(buttonLeft); + Controls.Add(buttonDown); + Controls.Add(buttonUp); + Controls.Add(buttonCreateTank); + Controls.Add(pictureboxTankk); + Name = "FormTank"; + StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + Text = "TANK"; + Load += Form1_Load; + ((System.ComponentModel.ISupportInitialize)pictureboxTankk).EndInit(); + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private System.Windows.Forms.PictureBox pictureBoxTank; + private System.Windows.Forms.PictureBox pictureBoxTanka; + private System.Windows.Forms.Button buttonCreateTank; + private System.Windows.Forms.Button buttonUp; + private System.Windows.Forms.Button buttonDown; + private System.Windows.Forms.Button buttonLeft; + private System.Windows.Forms.Button buttonRight; + private System.Windows.Forms.PictureBox pictureboxTankk; + } +} + diff --git a/Lab1/SelfPropelledArtilleryUnit/Form1.cs b/Lab1/SelfPropelledArtilleryUnit/Form1.cs new file mode 100644 index 0000000..736db88 --- /dev/null +++ b/Lab1/SelfPropelledArtilleryUnit/Form1.cs @@ -0,0 +1,117 @@ +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; +using SelfPropelledArtilleryUnit; + +namespace SelfPropelledArtilleryUnit +{ + public partial class FormTank : Form + { + // + /// Поле-объект для прорисовки объекта + /// + private DrawningTank? _drawningTank; + public FormTank() + { + InitializeComponent(); + + } + + /// + /// Метод прорисовки машины + /// + private void Draw() + { + if (_drawningTank == null) + { + return; + } + Bitmap bmp = new(pictureboxTankk.Width, pictureboxTankk.Height); + Graphics gr = Graphics.FromImage(bmp); + _drawningTank.DrawTransport(gr); + pictureboxTankk.Image = bmp; + + } + + + /// + /// Изменение размеров формы + /// + /// + /// + private void ButtonMove_Click(object sender, EventArgs e) + { + if (_drawningTank == null) + { + return; + } + string name = ((Button)sender)?.Name ?? string.Empty; + switch (name) + { + case "buttonUp": + _drawningTank.MoveTransport(Direction.Up); + break; + case "buttonDown": + _drawningTank.MoveTransport(Direction.Down); + break; + case "buttonLeft": + _drawningTank.MoveTransport(Direction.Left); + break; + case "buttonRight": + _drawningTank.MoveTransport(Direction.Right); + break; + } + Draw(); + } + + + + + + private void buttonUp_Click(object sender, EventArgs e) + { + + } + + private void Form1_Load(object sender, EventArgs e) + { + + } + + /// + /// Обработка нажатия кнопки "Создать" + /// + /// + /// + private void buttonCreate_Click(object sender, EventArgs e) + { + Random random = new(); + _drawningTank = new DrawningTank(); + _drawningTank.Init(random.Next(100, 300), + random.Next(1000, 3000), + Color.FromArgb(random.Next(0, 256), random.Next(0, 256), + random.Next(0, 256)), + Color.FromArgb(random.Next(0, 256), random.Next(0, 256), + random.Next(0, 256)), + Convert.ToBoolean(random.Next(0, 2)), Convert.ToBoolean(random.Next(0, 2)), pictureboxTankk.Width, pictureboxTankk.Height); + _drawningTank.SetPosition(random.Next(10, 100), + random.Next(10, 100)); + Draw(); + } + + + + + private void pictureBox1_Click_1(object sender, EventArgs e) + { + + } + } + +} diff --git a/Lab1/SelfPropelledArtilleryUnit/Form1.resx b/Lab1/SelfPropelledArtilleryUnit/Form1.resx new file mode 100644 index 0000000..e940273 --- /dev/null +++ b/Lab1/SelfPropelledArtilleryUnit/Form1.resx @@ -0,0 +1,507 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + + 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 + iLv2vAAAAABJRU5ErkJggg== + + + + + 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 + iEYKuLvV/wF56HRibp0XtwAAAABJRU5ErkJggg== + + + + + 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 + FQAAAABJRU5ErkJggg== + + + + + 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 + + + \ No newline at end of file diff --git a/Lab1/SelfPropelledArtilleryUnit/Program.cs b/Lab1/SelfPropelledArtilleryUnit/Program.cs new file mode 100644 index 0000000..2e78f38 --- /dev/null +++ b/Lab1/SelfPropelledArtilleryUnit/Program.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace SelfPropelledArtilleryUnit +{ + static class Program + { + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main() + { + //Application.SetHighDpiMode(HighDpiMode.SystemAware); + //Application.EnableVisualStyles(); + //Application.SetCompatibleTextRenderingDefault(false); + //Application.Run(new FormTank()); + + ApplicationConfiguration.Initialize(); + Application.Run(new FormTank()); + } + } +} diff --git a/Lab1/SelfPropelledArtilleryUnit/Properties/Resources.Designer.cs b/Lab1/SelfPropelledArtilleryUnit/Properties/Resources.Designer.cs new file mode 100644 index 0000000..77038aa --- /dev/null +++ b/Lab1/SelfPropelledArtilleryUnit/Properties/Resources.Designer.cs @@ -0,0 +1,63 @@ +//------------------------------------------------------------------------------ +// +// Этот код создан программой. +// Исполняемая версия: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", "16.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; + } + } + } +} diff --git a/Lab1/SelfPropelledArtilleryUnit/Properties/Resources.resx b/Lab1/SelfPropelledArtilleryUnit/Properties/Resources.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/Lab1/SelfPropelledArtilleryUnit/Properties/Resources.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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/Lab1/SelfPropelledArtilleryUnit/SelfPropelledArtilleryUnit.csproj b/Lab1/SelfPropelledArtilleryUnit/SelfPropelledArtilleryUnit.csproj new file mode 100644 index 0000000..2f866a5 --- /dev/null +++ b/Lab1/SelfPropelledArtilleryUnit/SelfPropelledArtilleryUnit.csproj @@ -0,0 +1,24 @@ + + + + WinExe + net6.0-windows + true + + + + + True + True + Resources.resx + + + + + + ResXFileCodeGenerator + Resources.Designer.cs + + + + \ No newline at end of file