From 0a2b26ea0eed18c3ebd15ca0f7814cd4fc91838f Mon Sep 17 00:00:00 2001 From: Danil Kargin Date: Sun, 2 Oct 2022 11:44:59 +0400 Subject: [PATCH 1/3] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B2=D0=B0=D1=8F=20?= =?UTF-8?q?=D0=BB=D0=B0=D0=B1=D0=BE=D1=80=D0=B0=D1=82=D0=BE=D1=80=D0=BD?= =?UTF-8?q?=D0=B0=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AirFighter/AirFighter/AirFighter.csproj | 15 ++ AirFighter/AirFighter/Direction.cs | 19 ++ AirFighter/AirFighter/DrawningAirFighter.cs | 194 ++++++++++++++++++ AirFighter/AirFighter/EntityAirFighter.cs | 45 ++++ AirFighter/AirFighter/Form1.Designer.cs | 39 ---- AirFighter/AirFighter/Form1.cs | 10 - .../AirFighter/FormAirFighter.Designer.cs | 180 ++++++++++++++++ AirFighter/AirFighter/FormAirFighter.cs | 76 +++++++ AirFighter/AirFighter/FormAirFighter.resx | 66 ++++++ AirFighter/AirFighter/Program.cs | 2 +- .../Properties/Resources.Designer.cs | 103 ++++++++++ .../{Form1.resx => Properties/Resources.resx} | 13 ++ AirFighter/AirFighter/Resources/Down.png | Bin 0 -> 27132 bytes AirFighter/AirFighter/Resources/Left.png | Bin 0 -> 27367 bytes AirFighter/AirFighter/Resources/Right.png | Bin 0 -> 27527 bytes AirFighter/AirFighter/Resources/Up.png | Bin 0 -> 26873 bytes 16 files changed, 712 insertions(+), 50 deletions(-) create mode 100644 AirFighter/AirFighter/Direction.cs create mode 100644 AirFighter/AirFighter/DrawningAirFighter.cs create mode 100644 AirFighter/AirFighter/EntityAirFighter.cs delete mode 100644 AirFighter/AirFighter/Form1.Designer.cs delete mode 100644 AirFighter/AirFighter/Form1.cs create mode 100644 AirFighter/AirFighter/FormAirFighter.Designer.cs create mode 100644 AirFighter/AirFighter/FormAirFighter.cs create mode 100644 AirFighter/AirFighter/FormAirFighter.resx create mode 100644 AirFighter/AirFighter/Properties/Resources.Designer.cs rename AirFighter/AirFighter/{Form1.resx => Properties/Resources.resx} (84%) create mode 100644 AirFighter/AirFighter/Resources/Down.png create mode 100644 AirFighter/AirFighter/Resources/Left.png create mode 100644 AirFighter/AirFighter/Resources/Right.png create mode 100644 AirFighter/AirFighter/Resources/Up.png diff --git a/AirFighter/AirFighter/AirFighter.csproj b/AirFighter/AirFighter/AirFighter.csproj index b57c89e..13ee123 100644 --- a/AirFighter/AirFighter/AirFighter.csproj +++ b/AirFighter/AirFighter/AirFighter.csproj @@ -8,4 +8,19 @@ enable + + + True + True + Resources.resx + + + + + + ResXFileCodeGenerator + Resources.Designer.cs + + + \ No newline at end of file diff --git a/AirFighter/AirFighter/Direction.cs b/AirFighter/AirFighter/Direction.cs new file mode 100644 index 0000000..48cf999 --- /dev/null +++ b/AirFighter/AirFighter/Direction.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace AirFighter +{ + /// + /// Направление перемещения + /// + internal enum Direction + { + Up = 1, + Down = 2, + Left = 3, + Right = 4 + } +} diff --git a/AirFighter/AirFighter/DrawningAirFighter.cs b/AirFighter/AirFighter/DrawningAirFighter.cs new file mode 100644 index 0000000..f601cda --- /dev/null +++ b/AirFighter/AirFighter/DrawningAirFighter.cs @@ -0,0 +1,194 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace AirFighter +{ + /// + /// Класс отвечающий за прорисовку и перемещение объекта-сущности + /// + internal class DrawningAirFighter + { + /// + /// Класс-сущность + /// + public EntityAirFighter AirFighter { private set; get; } + /// + /// Левая координата отрисовки самолета + /// + private float _startPosX; + /// + /// Верхняя кооридната отрисовки самолета + /// + private float _startPosY; + /// + /// Ширина окна отрисовки + /// + private int? _pictureWidth = null; + /// + /// Высота окна отрисовки + /// + private int? _pictureHeight = null; + /// + /// Ширина отрисовки самолета + /// + private readonly int _airFighterWidth = 80; + /// + /// Высота отрисовки самолета + /// + private readonly int _airFighterHeight = 70; + /// + /// Инициализация свойств + /// + /// Скорость + /// Вес самолета + /// Цвет кузова + public void Init(int speed, float weight, Color bodyColor) + { + AirFighter = new EntityAirFighter(); + AirFighter.Init(speed, weight, bodyColor); + } + /// + /// Установка позиции самолета + /// + /// Координата X + /// Координата Y + /// Ширина картинки + /// Высота картинки + public void SetPosition(int x, int y, int width, int height) + { + if (x < 0) + { + x = 10; + } + if (y < 0) + { + y = 10; + } + if (width < 0) + { + width = 700; + } + if (height < 0) + { + height = 400; + } + if (x + _airFighterWidth > width && y + _airFighterHeight > height) + { + _pictureWidth = null; + _pictureHeight = null; + return; + } + _startPosX = x; + _startPosY = y; + _pictureWidth = width; + _pictureHeight = height; + } + /// + /// Изменение направления перемещения + /// + /// Направление + public void MoveTransport(Direction direction) + { + if (!_pictureWidth.HasValue || !_pictureHeight.HasValue) + { + return; + } + switch (direction) + { + // вправо + case Direction.Right: + if (_startPosX + _airFighterWidth + AirFighter.Step < _pictureWidth) + { + _startPosX += AirFighter.Step; + } + break; + //влево + case Direction.Left: + if (_startPosX - AirFighter.Step >= 0) + { + _startPosX -= AirFighter.Step; + } + break; + //вверх + case Direction.Up: + if (_startPosY - AirFighter.Step >= 0) + { + _startPosY -= AirFighter.Step; + } + break; + //вниз + case Direction.Down: + if (_startPosY + _airFighterHeight + AirFighter.Step < _pictureHeight) + { + _startPosY += AirFighter.Step; + } + break; + } + } + /// + /// Отрисовка самолета + /// + public void DrawAirFighter(Graphics g) + { + if (_startPosX < 0 || _startPosY < 0 || !_pictureHeight.HasValue || !_pictureWidth.HasValue) + { + return; + } + Pen pen = new(Color.Black); + PointF[] pointAirFighter = + { + new PointF(_startPosX + 80, _startPosY + 35), + new PointF(_startPosX + 70, _startPosY + 30), + new PointF(_startPosX + 30, _startPosY + 30), + new PointF(_startPosX + 35, _startPosY), + new PointF(_startPosX + 40, _startPosY), + new PointF(_startPosX + 40, _startPosY + 30), + new PointF(_startPosX, _startPosY + 30), + new PointF(_startPosX, _startPosY + 15), + new PointF(_startPosX + 10, _startPosY + 25), + new PointF(_startPosX + 10, _startPosY + 30), + new PointF(_startPosX, _startPosY + 30), + new PointF(_startPosX, _startPosY + 55), + new PointF(_startPosX + 10, _startPosY + 45), + new PointF(_startPosX + 10, _startPosY + 40), + new PointF(_startPosX, _startPosY + 40), + new PointF(_startPosX + 40, _startPosY + 40), + new PointF(_startPosX + 40, _startPosY + 70), + new PointF(_startPosX + 35, _startPosY + 70), + new PointF(_startPosX + 30, _startPosY + 40), + new PointF(_startPosX + 70, _startPosY + 40) + }; + SolidBrush brushAirFighter = new SolidBrush(AirFighter.BodyColor); + g.FillPolygon(brushAirFighter, pointAirFighter); + g.DrawPolygon(pen, pointAirFighter); + } + + /// + /// Смена границ формы отрисовки + /// + /// Ширина картинки + /// Высота картинки + public void ChangeBorders(int width, int height) + { + _pictureWidth = width; + _pictureHeight = height; + if (_pictureWidth <= _airFighterWidth || _pictureHeight <= _airFighterHeight) + { + _pictureWidth = null; + _pictureHeight = null; + return; + } + if (_startPosX + _airFighterWidth > _pictureWidth.Value) + { + _startPosX = _pictureWidth.Value - _airFighterWidth; + } + if (_startPosY + _airFighterHeight > _pictureHeight.Value) + { + _startPosY = _pictureHeight.Value - _airFighterHeight; + } + } + } +} diff --git a/AirFighter/AirFighter/EntityAirFighter.cs b/AirFighter/AirFighter/EntityAirFighter.cs new file mode 100644 index 0000000..9a2262c --- /dev/null +++ b/AirFighter/AirFighter/EntityAirFighter.cs @@ -0,0 +1,45 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace AirFighter +{ + /// + /// Класс-сущность "Военный самолет" + /// + internal class EntityAirFighter + { + /// + /// Скорость + /// + public int Speed { get; private set; } + /// + /// Вес + /// + public float Weight { get; private set; } + /// + /// Цвет корпуса + /// + public Color BodyColor { get; private set; } + /// + /// Шаг перемещения самолета + /// + public float Step => Speed * 100 / Weight; + /// + /// Инициализация полей объекта-класса самолета + /// + /// + /// + /// + /// + public void Init(int speed, float weight, Color bodyColor) + { + Random rnd = new(); + Speed = speed <= 0 ? rnd.Next(50, 150) : speed; + Weight = weight <= 0 ? rnd.Next(40, 70) : weight; + BodyColor = bodyColor; + } + } +} diff --git a/AirFighter/AirFighter/Form1.Designer.cs b/AirFighter/AirFighter/Form1.Designer.cs deleted file mode 100644 index 107e2e0..0000000 --- a/AirFighter/AirFighter/Form1.Designer.cs +++ /dev/null @@ -1,39 +0,0 @@ -namespace AirFighter -{ - 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/AirFighter/AirFighter/Form1.cs b/AirFighter/AirFighter/Form1.cs deleted file mode 100644 index dc93bbf..0000000 --- a/AirFighter/AirFighter/Form1.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace AirFighter -{ - public partial class Form1 : Form - { - public Form1() - { - InitializeComponent(); - } - } -} \ No newline at end of file diff --git a/AirFighter/AirFighter/FormAirFighter.Designer.cs b/AirFighter/AirFighter/FormAirFighter.Designer.cs new file mode 100644 index 0000000..fbca490 --- /dev/null +++ b/AirFighter/AirFighter/FormAirFighter.Designer.cs @@ -0,0 +1,180 @@ +namespace AirFighter +{ + partial class FormAirFighter + { + /// + /// 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.pictureBoxAirFighter = new System.Windows.Forms.PictureBox(); + this.statusStrip = new System.Windows.Forms.StatusStrip(); + this.toolStripStatusLabelSpeed = new System.Windows.Forms.ToolStripStatusLabel(); + this.toolStripStatusLabelWeight = new System.Windows.Forms.ToolStripStatusLabel(); + this.toolStripStatusLabelBodyColor = new System.Windows.Forms.ToolStripStatusLabel(); + this.buttonCreate = new System.Windows.Forms.Button(); + this.buttonUp = new System.Windows.Forms.Button(); + this.buttonDown = new System.Windows.Forms.Button(); + this.buttonLeft = new System.Windows.Forms.Button(); + this.buttonRight = new System.Windows.Forms.Button(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxAirFighter)).BeginInit(); + this.statusStrip.SuspendLayout(); + this.SuspendLayout(); + // + // pictureBoxAirFighter + // + this.pictureBoxAirFighter.Dock = System.Windows.Forms.DockStyle.Fill; + this.pictureBoxAirFighter.Location = new System.Drawing.Point(0, 0); + this.pictureBoxAirFighter.Name = "pictureBoxAirFighter"; + this.pictureBoxAirFighter.Size = new System.Drawing.Size(800, 424); + this.pictureBoxAirFighter.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; + this.pictureBoxAirFighter.TabIndex = 0; + this.pictureBoxAirFighter.TabStop = false; + this.pictureBoxAirFighter.Resize += new System.EventHandler(this.PictureBoxAirFighter_Resize); + // + // statusStrip + // + this.statusStrip.ImageScalingSize = new System.Drawing.Size(20, 20); + this.statusStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripStatusLabelSpeed, + this.toolStripStatusLabelWeight, + this.toolStripStatusLabelBodyColor}); + this.statusStrip.Location = new System.Drawing.Point(0, 424); + this.statusStrip.Name = "statusStrip"; + this.statusStrip.Size = new System.Drawing.Size(800, 26); + this.statusStrip.TabIndex = 1; + // + // toolStripStatusLabelSpeed + // + this.toolStripStatusLabelSpeed.Name = "toolStripStatusLabelSpeed"; + this.toolStripStatusLabelSpeed.Size = new System.Drawing.Size(80, 20); + this.toolStripStatusLabelSpeed.Text = "Скорость: "; + // + // toolStripStatusLabelWeight + // + this.toolStripStatusLabelWeight.Name = "toolStripStatusLabelWeight"; + this.toolStripStatusLabelWeight.Size = new System.Drawing.Size(40, 20); + this.toolStripStatusLabelWeight.Text = "Вес: "; + // + // toolStripStatusLabelBodyColor + // + this.toolStripStatusLabelBodyColor.Name = "toolStripStatusLabelBodyColor"; + this.toolStripStatusLabelBodyColor.Size = new System.Drawing.Size(49, 20); + this.toolStripStatusLabelBodyColor.Text = "Цвет: "; + // + // buttonCreate + // + this.buttonCreate.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.buttonCreate.Location = new System.Drawing.Point(39, 378); + this.buttonCreate.Name = "buttonCreate"; + this.buttonCreate.Size = new System.Drawing.Size(94, 29); + this.buttonCreate.TabIndex = 2; + this.buttonCreate.Text = "Создать"; + this.buttonCreate.UseVisualStyleBackColor = true; + this.buttonCreate.Click += new System.EventHandler(this.ButtonCreate_Click); + // + // buttonUp + // + this.buttonUp.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.buttonUp.BackgroundImage = global::AirFighter.Properties.Resources.Up; + this.buttonUp.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.buttonUp.Location = new System.Drawing.Point(722, 341); + 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); + // + // buttonDown + // + this.buttonDown.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.buttonDown.BackgroundImage = global::AirFighter.Properties.Resources.Down; + this.buttonDown.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.buttonDown.Location = new System.Drawing.Point(722, 377); + this.buttonDown.Name = "buttonDown"; + this.buttonDown.Size = new System.Drawing.Size(30, 30); + this.buttonDown.TabIndex = 4; + this.buttonDown.UseVisualStyleBackColor = true; + this.buttonDown.Click += new System.EventHandler(this.ButtonMove_Click); + // + // buttonLeft + // + this.buttonLeft.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.buttonLeft.BackgroundImage = global::AirFighter.Properties.Resources.Left; + this.buttonLeft.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.buttonLeft.Location = new System.Drawing.Point(686, 377); + this.buttonLeft.Name = "buttonLeft"; + this.buttonLeft.Size = new System.Drawing.Size(30, 30); + this.buttonLeft.TabIndex = 5; + this.buttonLeft.UseVisualStyleBackColor = true; + this.buttonLeft.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::AirFighter.Properties.Resources.Right; + this.buttonRight.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.buttonRight.Location = new System.Drawing.Point(758, 378); + this.buttonRight.Name = "buttonRight"; + this.buttonRight.Size = new System.Drawing.Size(30, 30); + this.buttonRight.TabIndex = 6; + this.buttonRight.UseVisualStyleBackColor = true; + this.buttonRight.Click += new System.EventHandler(this.ButtonMove_Click); + // + // FormAirFighter + // + this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 20F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(800, 450); + this.Controls.Add(this.buttonRight); + this.Controls.Add(this.buttonLeft); + this.Controls.Add(this.buttonDown); + this.Controls.Add(this.buttonUp); + this.Controls.Add(this.buttonCreate); + this.Controls.Add(this.pictureBoxAirFighter); + this.Controls.Add(this.statusStrip); + this.Name = "FormAirFighter"; + this.Text = "Военный самолет"; + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxAirFighter)).EndInit(); + this.statusStrip.ResumeLayout(false); + this.statusStrip.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private PictureBox pictureBoxAirFighter; + private StatusStrip statusStrip; + private ToolStripStatusLabel toolStripStatusLabelSpeed; + private ToolStripStatusLabel toolStripStatusLabelWeight; + private ToolStripStatusLabel toolStripStatusLabelBodyColor; + private Button buttonCreate; + private Button buttonUp; + private Button buttonDown; + private Button buttonLeft; + private Button buttonRight; + } +} \ No newline at end of file diff --git a/AirFighter/AirFighter/FormAirFighter.cs b/AirFighter/AirFighter/FormAirFighter.cs new file mode 100644 index 0000000..0ac2d98 --- /dev/null +++ b/AirFighter/AirFighter/FormAirFighter.cs @@ -0,0 +1,76 @@ +namespace AirFighter +{ + public partial class FormAirFighter : Form + { + private DrawningAirFighter _airFighter; + public FormAirFighter() + { + InitializeComponent(); + } + /// + /// + /// + private void Draw() + { + if (pictureBoxAirFighter.Height <= 0 || pictureBoxAirFighter.Width <= 0) + { + return; + } + Bitmap bmp = new(pictureBoxAirFighter.Width, pictureBoxAirFighter.Height); + Graphics g = Graphics.FromImage(bmp); + _airFighter?.DrawAirFighter(g); + pictureBoxAirFighter.Image = bmp; + } + /// + /// "" + /// + /// + /// + private void ButtonCreate_Click(object sender, EventArgs e) + { + _airFighter = new DrawningAirFighter(); + Random rnd = new Random(); + _airFighter.Init(rnd.Next(200, 500), rnd.Next(2000, 5000), Color.FromArgb(rnd.Next(0, 256), rnd.Next(0, 256), rnd.Next(0, 256))); + _airFighter.SetPosition(rnd.Next(10, 100), rnd.Next(10, 100), pictureBoxAirFighter.Width, pictureBoxAirFighter.Height); + toolStripStatusLabelSpeed.Text = $": {_airFighter.AirFighter?.Speed}"; + toolStripStatusLabelWeight.Text = $": {_airFighter.AirFighter?.Weight}"; + toolStripStatusLabelBodyColor.Text = $": {_airFighter.AirFighter?.BodyColor}"; + Draw(); + } + /// + /// + /// + /// + /// + private void ButtonMove_Click(object sender, EventArgs e) + { + string name = ((Button)sender)?.Name ?? string.Empty; + switch (name) + { + case "buttonUp": + _airFighter?.MoveTransport(Direction.Up); + break; + case "buttonDown": + _airFighter?.MoveTransport(Direction.Down); + break; + case "buttonLeft": + _airFighter?.MoveTransport(Direction.Left); + break; + case "buttonRight": + _airFighter?.MoveTransport(Direction.Right); + break; + } + Draw(); + } + /// + /// + /// + /// + /// + private void PictureBoxAirFighter_Resize(object sender, EventArgs e) + { + _airFighter?.ChangeBorders(pictureBoxAirFighter.Width, pictureBoxAirFighter.Height); + Draw(); + } + } +} \ No newline at end of file diff --git a/AirFighter/AirFighter/FormAirFighter.resx b/AirFighter/AirFighter/FormAirFighter.resx new file mode 100644 index 0000000..0e32c41 --- /dev/null +++ b/AirFighter/AirFighter/FormAirFighter.resx @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + 17, 17 + + + 63 + + \ No newline at end of file diff --git a/AirFighter/AirFighter/Program.cs b/AirFighter/AirFighter/Program.cs index 20f1938..61bec04 100644 --- a/AirFighter/AirFighter/Program.cs +++ b/AirFighter/AirFighter/Program.cs @@ -11,7 +11,7 @@ namespace AirFighter // 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 FormAirFighter()); } } } \ No newline at end of file diff --git a/AirFighter/AirFighter/Properties/Resources.Designer.cs b/AirFighter/AirFighter/Properties/Resources.Designer.cs new file mode 100644 index 0000000..a261e77 --- /dev/null +++ b/AirFighter/AirFighter/Properties/Resources.Designer.cs @@ -0,0 +1,103 @@ +//------------------------------------------------------------------------------ +// +// Этот код создан программой. +// Исполняемая версия:4.0.30319.42000 +// +// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае +// повторной генерации кода. +// +//------------------------------------------------------------------------------ + +namespace AirFighter.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("AirFighter.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/AirFighter/AirFighter/Form1.resx b/AirFighter/AirFighter/Properties/Resources.resx similarity index 84% rename from AirFighter/AirFighter/Form1.resx rename to AirFighter/AirFighter/Properties/Resources.resx index 1af7de1..38bb323 100644 --- a/AirFighter/AirFighter/Form1.resx +++ b/AirFighter/AirFighter/Properties/Resources.resx @@ -117,4 +117,17 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\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 + + + ..\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 + \ No newline at end of file diff --git a/AirFighter/AirFighter/Resources/Down.png b/AirFighter/AirFighter/Resources/Down.png new file mode 100644 index 0000000000000000000000000000000000000000..6378ef3262240a5cdd174c1c2c4a08d848d34740 GIT binary patch literal 27132 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 literal 0 HcmV?d00001 diff --git a/AirFighter/AirFighter/Resources/Left.png b/AirFighter/AirFighter/Resources/Left.png new file mode 100644 index 0000000000000000000000000000000000000000..559bcdc66168d0c5c0ffbf956f90eb97ea773537 GIT binary patch literal 27367 zcmX_{Wl&pP8?LF)7I(J-E$;3ViWLv;PAKkByinXJ#ogWAAr!ab4#k37gG1nK-tV0A zBa=yHGHYk8$M0)}DJx2&Arm7bARwT9k&#eAKzJbmycFNP1io>^fn5V{FPv4R#StpU zN%w&duPwwB#1If_Vo)B85rNN04l>%#2nguC )_Qhrh2v*)-B*fId860Q8VaN08 z^J&mqksW?6X6As#KN{8wZ%gKosd1Hy22HIB<}_3i#GcRxh~D-SNsCE{O&a&-l3_7S zS*ptCOjyc(!Lh=YT?+o0HgNwdEx&L6wtZgP-RFAAE6Zp6R>W`OFhpt2v#Mc!Eo;J} z3U-@*dcBr5@_3>2bRntV`FL67?0p_#$aEbid_u`EYRo{kzBjh;7aIvOHub zMGc+9{rQR83fIQ39|>M1mEu_LI~uC*GttDy&-S~#Wx1NCFj$}JwB)^312Qw_+G8FI8TV&Gf{Eg;^=<$NtKU?MGqn)!2PV; zocj@<0)MfXBl(S_IJamx3JT;~r?j&U=y#Qcg-nDMR2+0Q$iz=OPn4r-VH~I7-1z1S zC3-@4?6(F9N|+Ai^?A!~X5M^d^Jcgx%;Is>@J`NeU%kq6HVlVW2+ibF0zBbq!f>z} z0g2nKIE)ec_s(|o@WN&^Fcm+)IT{NuSo+n}LsD8Sg9!l#Rd6=~KHHeEwNntI>ong9( zFS9h+g&dOguua=_QNXJ2b=;t~Yn%Bx2dDcF2p9QMKaMO)p7yn5{T5U}rT#-x!RLq6 z?#c5Bxfb%Mq4OgloNyI&O@)(6oYiE^T_@!Ek^^k+s-tgYPCknj9(5{&>N zght@u4_8tQJpNMCafyMx=v%l)U9)nJy22typg7BLF*%}sKMeZ^kJMWM^d$23okZQv z`?juo*D9|J3CT-5ExrD&Bn$*5KM^Hviz+n38wkOkS)w>C&d$(i%~w-)M%=+lT%rJa zQs2wIRGr}H=MQWR5ncQlR*Lbh`iCL3h> zxlc7ICS_DRw_j{K|e>2Oi=q0 zL|US{y(N2ISY2r%jAq}2MezGIBa+;=(l@Xtj0jg)RLrGA5H;BXZJ-Gxj_ky<4~giYp}f)5*hA|>+8>M=%6Pf5 zXWXB=QifcF8FOXmio+Glehr!u(C`J84vkcH$yyI)lT>vbg-*HPPF~eGNp6U{@&()Q zUKGccffIAV`T8k}`ta>|C2~<;(jedb<@K{*-iN;!kMH$ccDU2d!Q&B+T~F6fB9|pf zlS7e|3F4%ax3PceC%DY0`h62$Vw*zBPlOmghad3G@G@dbE=uYQ%t}bU{4KEEOagO# ztu#1m0(LErcP4d*6~9#a^K;u%p(U>T6Q$zTuz*KKtuAbMoQ{(iE39-Ma4QYEDxB@B zko$m|Jd|ee?3>{;Zb2tgZ6fhX3Y7V@MM3Ri!9Dfisac^YrF1?=AR)M<#z`M7)>*9I z%{4tXbY0D>$u5wYM6T6$J?yahZBtWh^nS+B-K zY0W4bY?-3#r1SYbEs6v(K4nX#W?meX=oCc+qa^J|&3Um_R7uyJEhdhC?M^6@mixIn z3{y(o%((u=b(oUTdJ~rFbg0tdl|PoJC{GwAgK}$4J8`k}4gJQ4!nL`V@lZ8$Hyj4| zYkfTv7X1??Hb_{;WJEAD1%4&YO*HPEQQXE+c)$-0W0;SwN1eWfJ}p(ji7O%o<65&@ z-@EgG6(f-+K&jZ