From d8ef872ff374958cfc1854969d0cf69f2291f7a4 Mon Sep 17 00:00:00 2001 From: MaxKarme <91691525+MaxKarme@users.noreply.github.com> Date: Tue, 20 Sep 2022 19:46:51 +0300 Subject: [PATCH 1/3] main commit --- AirFighter/AirFighter/AirFighter.csproj | 15 ++ AirFighter/AirFighter/Direction.cs | 16 ++ AirFighter/AirFighter/DrawingAirFighter.cs | 159 +++++++++++++++ AirFighter/AirFighter/EntityAirFighter.cs | 26 +++ AirFighter/AirFighter/Form1.Designer.cs | 39 ---- AirFighter/AirFighter/Form1.cs | 10 - .../AirFighter/FormAirFighter.Designer.cs | 185 ++++++++++++++++++ AirFighter/AirFighter/FormAirFighter.cs | 72 +++++++ AirFighter/AirFighter/FormAirFighter.resx | 63 ++++++ AirFighter/AirFighter/Program.cs | 2 +- .../Properties/Resources.Designer.cs | 103 ++++++++++ .../{Form1.resx => Properties/Resources.resx} | 13 ++ AirFighter/AirFighter/Resources/down.png | Bin 0 -> 4612 bytes AirFighter/AirFighter/Resources/left.png | Bin 0 -> 4890 bytes AirFighter/AirFighter/Resources/right.png | Bin 0 -> 4922 bytes AirFighter/AirFighter/Resources/up.png | Bin 0 -> 1749 bytes 16 files changed, 653 insertions(+), 50 deletions(-) create mode 100644 AirFighter/AirFighter/Direction.cs create mode 100644 AirFighter/AirFighter/DrawingAirFighter.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..7e6647a --- /dev/null +++ b/AirFighter/AirFighter/Direction.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace AirFighter +{ + internal enum Direction + { + Up, + Right, + Left, + Down + } +} diff --git a/AirFighter/AirFighter/DrawingAirFighter.cs b/AirFighter/AirFighter/DrawingAirFighter.cs new file mode 100644 index 0000000..a351a29 --- /dev/null +++ b/AirFighter/AirFighter/DrawingAirFighter.cs @@ -0,0 +1,159 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace AirFighter +{ + internal class DrawingAirFighter + { + public EntityAirFighter AirFighter { get; private set; } + + private float _startPosX; + private float _startPosY; + + private int? _pictureWidth = null; + private int? _pictureHeight = null; + + private readonly int _airFighterWidth = 195; + private readonly int _airFighterHeight = 166; + + public void Init(int speed, float weight, Color bodyColor) + { + AirFighter = new EntityAirFighter(); + AirFighter.Init(speed, weight, bodyColor); + } + + public void SetPosition(int x, int y, int width, int height) + { + о + if (width < _airFighterWidth || height < _airFighterHeight) return; + + if (_startPosX + _airFighterWidth > _pictureWidth) return; + if (_startPosX < 0) return; + if (_startPosY < 0) return; + if (_startPosY + _airFighterHeight > _pictureHeight) 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 DrawTransport(Graphics g) + { + if (!_pictureWidth.HasValue || !_pictureHeight.HasValue) + { + return; + } + + Pen pen = new(AirFighter.BodyColor); + Brush brushBlack = new SolidBrush(AirFighter.BodyColor); + + PointF[] front = { + new(_startPosX + 160, _startPosY + 70), + new(_startPosX + 195, _startPosY + 83), + new(_startPosX + 160, _startPosY + 96) + }; + + PointF[] tailTop = { + new(_startPosX, _startPosY + 30), + new(_startPosX, _startPosY + 70), + new(_startPosX + 25, _startPosY + 70), + new(_startPosX + 25, _startPosY + 55) + }; + + PointF[] tailBottom = { + new(_startPosX, _startPosY + 96), + new(_startPosX, _startPosY + 136), + new(_startPosX + 25, _startPosY + 111), + new(_startPosX + 25, _startPosY + 96) + }; + + PointF[] wingTop = + { + new(_startPosX + 100, _startPosY), + new(_startPosX + 100, _startPosY + 70), + new(_startPosX + 75, _startPosY + 70), + new(_startPosX + 90, _startPosY), + }; + + + PointF[] wingBottom = + { + new(_startPosX + 100, _startPosY + 96), + new(_startPosX + 100, _startPosY + 166), + new(_startPosX + 90, _startPosY + 166), + new(_startPosX + 75, _startPosY + 96), + }; + + g.FillPolygon(brushBlack, front); + g.DrawPolygon(pen, tailTop); + g.DrawPolygon(pen, tailBottom); + g.DrawPolygon(pen, wingTop); + g.DrawPolygon(pen, wingBottom); + g.DrawRectangle(pen, _startPosX, _startPosY + 70, 160, 26); + } + + 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) + { + _startPosX = _pictureWidth.Value - _airFighterWidth; + } + if (_startPosY + _airFighterHeight > _pictureHeight) + { + _startPosY = _pictureHeight.Value - _airFighterHeight; + } + } + + } +} diff --git a/AirFighter/AirFighter/EntityAirFighter.cs b/AirFighter/AirFighter/EntityAirFighter.cs new file mode 100644 index 0000000..f1d1eaa --- /dev/null +++ b/AirFighter/AirFighter/EntityAirFighter.cs @@ -0,0 +1,26 @@ +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(50, 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..ff1bd69 --- /dev/null +++ b/AirFighter/AirFighter/FormAirFighter.Designer.cs @@ -0,0 +1,185 @@ +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.CreateButton = new System.Windows.Forms.Button(); + this.pictureBox = new System.Windows.Forms.PictureBox(); + this.DownButton = new System.Windows.Forms.Button(); + this.UpButton = new System.Windows.Forms.Button(); + this.LeftButton = new System.Windows.Forms.Button(); + this.RightButton = new System.Windows.Forms.Button(); + this.statusStrip1 = 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(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox)).BeginInit(); + this.statusStrip1.SuspendLayout(); + this.SuspendLayout(); + // + // CreateButton + // + this.CreateButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.CreateButton.Location = new System.Drawing.Point(12, 390); + this.CreateButton.Name = "CreateButton"; + this.CreateButton.Size = new System.Drawing.Size(94, 29); + this.CreateButton.TabIndex = 0; + this.CreateButton.Text = "create"; + this.CreateButton.UseVisualStyleBackColor = true; + this.CreateButton.Click += new System.EventHandler(this.CreateButton_Click); + // + // pictureBox + // + this.pictureBox.Dock = System.Windows.Forms.DockStyle.Fill; + this.pictureBox.Location = new System.Drawing.Point(0, 0); + this.pictureBox.Name = "pictureBox"; + this.pictureBox.Size = new System.Drawing.Size(800, 450); + this.pictureBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; + this.pictureBox.TabIndex = 1; + this.pictureBox.TabStop = false; + this.pictureBox.Resize += new System.EventHandler(this.PictureBox_Resize); + // + // DownButton + // + this.DownButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.DownButton.BackgroundImage = global::AirFighter.Properties.Resources.down; + this.DownButton.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.DownButton.Location = new System.Drawing.Point(727, 389); + this.DownButton.Name = "DownButton"; + this.DownButton.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.DownButton.Size = new System.Drawing.Size(30, 30); + this.DownButton.TabIndex = 2; + this.DownButton.UseVisualStyleBackColor = true; + this.DownButton.Click += new System.EventHandler(this.ButtonMove_Click); + // + // UpButton + // + this.UpButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.UpButton.BackgroundImage = global::AirFighter.Properties.Resources.up; + this.UpButton.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.UpButton.Location = new System.Drawing.Point(727, 354); + this.UpButton.Name = "UpButton"; + this.UpButton.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.UpButton.Size = new System.Drawing.Size(30, 30); + this.UpButton.TabIndex = 3; + this.UpButton.UseVisualStyleBackColor = true; + this.UpButton.Click += new System.EventHandler(this.ButtonMove_Click); + // + // LeftButton + // + this.LeftButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.LeftButton.BackgroundImage = global::AirFighter.Properties.Resources.left; + this.LeftButton.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.LeftButton.Location = new System.Drawing.Point(691, 389); + this.LeftButton.Name = "LeftButton"; + this.LeftButton.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.LeftButton.Size = new System.Drawing.Size(30, 30); + this.LeftButton.TabIndex = 4; + this.LeftButton.UseVisualStyleBackColor = true; + this.LeftButton.Click += new System.EventHandler(this.ButtonMove_Click); + // + // RightButton + // + this.RightButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.RightButton.BackgroundImage = global::AirFighter.Properties.Resources.right; + this.RightButton.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.RightButton.Location = new System.Drawing.Point(763, 389); + this.RightButton.Name = "RightButton"; + this.RightButton.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.RightButton.Size = new System.Drawing.Size(30, 30); + this.RightButton.TabIndex = 5; + this.RightButton.UseVisualStyleBackColor = true; + this.RightButton.Click += new System.EventHandler(this.ButtonMove_Click); + // + // statusStrip1 + // + this.statusStrip1.ImageScalingSize = new System.Drawing.Size(20, 20); + this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripStatusLabelSpeed, + this.toolStripStatusLabelWeight, + this.toolStripStatusLabelBodyColor}); + this.statusStrip1.Location = new System.Drawing.Point(0, 424); + this.statusStrip1.Name = "statusStrip1"; + this.statusStrip1.Size = new System.Drawing.Size(800, 26); + this.statusStrip1.TabIndex = 6; + this.statusStrip1.Text = "statusStrip1"; + // + // toolStripStatusLabelSpeed + // + this.toolStripStatusLabelSpeed.Name = "toolStripStatusLabelSpeed"; + this.toolStripStatusLabelSpeed.Size = new System.Drawing.Size(74, 20); + this.toolStripStatusLabelSpeed.Text = "скорость:"; + // + // toolStripStatusLabelWeight + // + this.toolStripStatusLabelWeight.Name = "toolStripStatusLabelWeight"; + this.toolStripStatusLabelWeight.Size = new System.Drawing.Size(35, 20); + this.toolStripStatusLabelWeight.Text = "вес:"; + // + // toolStripStatusLabelBodyColor + // + this.toolStripStatusLabelBodyColor.Name = "toolStripStatusLabelBodyColor"; + this.toolStripStatusLabelBodyColor.Size = new System.Drawing.Size(43, 20); + this.toolStripStatusLabelBodyColor.Text = "цвет:"; + // + // 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.statusStrip1); + this.Controls.Add(this.RightButton); + this.Controls.Add(this.LeftButton); + this.Controls.Add(this.UpButton); + this.Controls.Add(this.DownButton); + this.Controls.Add(this.CreateButton); + this.Controls.Add(this.pictureBox); + this.Name = "FormAirFighter"; + this.Text = "Form1"; + ((System.ComponentModel.ISupportInitialize)(this.pictureBox)).EndInit(); + this.statusStrip1.ResumeLayout(false); + this.statusStrip1.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private Button CreateButton; + private PictureBox pictureBox; + private Button DownButton; + private Button UpButton; + private Button LeftButton; + private Button RightButton; + private StatusStrip statusStrip1; + private ToolStripStatusLabel toolStripStatusLabelSpeed; + private ToolStripStatusLabel toolStripStatusLabelWeight; + private ToolStripStatusLabel toolStripStatusLabelBodyColor; + } +} \ No newline at end of file diff --git a/AirFighter/AirFighter/FormAirFighter.cs b/AirFighter/AirFighter/FormAirFighter.cs new file mode 100644 index 0000000..b33c0a6 --- /dev/null +++ b/AirFighter/AirFighter/FormAirFighter.cs @@ -0,0 +1,72 @@ +namespace AirFighter +{ + public partial class FormAirFighter : Form + { + private DrawingAirFighter _airFighter; + + public FormAirFighter() + { + InitializeComponent(); + } + + private void CreateButton_Click(object sender, EventArgs e) + { + Random rnd = new(); + + _airFighter = new DrawingAirFighter(); + + _airFighter.Init(rnd.Next(100, 300), rnd.Next(1000, 2000), + Color.FromArgb(rnd.Next(0, 256), rnd.Next(0, 256), rnd.Next(0, 256))); + + _airFighter.SetPosition(rnd.Next(10, 100), rnd.Next(10, 100), pictureBox.Width, pictureBox.Height); + + toolStripStatusLabelSpeed.Text = $": {_airFighter.AirFighter.Speed}"; + toolStripStatusLabelWeight.Text = $": {_airFighter.AirFighter.Weight}"; + toolStripStatusLabelBodyColor.Text = $": { _airFighter.AirFighter.BodyColor.Name}"; + + Draw(); + } + + private void ButtonMove_Click(object sender, EventArgs e) + { + string name = ((Button)sender).Name ?? string.Empty; + + switch(name) + { + case "UpButton": + _airFighter?.MoveTransport(Direction.Up); + break; + + case "LeftButton": + _airFighter?.MoveTransport(Direction.Left); + break; + + case "DownButton": + _airFighter?.MoveTransport(Direction.Down); + break; + + case "RightButton": + _airFighter?.MoveTransport(Direction.Right); + break; + } + + Draw(); + } + + private void PictureBox_Resize(object sender, EventArgs e) + { + _airFighter?.ChangeBorders(pictureBox.Width, pictureBox.Height); + Draw(); + } + + + public void Draw() + { + if (pictureBox.Width == 0 || pictureBox.Height == 0) return; + Bitmap bmp = new(pictureBox.Width, pictureBox.Height); + Graphics gr = Graphics.FromImage(bmp); + _airFighter?.DrawTransport(gr); + pictureBox.Image = bmp; + } + } +} \ No newline at end of file diff --git a/AirFighter/AirFighter/FormAirFighter.resx b/AirFighter/AirFighter/FormAirFighter.resx new file mode 100644 index 0000000..5cb320f --- /dev/null +++ b/AirFighter/AirFighter/FormAirFighter.resx @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + \ 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..d8f98bb --- /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..2a9fd3d 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\right.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 + + + ..\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..0fa87bc61d3ad1e35748f93233b6c87c243ab47a GIT binary patch literal 4612 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 Z)JZMGH7wq*AphI|H1FxEl_0G{{}0ivbi@Dv literal 0 HcmV?d00001 diff --git a/AirFighter/AirFighter/Resources/left.png b/AirFighter/AirFighter/Resources/left.png new file mode 100644 index 0000000000000000000000000000000000000000..084c6741f0bb2874c1c4dd354b695b3e79375936 GIT binary patch literal 4890 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 uAcry(oFm6}%MQfU)yHKH7jcC=$o~V@lLzkr literal 0 HcmV?d00001 diff --git a/AirFighter/AirFighter/Resources/right.png b/AirFighter/AirFighter/Resources/right.png new file mode 100644 index 0000000000000000000000000000000000000000..cc59acd2360a1ad120092b293dcc6e008bcddd3a GIT binary patch literal 4922 zcmX|Fc|25K|2NE+8B5IYwUx4sAsMn~vdkEUVKnwqS+XW%%aU!%U@TcmWRNX0Mks}p zU6d^mB4mrC?7N8P_B_AW?~i-$oO{ol`?;TUKJVqklg#iuoT8j8EG#_6MmP)LI{o*6 zumfkEm!EC}7f^r&9?MeEdtw1-fZZ`f3=2zT3fFy{;> z)5}7E9yBnrKrH=L7HCox5T%z{&H1Z&@*+l2wXc&j?Ut)GxJ*C2F>&qmjarxCorO>v zuRoyQe7-tqwS}Btqqc;nKQA1*F>ZDgf3`p5lQ5c?5n5Myv8z_)Hd(BnJU>CM$eo;!E$MPR4J!t!!W6v1d^ z?FGMmtuMwuz`uCUBLLT42m6t9DeKbu=atF(Ezulf=2)NPU^uopp4TkBX2AO_zY>dN z@^Q4;w(UwLg#tzsI_|9zuw{|-dnOMoy&2a~jx4zPm5Kd1Ui^eBUb><6X;|yIm-CxX z$t*`J{Kz9O6nm{KpTA0dn(t7l&=YzM-QgeZ<`r@xXxT(g^0kP)DL$JuqaTZ= zfF99i4mTY?V01>1!|i)!)c35qyNA4{Vlp65WM1q$_N;?GmyHfe>W%4oN?6d!S%=N% zP+{^UR|AXO%e{D+6>&RK(o`XKjzAPj@-?yMEtZJi*&_P z-Ex*FA&1`!$t+D9H4Zl)v?mIV!3ss(5$8kKpOlY-B{S;nt_3;pebtnoZch~Qo$tOIJ|AUfR{wb(?=p zjB)BSudq_{0ghu0dj1GpTwH8%@uG+4jH1~jKgyx8)g}^l#VR2o!PG@+?KlIG^Dxt0 z{s@A@xj5gtRn3gg)6^Dg_n|2A#A`4|8;QnjcbN+Xqx#AS=LBZFgXULgrQ*#$QDral z4y0>qU0mEcruE~9#Dms7Vnaw;*obXh*jFA*A1vj>ImzqSuhV5Brvj1Sj_rdl-G{nU z$52X;Do<~3HMKRid9+jWqx7?%K8?=Y(g0)d=L5bcai7u|A8hl^S)qWMBEG%)?!JoH zdN?JyQ4Mp*eChs?MytK20Z%@uZAVbg9Jvt52J@>l-g_q;u+8pw{H8RROGrVr64n^3 z4@{tNjIR?tyzZXH4h0kv^hjG9t(vym&n|T0q~14m`&(GDdt6=6iZVX^`T|vx96N7c zn;4v{#NyDgxyIikWMzVH8?35mOrCB{p1z6%mQPv5q3(yQbvrG|yQx{%f1aEmK;ZoR zb0cfcr8r#eYJKRWTh}Z75VY75^f3d0L}uG{52jDIE>GP8{+*3bP*9+M{sa?2Egm~9 z4Gwt}wfV!`@&*hx-P)tdqw6URW-^&>Lacp~lFCHCbWNyYsWfP7->$K&K1u8Hi(h~tz*>EF- zhQ4O1Q6Z_68ymz%2K(LXI|nNt+<}2fVHb8U^@**{fg2~K*sq=% z@athWIx1}BXFsoYBxjv{7c)_I-i;Q^LKtE5;(W(hm=PmN{`Z=p+_qx+s){4@Xm8$@ z35R9Ti9{k@rZR4aG7NeaHto$nxx$O_ZE4xB4rxef6C{MNWuPv3_NFta(lk5qYL-=94Aeyg)PyVwwSpdIicK=vBJ-XYl0=|;Zj zivgsWnVCh|c-8dhDS<&jU9)jACL8^3){@GEv$uVggC zo?4QBZz1Z5t8SfWo~`d(r3N@dIYU8$Fvyg?u;vELc$#@aS~T1cLM@RS5KtnVRrYm~ zX?1j%*j@WZEO)JBj|Y$N5q)@qS|LRWSA>;XmbM*{NpM_?DP6Dj zd4}o0l%yqzB#wR>M5Aq<3~H6NG&gr@%+WK!k2gg%y@sSsw3rFIDrt|saed0H4#dgS zZUN&8-%$~NPA+h57nn-p5iISvS3o)I0)WkTl3>28XV+9o_S*#yZVY{4wED&pvI&Y( zmXnkFG&<_(>F+J;lq82jWz2QkhD1d{SYeC{*(mpqkJZ%n&gUd=^N+-ng$k<2rH&Cr zPrpw-rGmcDF+^&O#AQ==!|V?xo3e=gvzD4-OL+B6uS1ttZ|*bY4j*TUWPR%Icfv#S zDSvu0$}d~F(j>)i^e�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 literal 0 HcmV?d00001 -- 2.25.1 From 372af42b199057a03efcfc59523a2b1b460933b1 Mon Sep 17 00:00:00 2001 From: MaxKarme <91691525+MaxKarme@users.noreply.github.com> Date: Tue, 20 Sep 2022 19:48:10 +0300 Subject: [PATCH 2/3] fix error --- AirFighter/AirFighter/DrawingAirFighter.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/AirFighter/AirFighter/DrawingAirFighter.cs b/AirFighter/AirFighter/DrawingAirFighter.cs index a351a29..94d1b4f 100644 --- a/AirFighter/AirFighter/DrawingAirFighter.cs +++ b/AirFighter/AirFighter/DrawingAirFighter.cs @@ -27,7 +27,6 @@ namespace AirFighter public void SetPosition(int x, int y, int width, int height) { - о if (width < _airFighterWidth || height < _airFighterHeight) return; if (_startPosX + _airFighterWidth > _pictureWidth) return; -- 2.25.1 From eda0bc77d9e18a3d9acb28cf3c2320db9b0d1adb Mon Sep 17 00:00:00 2001 From: MaxKarme <91691525+MaxKarme@users.noreply.github.com> Date: Tue, 4 Oct 2022 16:31:14 +0300 Subject: [PATCH 3/3] change checks --- AirFighter/AirFighter/DrawingAirFighter.cs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/AirFighter/AirFighter/DrawingAirFighter.cs b/AirFighter/AirFighter/DrawingAirFighter.cs index 94d1b4f..036fd29 100644 --- a/AirFighter/AirFighter/DrawingAirFighter.cs +++ b/AirFighter/AirFighter/DrawingAirFighter.cs @@ -29,10 +29,8 @@ namespace AirFighter { if (width < _airFighterWidth || height < _airFighterHeight) return; - if (_startPosX + _airFighterWidth > _pictureWidth) return; - if (_startPosX < 0) return; - if (_startPosY < 0) return; - if (_startPosY + _airFighterHeight > _pictureHeight) return; + if (x + _airFighterWidth > width || x < 0) return; + if (y + _airFighterHeight > height || y < 0) return; _startPosX = x; _startPosY = y; -- 2.25.1