From dcfbfa2b509b637c9e90cef95dfed8f2fbcc04d0 Mon Sep 17 00:00:00 2001 From: "a.puchkina" Date: Tue, 26 Sep 2023 02:22:39 +0400 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=B0=D0=BC=D0=BE=D0=BB=D0=B5=D1=82?= =?UTF-8?q?=D0=B8=D0=BA=20=D0=BE=D1=82=D1=80=D0=B8=D1=81=D0=BE=D0=B2=D1=8B?= =?UTF-8?q?=D0=B2=D0=B0=D0=B5=D1=82=D1=81=D1=8F=20=D0=B8=20=D0=B4=D0=B2?= =?UTF-8?q?=D0=B8=D0=B3=D0=B0=D0=B5=D1=82=D1=81=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AirplaneWithRadar.csproj | 15 + .../AirplaneWithRadarForm.Designer.cs | 138 ++++++ .../AirplaneWithRadarForm.cs | 97 ++++ .../AirplaneWithRadarForm.resx | 437 ++++++++++++++++++ .../AirplaneWithRadar/Direction.cs | 32 ++ .../AirplaneWithRadar/DrawningAirplane.cs | 190 ++++++++ .../AirplaneWithRadar/Form1.Designer.cs | 39 -- AirplaneWithRadar/AirplaneWithRadar/Form1.cs | 10 - .../AirplaneWithRadar/Program.cs | 2 +- .../AirplaneWithRadar/ProjectAirplane.cs | 66 +++ .../Properties/Resources.Designer.cs | 103 +++++ .../{Form1.resx => Properties/Resources.resx} | 13 + .../AirplaneWithRadar/Resources/Down.png | Bin 0 -> 6300 bytes .../AirplaneWithRadar/Resources/Left.png | Bin 0 -> 6070 bytes .../AirplaneWithRadar/Resources/Right.png | Bin 0 -> 4950 bytes .../AirplaneWithRadar/Resources/Up.png | Bin 0 -> 6562 bytes 16 files changed, 1092 insertions(+), 50 deletions(-) create mode 100644 AirplaneWithRadar/AirplaneWithRadar/AirplaneWithRadarForm.Designer.cs create mode 100644 AirplaneWithRadar/AirplaneWithRadar/AirplaneWithRadarForm.cs create mode 100644 AirplaneWithRadar/AirplaneWithRadar/AirplaneWithRadarForm.resx create mode 100644 AirplaneWithRadar/AirplaneWithRadar/Direction.cs create mode 100644 AirplaneWithRadar/AirplaneWithRadar/DrawningAirplane.cs delete mode 100644 AirplaneWithRadar/AirplaneWithRadar/Form1.Designer.cs delete mode 100644 AirplaneWithRadar/AirplaneWithRadar/Form1.cs create mode 100644 AirplaneWithRadar/AirplaneWithRadar/ProjectAirplane.cs create mode 100644 AirplaneWithRadar/AirplaneWithRadar/Properties/Resources.Designer.cs rename AirplaneWithRadar/AirplaneWithRadar/{Form1.resx => Properties/Resources.resx} (84%) create mode 100644 AirplaneWithRadar/AirplaneWithRadar/Resources/Down.png create mode 100644 AirplaneWithRadar/AirplaneWithRadar/Resources/Left.png create mode 100644 AirplaneWithRadar/AirplaneWithRadar/Resources/Right.png create mode 100644 AirplaneWithRadar/AirplaneWithRadar/Resources/Up.png diff --git a/AirplaneWithRadar/AirplaneWithRadar/AirplaneWithRadar.csproj b/AirplaneWithRadar/AirplaneWithRadar/AirplaneWithRadar.csproj index b57c89e..13ee123 100644 --- a/AirplaneWithRadar/AirplaneWithRadar/AirplaneWithRadar.csproj +++ b/AirplaneWithRadar/AirplaneWithRadar/AirplaneWithRadar.csproj @@ -8,4 +8,19 @@ enable + + + True + True + Resources.resx + + + + + + ResXFileCodeGenerator + Resources.Designer.cs + + + \ No newline at end of file diff --git a/AirplaneWithRadar/AirplaneWithRadar/AirplaneWithRadarForm.Designer.cs b/AirplaneWithRadar/AirplaneWithRadar/AirplaneWithRadarForm.Designer.cs new file mode 100644 index 0000000..e342c34 --- /dev/null +++ b/AirplaneWithRadar/AirplaneWithRadar/AirplaneWithRadarForm.Designer.cs @@ -0,0 +1,138 @@ +namespace AirplaneWithRadar +{ + partial class AirplaneWithRadarForm + { + /// + /// 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(AirplaneWithRadarForm)); + pictureBoxAirplane = new PictureBox(); + buttonCreate = new Button(); + buttonUp = new Button(); + buttonLeft = new Button(); + buttonRight = new Button(); + buttonDown = new Button(); + ((System.ComponentModel.ISupportInitialize)pictureBoxAirplane).BeginInit(); + SuspendLayout(); + // + // pictureBoxAirplane + // + pictureBoxAirplane.Dock = DockStyle.Fill; + pictureBoxAirplane.Location = new Point(0, 0); + pictureBoxAirplane.Name = "pictureBoxAirplane"; + pictureBoxAirplane.Size = new Size(882, 453); + pictureBoxAirplane.SizeMode = PictureBoxSizeMode.AutoSize; + pictureBoxAirplane.TabIndex = 0; + pictureBoxAirplane.TabStop = false; + // + // buttonCreate + // + buttonCreate.Anchor = AnchorStyles.Bottom | AnchorStyles.Left; + buttonCreate.Location = new Point(12, 412); + buttonCreate.Name = "buttonCreate"; + buttonCreate.Size = new Size(94, 29); + buttonCreate.TabIndex = 1; + buttonCreate.Text = "Создать"; + buttonCreate.UseVisualStyleBackColor = true; + buttonCreate.Click += buttonCreateAirplane_Click; + // + // buttonUp + // + buttonUp.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonUp.BackgroundImage = Properties.Resources.Up; + buttonUp.BackgroundImageLayout = ImageLayout.Zoom; + buttonUp.Location = new Point(798, 375); + buttonUp.Name = "buttonUp"; + buttonUp.Size = new Size(30, 30); + buttonUp.TabIndex = 2; + buttonUp.UseVisualStyleBackColor = true; + buttonUp.Click += buttonMove_Click; + // + // buttonLeft + // + buttonLeft.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonLeft.BackgroundImage = (Image)resources.GetObject("buttonLeft.BackgroundImage"); + buttonLeft.BackgroundImageLayout = ImageLayout.Zoom; + buttonLeft.Location = new Point(762, 411); + buttonLeft.Name = "buttonLeft"; + buttonLeft.Size = new Size(30, 30); + buttonLeft.TabIndex = 3; + buttonLeft.UseVisualStyleBackColor = true; + buttonLeft.Click += buttonMove_Click; + // + // buttonRight + // + buttonRight.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonRight.BackgroundImage = (Image)resources.GetObject("buttonRight.BackgroundImage"); + buttonRight.BackgroundImageLayout = ImageLayout.Zoom; + buttonRight.Location = new Point(834, 411); + buttonRight.Name = "buttonRight"; + buttonRight.Size = new Size(30, 30); + buttonRight.TabIndex = 4; + buttonRight.UseVisualStyleBackColor = true; + buttonRight.Click += buttonMove_Click; + // + // buttonDown + // + buttonDown.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonDown.BackgroundImage = (Image)resources.GetObject("buttonDown.BackgroundImage"); + buttonDown.BackgroundImageLayout = ImageLayout.Zoom; + buttonDown.Location = new Point(798, 411); + buttonDown.Name = "buttonDown"; + buttonDown.Size = new Size(30, 30); + buttonDown.TabIndex = 5; + buttonDown.UseVisualStyleBackColor = true; + buttonDown.Click += buttonMove_Click; + // + // AirplaneWithRadarForm + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(882, 453); + Controls.Add(buttonDown); + Controls.Add(buttonRight); + Controls.Add(buttonLeft); + Controls.Add(buttonUp); + Controls.Add(buttonCreate); + Controls.Add(pictureBoxAirplane); + Name = "AirplaneWithRadarForm"; + StartPosition = FormStartPosition.CenterScreen; + Text = "AirplaneWithRadarForm"; + ((System.ComponentModel.ISupportInitialize)pictureBoxAirplane).EndInit(); + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private PictureBox pictureBoxAirplane; + private Button buttonCreate; + private Button buttonUp; + private Button buttonLeft; + private Button buttonRight; + private Button buttonDown; + } +} \ No newline at end of file diff --git a/AirplaneWithRadar/AirplaneWithRadar/AirplaneWithRadarForm.cs b/AirplaneWithRadar/AirplaneWithRadar/AirplaneWithRadarForm.cs new file mode 100644 index 0000000..1b3c47c --- /dev/null +++ b/AirplaneWithRadar/AirplaneWithRadar/AirplaneWithRadarForm.cs @@ -0,0 +1,97 @@ +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 AirplaneWithRadar +{ + /// + /// Форма работы с объектом "Самолет с радаром" + /// + public partial class AirplaneWithRadarForm : Form + { + /// + /// Поле-объект для прорисовки объекта + /// + private DrawningAirplane? _drawningAirplane; + /// + /// Инициализация формы + /// + public AirplaneWithRadarForm() + { + InitializeComponent(); + } + + /// + /// Метод прорисовки самолета + /// + private void Draw() + { + if (_drawningAirplane == null) + { + return; + } + Bitmap bmp = new(pictureBoxAirplane.Width, pictureBoxAirplane.Height); + Graphics gr = Graphics.FromImage(bmp); + _drawningAirplane.DrawTransport(gr); + pictureBoxAirplane.Image = bmp; + } + + /// + /// Обработка нажатия кнопки "Создать" + /// + /// + /// + private void buttonCreateAirplane_Click(object sender, EventArgs e) + { + Random random = new(); + _drawningAirplane = new DrawningAirplane(); + _drawningAirplane.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)), Convert.ToBoolean(random.Next(0, 2)), pictureBoxAirplane.Width, pictureBoxAirplane.Height); + _drawningAirplane.SetPosition(random.Next(10, 100), random.Next(10, 100)); + Draw(); + + } + /// + /// Изменение размеров формы + /// + /// + /// + private void buttonMove_Click(object sender, EventArgs e) + { + if (_drawningAirplane == null) + { + return; + } + string name = ((Button)sender)?.Name ?? string.Empty; + switch (name) + { + case "buttonUp": + _drawningAirplane.MoveTransport(DirectionType.Up); + break; + case "buttonDown": + _drawningAirplane.MoveTransport(DirectionType.Down); + break; + case "buttonLeft": + _drawningAirplane.MoveTransport(DirectionType.Left); + break; + case "buttonRight": + _drawningAirplane.MoveTransport(DirectionType.Right); + break; + } + Draw(); + + } + + + } +} diff --git a/AirplaneWithRadar/AirplaneWithRadar/AirplaneWithRadarForm.resx b/AirplaneWithRadar/AirplaneWithRadar/AirplaneWithRadarForm.resx new file mode 100644 index 0000000..16c89f7 --- /dev/null +++ b/AirplaneWithRadar/AirplaneWithRadar/AirplaneWithRadarForm.resx @@ -0,0 +1,437 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + + iVBORw0KGgoAAAANSUhEUgAAA4QAAAOEBAMAAAALYOIIAAAABGdBTUEAALGPC/xhBQAAABJQTFRF5ubm + AQEB////AAAAa2trubm55kNtzgAAAAlwSFlzAAAOvgAADr4B6kKxwAAAFy1JREFUeNrtnV2S6ka2RkFB + v7ese98VCmkA6hwBlzsB4tjzn0qTPxLC5lBCKH++qsVDVy932yf5VmxD1lbmPnT+1R78C5RD4pBH4pBH + 4pBH4pBH4pBH4pBH4pBH4pBH4pBH4pBH4pBH4pBH4pBH4pDH6VWFvw6qInHII3HII3HII3HII3HII3HI + I3HII3HII3HII3HII3HII3HII3HII3EIY/hJ700WiUMeiUMeiUMeiUMeiUMeiUMeiUMeiUMeiUMeiUMe + iUMeiUMeiUMeiUMepxe9N3UkDnkkDnkkDnkkDnkkDnkkDnkkDnkkDnkkDnkkDnkkDnkkDnkkDnkkDmEM + P+m9ySJxyCNxyCNxyCNxyCNxyCNxyCNxyCNxyCNxyCNxyCNxyCNxyCNxyCNxyOP0ovemjsQhj8Qhj8Qh + j8Qhj8Qhj8Qhj8Qhj8Qhj8Qhj8Qhj8Qhj8Qhj8Qhj8QhjOEnvTdZJA55JA55JA55JA55JA55JA55JA55 + JA55JA55JA55JA55JA55JA55JA55nF703tSROOSROOSROOSROOSROOSROOSROOSROOSROOSROOSROOSR + OOSROOSROIQx/KT3JovEIY/EIY/EIY/EIY/EIY/EIY/EIY/EIY/EIY/EIY/EIY/EIY/EIY/EIY/Ti96b + OhKHPBKHPBKHPBKHPBKHPBKHPBKHPBKHPBKHPBKHPBKHPBKHPBKHPBKHMIaf9N5kkTjk8We+//9DoThe + /0ChNvYGhdo4NCjUxrZuGhRK48WMKFTG7liPNQqFsTqZsUahMFZD3dQoVMb2YmoUKmN3bUYUKqP9IKQK + lbHqa9N8R4Xh9QO6a63zZ26v5t+0fCXx7D4IncI/UCiI3dG4rzJUoSpWJ/9llCpUxWrwX2SoQlkMe3qq + UBa7q/8gpApV0e7pR6pQGKu+MQ1VqIxD3TSGKhRG26c3fBYKY3WtbwapQmHsb8oMVSiM7oOQKlTG257e + mO9dheHnN+0X3vf0rhRvL1q+WugfWEOhLro+PQqVcWjM1KBAoSR2Z7unR6Eu2q8yBoXC2J38nh6Fsug+ + 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 + 6s+aKhRHNw8fhdI4n8NHoSrO5/BRKIvzU/oolMXpKX1ONgnj2f+mja69LoYdPl17XbQ9/IYqlMbqz5Eq + FEd7l/68P6QKJfG2w29qqlAZFzt8qlAU7zt8qlAV5x0+VSiL7YUqVMeWKpTHvnYXsVOFwng0s0KqUBR/ + 2T4FVSiNtoffGE426eJth+9/z0bLVxanHT4KdXG6Sx+Fumif0h9RqIzuHP6IQmW0PXyqUBxPVKE8Xg0K + xbG9GBSK40AVymP/HxSqY4VCsCAkDnkkDnmcXj+iX/itkTjkkTjkkTjkkTjkkTjkkTjkkTjkkTjkkTjk + kTjkkTjkkTjkkTjkkTiEMfyk9yaLxCGPxCGPxCGPxCGPxCGPxCGPxCGPxCGPxCGPxCGPxCGPxCGPxCGP + xCGP04vemzoShzwShzwShzwShzwShzwShzwShzwShzwShzwShzwShzwShzwShzwShzCGn/TeZJE45JE4 + 5JE45JE45JE45JE45JE45JE45JE45JE45JE45JE45JE45JE45HF60XtTR+KQR+KQR+KQR+KQR+KQR+KQ + R+KQR+KQR+KQR+KQR+KQR+KQR+KQR+IQxvCT3pssEoc8Eoc8Eoc8Eoc8Eoc8Eoc8Eoc8Eoc8Eoc8Eoc8 + Eoc8Eoc8Eoc8Eoc8Ti96b+pIHPJIHPJIHPJIHPJIHPJIHPJIHPJIHPJIHPJIHPJIHPJIHPJIHPJIHMIY + ftJ7k0XikEfikEfikEfikEfikEfikEfikEfikEfikEfikEfikEfikEfikEfikMfpRe9NHYlDHolDHolD + HolDHolDHolDHolDHolDHolDHolDHolDHolDHolDHolDFbvuv59U64TBojvPAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAA4QAAAOEBAMAAAALYOIIAAAABGdBTUEAALGPC/xhBQAAABJQTFRF5ubm + AQEB////AAAAa2trubm55kNtzgAAFlpJREFUeNrtndFy47h2RT36ArNov8tKfgAF3XdHlfueuCr//ysR + QJCy3W7LkkUSC1p80aypm+45e+W0dRoE8LAbnu3D8Ig4NA48GgcejQOPxoFH48CjceDROPBoHHg0Djwa + Bx6NA4/GgUfjwKNx4HF8NuXfi1Q0DjwaBx6NA4/GgUfjwKNx4NE48GgceDQOPBoHHo0Dj8aBR+PAo3GA + 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 + RK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAA4QAAAOEBAMAAAALYOIIAAAABGdBTUEAALGPC/xhBQAAABJQTFRF5ubm + AQEB////AAAAa2trubm55kNtzgAAAAlwSFlzAAAOvgAADr4B6kKxwAAAGBNJREFUeNrt3V9y+r7Vx3Fj + NoARuTeacB9VYQGPM92A2f9eimTZSb5PSAD/05Hens7QTy/6i/WqjqFHkotwlbq7oosf1fWy3WWq7lo+ + WvsW4+B8jRBCmDahglA6oYUQQgghhBBCCCGEEEIIIRwT+V0IIYQQQjg2KgilE1bqJV7C8FmH/zy2WH5c + i5gNI6rCkK4Qq5e6iHSsIIQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGE8K+oIJROaM/xEoaLfuGvka49 + hBCuTKgglE5oIYQQQgghhBBCCCGEEEIIx0R+F0IIIYQQjo3sbBJPyM6m5yNd+4KWL4QQQgghhBBCCCGE + EEIIIYQQQgghhBBCCCGEYyM7m8QTsrNJC+8X0rWHEMKVCRWE0gkthBBCCCGEEEIIIYQQQgjhmMjvQggh + hBDCsZGdTeIJ2dn0fKRrX9DyhRBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYRwbGRnk3hCdjZp4f1CuvYQ + QrgyoYJQOqGFEEIIIYQQQgghhBBCCCEcE/ldCCGEEEI4NrKzSTwhO5uej3TtC1q+EEIIIYQQQgghhBBC + CCGEEEIIIYQQQgghhBCOjexsEk/IziYtvF9I1x5CCFcmVBBKJ7QQQgghhBBCCCGEEEIIIYRjIr8LIYQQ + QgjHRnY2iSdkZ9Pzka59QcsXQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEMKxkZ1N4gnZ2aSF9wvp2kMI + 4cqECkLphBZCCCGEEEIIIYQQQgghhHBM5HchhBBCCOHYyM4m8YTsbHo+0rUvaPlCCCGEEEIIIYQQQggh + hBBCCCGEEEIIIYQQQjg2srNJPCE7m7TwfiFdewghXJlQQSid0EIIIYQQQgghhBBCCCGEEI6J/C6EEEII + IRwb2dkknpCdTc9HuvYFLV8IIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCMdGdjaJJ2RnkxbeL6RrDyGE + KxMqCKUTWgghhBBCCCGEEEIIIYQQwjGR34UQQgghhGMjO5vEE7Kz6flI176g5QshhBBCCCGEEEIIIYQQ + QgghhBBCCCGEEEII4djIzibxhOxs0sL7hXTtIYRwZUIFoXRCCyGEEEIIIYQQQgghhBBCOCbyuxBCCCGE + cGxkZ5N4QnY2PR/p2he0fCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghHBvZ2SSekJ1NWni/kK49hBCu + TKgglE5oIYQQQgghhBBCCCGEEEIIx0R+F0IIIYQQjo3sbBJPyM6m5yNd+4KWL4QQQgghhBBCCCGEEEII + IYQQQgghhBBCCCGEYyM7m8QTsrNJC+8X0rWHEMKVCRWE0gkthBBCCCGEEEIIIYQQQgjhmMjvQgghhBDC + sZGdTeIJ2dn0fKRrX9DyhRBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYRwbGRnk3hCdjZp4f1CuvYQQrgy + oYJQOqGFEEIIIYQQQgghhBBCCCEcE/ldCCGEEEI4NrKzSTwhO5uej3TtC1q+EEIIIYQQQgghhBBCCCGE + EEIIIYQQQgghhBCOjexsEk/IziYtvF9I1x5CCFcmVBBKJ7QQQgghhBBCCCGEEEIIIYRjIr8LIYQQQgjH + RnY2iSdkZ9Pzka59QcsXQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEMKxkZ1N4gnZ2aSF9wvp2kMI4cqE + CkLphBZCCCGEEEIIIYQQQgghhHBM5HchhBBCCOHYyM4m8YTsbHo+0rUvaPlOEg2EEMoiDNckUcdDONEd + fY+xEf5fNf2lIiGc43qLj/BoZ7rmUHkomuE/mvJq4iM82WrySy2E9EecYxqaGJ+FH6Zad6mgpKjOMRIe + FUj3RnOtoxESniC8O1pTRvmjQhmQ7ovKnnWUhFuQ7p6FTZyErwqkO6Mq4yR0lRSku+JBR0q4BemeeP3K + sJ+MMFxT9bFelVqxqycnVlU75bBP+d9VK5DuIjzUsRKWFwPSHdHsoiUs3HdSkP6ObREtYc2z8I5o3+t4 + Ca+VFKS/orW7iAk/KylmvxC2RcSEQyXF7DZhqKOREpYfEP5J+J+oCYujAumPqNoiasIawj+jjpuwr6SY + 3Yy72AmPFqTfYxM7YaikmN2MOnbCbiEbZjfj27SE4XOqfqGL5cb/teFvp0H4PV4Rm0nbtHMQFierMLsZ + TVXET3j9TorZzagmPtp0HsINZrcLqW0EzMKukmL2czSlBEJfSTH7Obo6KoBwwyy8Ebs6Gj+hW8iG2c9R + lTIIy+v/2jD7MXatQgGEF2bhj7Hq6qgAQldJMfsphlahAMJyWMgG4dcYlgCLILxUmP1EuC+kEH4uZIPw + G2Erh3CopBB+jaGOTkoYrkn7hf66mO5vp0H4GU23JU3H3/L116tVmP1LaFtJhFph9m9U71oUYaikEH6J + O1mEr/4EPAi/xrYURVjzLPwnqvdaFmG3/ALCz2h2wgiLo/9OCuEnYVMIIzzxLPwWr3VUGmFXSSHsozvf + WxhhV0khDNG4JcDSCE8QfpuFtTxCX0khDNG/J0Ec4cZC2Mdu6Zo0Ql9JIQyxKmca5/A5eb+wix+cbTnE + l5nGeWbCo4UwRH8KsEDCE4QhqkrLJLxWUgi76yyVcANhuBqphCcLob9MKZVQfxgI3XXWYgm3zMLrZUId + FUkYll9kTti9lUIooVYGQtu9lUIq4baC0Jq9ZMK+kuZMaKpWMmHNs9CqQy2ZsF8SnDOh2YkmrEMlzZjQ + 2HbGce6v+VqRpe62qYU7y7FfqA7zDOy3OCvhJXdC931UNuGrzZtQmVY6Ye1vK19C+66lE3aVNGPC/8gn + 9Ecn5EuoWvmEdcaE7t9q+YT+vPV8CXcpELo3V+RL2KRA6CppvoQ6BUJXSbMl3KVBeK2k2RI2aRCeMibU + aRB+LmTLjvCcCuHR5kk4LF2bcZzD54z9Qh9OmfYLu7dSFHP2ZZciHN7wmxvhuU6GcFPlSdgUqRAOpwTn + RaisToewPyU4s1n4UidEuK1yJNwnRNhX0swIy5QIw0K2vAgPOinCbZUf4T4twq6S5kVYpkXYVdKsCA86 + McJLdoT71Ah9Jc2J0C0BTovQV9KMCP0S4MQIL1kRWrtfhjBcc/cLfXzN7GDEdqmBXY6wtjm1fJV/a29i + hOXF5DQLdwkSFkelsiH0p6mnR3jK6FmoqjpFwvLD5DMLd0kSFpt8ZmFXR9MjHBayZUBYpEk4LGRLnzAs + uUiPcGMzIVRNkSbhZyVNnbAqUyUcKmnqhP3StQQJ+0qaOGFfRxMkHCpp2oTW6HQJ+0qaOOF5QcLwuUi/ + 0F+brqEW7jvNfqHbSrHYwC5OmMXZlpUqUyYsu/PW0yY81EkTbpOfhcbsi5QJi66Spkyo3O/6lAmL5Geh + q6NJE5b+vPWUCV0dTXsW+kqaMKGp2tQJ68SfhcrV0bQJfSVNmLBbcpE0oV8SnDChXwKcOGGd9LOwWwKc + OKGrpOkSdkuAEyd0lTRhwrbIgLBOuZB2dXRBwnAt1y/04ZLu2Zb2bdGRXKPl68Oxf8NvcoRGtXkQ9u+l + TI9QVToPwuGU4PRm4S4XwqNNk9CE09QzIDxZlSThUEfTJ+wraWqE1Us+hBubIuG1jpbZEIZKmtyzsMyH + sOwqaWqE5zojwo1Nj9DYpsiHsOgqaWrPwjInwq6SJkZ4rrMi3CY3C10dzYmwW8iW2Cws1xjJ8Llsv7CL + 6Z1t+bLGSK5JuK0SIzT73AjdKcFpzcIyN0JXSZMiPOjsCLeJzcJ9foTXSpoSoSrzI7xW0pQIDzpDwktK + hP77aHaEryodQmPaHAl1PxoJEKp3nSXhsCRYPqHd50n4GlZBpUDY5kmorU2EsK+j+RH2lVQ84bAEODvC + fnOFdMJqWAK8PGG41mpU1mGjYRgVsf1CVemVR3K1f3AyZ1vu8iU82jQIm3wJQyUVT6jzJdRdJRVOqN5y + JuwqqXBC9300X8JTEoQ6Z8KuksomVOe8CX0lFU1obJM34Uk64fVfOm9CX0llE55zJ9zIJrxeTe6ErpLK + JixzJ3SVVDThWWdPuBU+C5t1CcPnWv1CH1+V5LMtK9WuN3Rr/oO/xlIZyYSHGsLyUkkm3BcQFq+iC2kL + oVt+YeQShjqaOWF5EUy4g9Bdr1YsoWkLCIvPSiqP0L7XELqrr6TiCK3dQ9hd4TupQMIWwu6qpRK+awhD + 7BayySN8g7CPXSUVR6haCPtYyySsNIRD9JVUHOEuAsJwrdov9HHjNvzK6hde/00Tw9DFQngSSVhA+Bn9 + KcHCuvbVuYbwC+HGipuF7hRgCD+jq6TCZqEpIfwaXSUVRujqKIRfCDfCZmFXRyH8Ek9KCXsWlhB+j6Uy + ogirlxrCfwi3smah2RcQ/hOHhWwyCFUJ4b+xlDULw9I1CL8SDkuCRRDuCwj/XxwqqQjCFsIfYl9JJRD2 + S4BXH7rwuX6/0F9bKWdbGt8qjGLoIiN8FXO2ZX+aOoT/RiVkFlp1qCH8KfanBAuYhTsIf47hvPX4CW1b + QPhjrIU8C9V7DeHPsewqafyzcAfhrdh9J42fsC0gvBFrEc9CV0chvBG7191HTqhcHYXwVjwKmIV+CTCE + t+LJPQxjn4VVDeHt6Ctp7LPwBcLf4sbGTmh8HYXwZnSVNPZZGNPQ9Vck/UIf4z/b8i2asdLRtXx9PNrI + CU0D4e/xFDmhrTSEf8QPEzWhOkP4VzzamAlNOAUYwl/iqX9Jc6TPQg3hn7GvpHESniH8O24jnoVDHYXw + t3gKC9liJFSqhPCOGO8sNNVBQ3hHvEQ7CyuzZxbeE8OS4BgJqxbCu2K8s/BQQ3hPDAvZYnwW7goI74pd + JY2P0FRtdGMVPiPqF3bRb1OLr1+oDtGNVbSElzgJzR7Ce6N/c0WEhC2Ed0dXSaMjtO8awrvjJUJCa/cQ + 3h9dJY2PsIXw/lhfv8BHR/iuIXwgXiIkfIPwkXhUkRFW7q0UED4Q6/gIKw3hQ/HDREVo+qNmILw7Hm1s + hA2Ej8VTXIRWVRrCB+OwJDgOwuoFwkfjsCQ4CsJ+K0V0hOGKso156scwjOi6/UJVlRGPVaR/VvlhYiI8 + 1xA+TLix8RCGt1JA+Fg8RURojYbwiRgqaQSEbisFhE/EbRUPYQPhM/GkYiFUtoTwqdidtx4BoftdD+Ez + cRvLLKz2ED4XuzdXxEBYQvhkVCYOwoOG8Ml4iYRwD+Gz0VfSCAhbCJ+OrpKuT3jQED4dLzEQuq0U0RKG + zyj7hT66N1eEEV2xX9jGOThFvH/Wl+jOW1+b0J+mDuGz0W34XX0W7iAcE1+VWp2wLSAcEev1n4VdHYXw + 2Tgsv1iP8A3CcfG49iysmgLCUfG09rOwqiEcF4dKuhbhC4RjY19J1yJsCghHxtPKhDWEY2NfSVcifIFw + PGGopCsRNhCOj6dVCTWEE8Sukq5CaM+xE4Yr3n6hu8qNH9R1+oVN5IMjg7B7L+U6hKaEcIpYKrMSofs+ + CuEUhNuVZqEx+wLCSaI/JXgFQr+1F8IpYrnOLDTVoYZwIsLLKrPQ11EIp4muki5PqKoWwqmi+066PKGv + oxBORHhZg9DXUQgnitdKujihMS2E08V6hWeh8nUUwonitZIuTWjMDsIp4+uwGmkpwrCVAsKpYr30s1DZ + sAQ48sEJn5H3C/11Wfxsy72EwZFEGN5LuRih8W+lgHDCWC9MqN5FDI4kwuGU4KUK6U7E4IgiPNolCU3V + iBgcUYSnRQlVVYsYHFGEfSVdhrB6gXD6GN5csQihUY2MwZFFeFqQ0FY1hNPHsqukixC609RFDI4wwo1d + itCfpi5icGQRFl0lXWQWmhLCOWJXSRchdG+lEDE40gg3CxXS7q0UIgZHGKE/kW2ZZ2EphjBcIrqaLrpt + amG8Z+wXKnsWMRpfohzCbbVIy9c2EM4V3SnBS8zCEsLZojLzE1bhbZOSBkcQ4bZagnAvZDS0RMJrJZ2b + 0Pi3UmgI54rKzE94EDMaIgkv889CsxczGiIJh4VsM87CVsxoiCTUau5ZqA6CRkMkYb8keL5ZuBc0GiIJ + +0o634+KVtBoiCTUMz8LhyXAEM4Ww0K22WZhvwQYwtniUalZCVtRoyGtX+ivujtvfaZ+4bWOihoNkYQz + n225g3D+eFRzEjYQzh/rWQk1hAtEX0lnItxBuET0563PRNhAuEQ8zUioIVwkuko6C6F60xAuEl0lnYew + 0RAuEk8zEapK3GhIJXSVdA7CbgkwhEvEjZ2D0HRLgCFcIp5mIbSmFDcaYgmvlXQOwrO80ZBLuJ1lFjby + RqO/ZHXI3PXav+F3wn6hUqXQ0RD5R5dznG3ZnQIM4TKxvEw/C6u91NGQ+UcPlXRCwlbsaIj8o4dTgqcj + DHUUwoVieZmccC93NGT+0X0lnYwwfB+FcLGoQyWdjPCgBY+GyD+6r6RTEZo9hEvH8OaKqQhtC+HSMXwn + nYjQvmsIF49dJZ2G0G+lEDwaQgm776RTEbYQLh+7JcHTEPotaYJHQyhhtyR4IsKdFkoYPuX1C330b64I + GqP6hVfDppDZPRVOeFJTnW1ZVXUB4QrRnxI8DeELhOsQbiYrpI3U0RBO6M9bn2YWllJHQzqhq6RTELq3 + UhQQrhFdJZ2AsPKnqUO4SjxZNQFhd5o6hKvE8sOMJ+zeSlFAuEq8VtLRhNfPRu5oiCcsTpMQlnJHQz7h + UEmfJlRDHYVwlVhuq/GEjeDRkE84LGQbQ1gKHo0ECPvNFc8/C9VZ8O0Pl9B+ob/CeetP9wtNtZd8+4Xg + P7qPryPPtjSqhHDdWKtxs7A61BCuG8vuvPXnZ+EOwrVjV0mfJTSmLSBcOdajnoXqvYZw7dhV0qcL6Q7C + 9aN/w+/ThG0B4eqxHlFIXR2FcPXoK+mzs3AHYQzRfSd9jtCotoAwglg//SxUfgkwhKtHt5DtyVm4gzCO + eHxyFoYlwBCuH0/qufO8ujoq+/bDp+SGmQ/Pnm25E3/7yRAe7TOEpmrE334yhCf73CyUf/vJEPbvpXyM + sHqRf/vpEB7t44ThNHUI44hDJX3oWZjA7adDOFTSRwjPCdx+QoTHh2fhUEchjCP2r7t/5FlYJnD7CRFq + ZR4lPNcJ3H5KhNsHZ+G1jqZw+wkR1qGS3k2oVAthXLF8bBYad5p6ArefFOHloVlYmX0BYWSxq6T3Eir3 + VooEbr+/Euh5lro7bz1Y/d0vPIi/368xEcLLI4RmryGMLvoNv3cTthrC+KIydxOqQwL3+yWmQni5n9DX + UQiji+7NFfcR+tPUIYwwXivpXYTWvZVCQxhhvNxNuE/ifnV6hNfvpHcStkncr06PsL6X8D2N+9XpEX4u + ZPuDcJfI/SZIOCxk+5WwXwIMYYSxVvcQqiqV+02QcKikvxO+JXO/CRL2myt+IzSqSeZ+dVL9Qn/1pwT/ + evRhlc79FukR9qcE/9ryfYEw4lge7Z+EtoEw5nj6k9AaDWHUsauktwndVgoIo45H+xdhA2Hc8fQ7oXJb + 0iCMO/pK+gvhGcLY4/aPWdhAGHv0C9luPwtVCWH00S1ku0140BBGH7e/zsK9hjD66Crp7WdhqSGMP14r + 6U3CQ2L3myjh5RfCfWL321/p9At9fL15MKJ7K0V695vgLdU3z3n2p6lDGH8sL+ZW134HoYzYv5fyX0Jl + 2yTvN8Fbqm88C0MdhTD++Pm6+++E3WnqEEqIR/UToTJNoveb4C2dfiYMdRRCAXGopN8L6Q5COTEsZPuH + sEn2fhO8pVr9RKiTvd8Eb6mvpN8I3yCUFEMl/UbYQCgpnn4g1BCKil0l/UKozkkShs/E+oUulpt/+oXu + FOAE7zdhwqJ7c8UnoTUlhLJi6Tf8fiE81xDKiuXm2yz0dRRCWdGfEvw5C1VZQCgslu7NFZ+E/v/iTu9+ + 0ya8VJ+EXR2FUFh0lbQnVP4F9hAKi+Xns7Byb6UoIJQWXSXtBd1bKQoIxcVrJR1mYZvo/SZOWA/PwlBH + IZQWy8uwEH8HoczYLwnulwBDKC72S4Jtv3QtvfvtrxT7hf66hLMt96neYNItX3+92u6FoW2qN5g+YXdK + sAqnqUMoMXaVtD8FGEKB0Z0SbFSb7g0Wyd5SH09KWVXVEMqNbvmFeYFQcjy6t1IUEAqO10pa1RBKjtdK + +gKhbMKN25IGoeR4ckuAIZQcy//WEBLjjwyH4Bg+U+0XZhAZDvGR4RAfGQ7xkeEQHxkO8ZHhEB8ZDvGR + 4RAfGQ7xkeEQHxkO8ZHhEB8ZDvGR4RAei+J/ref+2hvjRE8AAAAASUVORK5CYII= + + + \ No newline at end of file diff --git a/AirplaneWithRadar/AirplaneWithRadar/Direction.cs b/AirplaneWithRadar/AirplaneWithRadar/Direction.cs new file mode 100644 index 0000000..9a31e09 --- /dev/null +++ b/AirplaneWithRadar/AirplaneWithRadar/Direction.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace AirplaneWithRadar +{ + /// + /// Направление перемещения + /// + public enum DirectionType + { + /// + /// Вверх + /// + Up = 1, + /// + /// Вниз + /// + Down = 2, + /// + /// Влево + /// + Left = 3, + /// + /// Вправо + /// + Right = 4 + } + +} diff --git a/AirplaneWithRadar/AirplaneWithRadar/DrawningAirplane.cs b/AirplaneWithRadar/AirplaneWithRadar/DrawningAirplane.cs new file mode 100644 index 0000000..c327a04 --- /dev/null +++ b/AirplaneWithRadar/AirplaneWithRadar/DrawningAirplane.cs @@ -0,0 +1,190 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace AirplaneWithRadar +{/// + /// Класс, отвечающий за прорисовку и перемещение объекта-сущности + /// + public class DrawningAirplane + { + /// + /// Класс-сущность + /// + public EntityAirplaneWithRadar? EntityAirplaneWithRadar{ get; private set; } + /// + /// Ширина окна + /// + private int _pictureWidth; + /// + /// Высота окна + /// + private int _pictureHeight; + /// + /// /// Левая координата прорисовки самолета + /// + private int _startPosX; + /// + /// Верхняя кооридната прорисовки самолета + /// + private int _startPosY; + /// + /// Ширина прорисовки самолета + /// + private readonly int _airplaneWidth = 200; + /// + /// Высота прорисовки самолета + /// + private readonly int _airplaneHeight = 85; + /// + /// Инициализация свойств + /// + /// Скорость + /// Вес + /// Цвет самолета + /// Дополнительный цвет + /// Признак наличия радара + /// Признак наличия доп.бака + /// Признак наличия штыря + /// Ширина картинки + /// Высота картинки + /// true - объект создан, false - проверка не пройдена, нельзя создать объект в этих размерах + public bool Init(int speed, double weight, Color bodyColor, Color + additionalColor, bool radar, bool tank, bool pin, int width, int height) + { + // TODO: Продумать проверки + _pictureWidth = width; + _pictureHeight = height; + EntityAirplaneWithRadar = new EntityAirplaneWithRadar(); + EntityAirplaneWithRadar.Init(speed, weight, bodyColor, additionalColor, radar, tank, pin); + return true; + } + /// + /// Установка позиции + /// + /// Координата X + /// Координата Y + public void SetPosition(int x, int y) + { + // TODO: Изменение x, y + _startPosX = x; + _startPosY = y; + } + /// + /// Изменение направления перемещения + /// + /// Направление + public void MoveTransport(DirectionType direction) + { + if (EntityAirplaneWithRadar == null) + { + return; + } + switch (direction) + { + //влево + case DirectionType.Left: + if (_startPosX - EntityAirplaneWithRadar.Step > 0) + { + _startPosX -= (int)EntityAirplaneWithRadar.Step; + } + break; + //вверх + case DirectionType.Up: + if (_startPosY - EntityAirplaneWithRadar.Step > 0) + { + _startPosY -= (int)EntityAirplaneWithRadar.Step; + } + break; + // вправо + case DirectionType.Right: + if (_startPosX + EntityAirplaneWithRadar.Step + _airplaneWidth < _pictureWidth) + { + _startPosX += (int)EntityAirplaneWithRadar.Step; + } + break; + //вниз + case DirectionType.Down: + if (_startPosY + EntityAirplaneWithRadar.Step + _airplaneHeight < _pictureHeight) + { + _startPosY += (int)EntityAirplaneWithRadar.Step; + } + break; + } + } + /// + /// Прорисовка объекта + /// + /// + public void DrawTransport(Graphics g) + { + if (EntityAirplaneWithRadar == null) + { + return; + } + Pen penBlack = new(Color.Black); + Brush additionalBrush = new SolidBrush(EntityAirplaneWithRadar.AdditionalColor); + Brush bodyBrush = new SolidBrush(EntityAirplaneWithRadar.BodyColor); + // радар + if (EntityAirplaneWithRadar.Radar) + { + g.FillEllipse(additionalBrush, _startPosX + 65, _startPosY + 25, 50, 10); + g.DrawEllipse(penBlack, _startPosX + 65, _startPosY + 25, 50, 10); + g.FillRectangle(additionalBrush, _startPosX + 85, _startPosY + 35, 10, 5); + g.DrawRectangle(penBlack, _startPosX + 85, _startPosY + 35, 10, 5); + + } + //фюзеляж + g.FillRectangle(bodyBrush, _startPosX + 4, _startPosY + 40, 150, 30); + g.DrawRectangle(penBlack, _startPosX + 4, _startPosY + 40, 150, 30); + + //киль + g.FillPolygon(additionalBrush, new Point[] { new Point(_startPosX + 4, _startPosY + 40), new Point(_startPosX + 4, _startPosY + 0), new Point(_startPosX + 50, _startPosY + 40)}); + g.DrawPolygon(penBlack, new Point[] { new Point(_startPosX + 4, _startPosY + 40), new Point(_startPosX + 4, _startPosY + 0), new Point(_startPosX + 50, _startPosY + 40) }); + + //стабилизатор и крыло + Brush brSilver = new SolidBrush(Color.Silver); + g.FillEllipse(brSilver, _startPosX, _startPosY + 35, 55, 10); + g.DrawEllipse(penBlack, _startPosX, _startPosY + 35, 55, 10); + g.FillEllipse(brSilver, _startPosX + 55, _startPosY + 50, 70, 10); + g.DrawEllipse(penBlack, _startPosX + 55, _startPosY + 50, 70, 10); + + //шасси + Brush brGray = new SolidBrush(Color.Gray); + Pen penGray = new Pen(Color.Gray); + penGray.Width = 3; + g.DrawLine(penGray, new Point(_startPosX + 50, _startPosY + 70), new Point(_startPosX + 50, _startPosY + 80)); + g.DrawLine(penGray, new Point(_startPosX + 140, _startPosY + 70), new Point(_startPosX + 140, _startPosY + 80)); + g.FillRectangle(brGray, _startPosX + 44, _startPosY + 80, 5, 5); + g.FillRectangle(brGray, _startPosX + 51, _startPosY + 80, 5, 5); + g.FillRectangle(brGray, _startPosX + 138, _startPosY + 80, 5, 5); + + //кабина + Brush brLightBlue = new SolidBrush(Color.LightBlue); + Pen penBlue = new Pen(Color.CadetBlue); + g.FillPolygon(additionalBrush, new Point[] { new Point(_startPosX + 150, _startPosY + 55), new Point(_startPosX + 190, _startPosY + 55), new Point(_startPosX + 150, _startPosY + 75) }); + g.FillPolygon(brLightBlue, new Point[] { new Point(_startPosX + 150, _startPosY + 55), new Point(_startPosX + 150, _startPosY + 35), new Point(_startPosX + 190, _startPosY + 55) }); + g.DrawLine(penBlack, new Point(_startPosX + 150, _startPosY + 55), new Point(_startPosX + 150, _startPosY + 35)); + g.DrawLine(penBlack, new Point(_startPosX + 150, _startPosY + 35), new Point(_startPosX + 190, _startPosY + 55)); + g.DrawLine(penBlue, new Point(_startPosX + 190, _startPosY + 55), new Point(_startPosX + 150, _startPosY + 55)); + g.DrawLine(penBlack, new Point(_startPosX + 150, _startPosY + 75), new Point(_startPosX + 150, _startPosY + 55)); + g.DrawLine(penBlack, new Point(_startPosX + 150, _startPosY + 75), new Point(_startPosX + 190, _startPosY + 55)); + + // Штырь + if (EntityAirplaneWithRadar.Pin) + { + g.DrawLine(penGray, new Point(_startPosX + 190, _startPosY + 55), new Point(_startPosX + 200, _startPosY + 55)); + } + + // бак + if (EntityAirplaneWithRadar.Tank) + { + g.FillRectangle(additionalBrush, _startPosX + 70, _startPosY + 65, 45, 15); + g.FillPolygon(additionalBrush, new Point[] { new Point(_startPosX + 70, _startPosY + 65), new Point(_startPosX + 60, _startPosY + 72), new Point(_startPosX + 70, _startPosY + 80) }); + g.FillPolygon(additionalBrush, new Point[] { new Point(_startPosX + 115, _startPosY + 65), new Point(_startPosX + 125, _startPosY + 72), new Point(_startPosX + 115, _startPosY + 80) }); + } + } + } +} diff --git a/AirplaneWithRadar/AirplaneWithRadar/Form1.Designer.cs b/AirplaneWithRadar/AirplaneWithRadar/Form1.Designer.cs deleted file mode 100644 index 635f08f..0000000 --- a/AirplaneWithRadar/AirplaneWithRadar/Form1.Designer.cs +++ /dev/null @@ -1,39 +0,0 @@ -namespace AirplaneWithRadar -{ - 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/AirplaneWithRadar/AirplaneWithRadar/Form1.cs b/AirplaneWithRadar/AirplaneWithRadar/Form1.cs deleted file mode 100644 index ebb1849..0000000 --- a/AirplaneWithRadar/AirplaneWithRadar/Form1.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace AirplaneWithRadar -{ - public partial class Form1 : Form - { - public Form1() - { - InitializeComponent(); - } - } -} \ No newline at end of file diff --git a/AirplaneWithRadar/AirplaneWithRadar/Program.cs b/AirplaneWithRadar/AirplaneWithRadar/Program.cs index cf770a7..673884b 100644 --- a/AirplaneWithRadar/AirplaneWithRadar/Program.cs +++ b/AirplaneWithRadar/AirplaneWithRadar/Program.cs @@ -11,7 +11,7 @@ namespace AirplaneWithRadar // 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 AirplaneWithRadarForm()); } } } \ No newline at end of file diff --git a/AirplaneWithRadar/AirplaneWithRadar/ProjectAirplane.cs b/AirplaneWithRadar/AirplaneWithRadar/ProjectAirplane.cs new file mode 100644 index 0000000..5141fc1 --- /dev/null +++ b/AirplaneWithRadar/AirplaneWithRadar/ProjectAirplane.cs @@ -0,0 +1,66 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace AirplaneWithRadar +{ + public class EntityAirplaneWithRadar + { + /// + /// Скорость + /// + 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 Radar { get; private set; } + /// + /// Признак (опция) наличия доп.бака + /// + public bool Tank { get; private set; } + /// + /// Признак (опция) наличия штыря + /// + public bool Pin { get; private set; } + /// + /// Шаг перемещения автомобиля + /// + public double Step => (double)Speed * 100 / Weight; + /// + /// Инициализация полей объекта-класса спортивного автомобиля + /// + /// Скорость + /// Вес автомобиля + /// Основной цвет + /// Дополнительный цвет + /// Признак наличия радара + /// Признак наличия доп.бака + /// Признак наличия штфря + public void Init(int speed, double weight, Color bodyColor, Color + additionalColor, bool radar, bool tank, bool pin) + { + Speed = speed; + Weight = weight; + BodyColor = bodyColor; + AdditionalColor = additionalColor; + Radar = radar; + Tank = tank; + Pin = pin; + } + + } +} \ No newline at end of file diff --git a/AirplaneWithRadar/AirplaneWithRadar/Properties/Resources.Designer.cs b/AirplaneWithRadar/AirplaneWithRadar/Properties/Resources.Designer.cs new file mode 100644 index 0000000..47bb6ac --- /dev/null +++ b/AirplaneWithRadar/AirplaneWithRadar/Properties/Resources.Designer.cs @@ -0,0 +1,103 @@ +//------------------------------------------------------------------------------ +// +// Этот код создан программой. +// Исполняемая версия:4.0.30319.42000 +// +// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае +// повторной генерации кода. +// +//------------------------------------------------------------------------------ + +namespace AirplaneWithRadar.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("AirplaneWithRadar.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/AirplaneWithRadar/AirplaneWithRadar/Form1.resx b/AirplaneWithRadar/AirplaneWithRadar/Properties/Resources.resx similarity index 84% rename from AirplaneWithRadar/AirplaneWithRadar/Form1.resx rename to AirplaneWithRadar/AirplaneWithRadar/Properties/Resources.resx index 1af7de1..f8f02a0 100644 --- a/AirplaneWithRadar/AirplaneWithRadar/Form1.resx +++ b/AirplaneWithRadar/AirplaneWithRadar/Properties/Resources.resx @@ -117,4 +117,17 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\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 + + + ..\Resources\Down.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/AirplaneWithRadar/AirplaneWithRadar/Resources/Down.png b/AirplaneWithRadar/AirplaneWithRadar/Resources/Down.png new file mode 100644 index 0000000000000000000000000000000000000000..08436f421d014af3452c83267e9839d4aab3429d GIT binary patch literal 6300 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 literal 0 HcmV?d00001 diff --git a/AirplaneWithRadar/AirplaneWithRadar/Resources/Left.png b/AirplaneWithRadar/AirplaneWithRadar/Resources/Left.png new file mode 100644 index 0000000000000000000000000000000000000000..c8a7f4c7dec8cb216bfa2d3010869248feb52704 GIT binary patch literal 6070 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 O9kx7vsF>(+{l5T^PnrDy literal 0 HcmV?d00001 diff --git a/AirplaneWithRadar/AirplaneWithRadar/Resources/Right.png b/AirplaneWithRadar/AirplaneWithRadar/Resources/Right.png new file mode 100644 index 0000000000000000000000000000000000000000..61255f37fcbc9808dc594371473b279e9476224b GIT binary patch literal 4950 zcmds5i#wEg-`CdS7Gk6(IW(D}qz1Llu?^)+TZtl?CcE04OT?h9TT`3Eh=z8>Ya>r7 zgCxpf8)fvc&g+m<6NX6+ix`HP=X>jUp7*(~=X(Ev_qrUexqrX!;dA(Y$GCae)lNZ9 zO-@QmO2NV2_K1|!S`_eoa4hoOr~W@~50$B2=P9zk-Elbjmx`}8?u%C4HK60$H5$A{{D7U*f&#&+Lzw@NEM4IG0HL3QE2nxLc{8_b=qEjAo{_zMAqP(x zbg|m}wDh zJ*WajUF5C1r|&)Vz20N?QC&i%T)Lt!B}jFTMm0Q2cvhRP1WE7=CAaL=GwC1Syo zQx}$Fm`tzuy;QxubfneY^Lrugc0q{PL2ZfcCj88guc&GhDGsKP(?bN)q;)D~ka7>z zA5waADr%?fkXCdyqNAcVo#~tr_KP%Rh-~LM$&&O7=18_Ge0(yl1i2ueiUx4f+743o z@d6@063?pC(bJeNrV^gzi>HVQd08p{RSG%qM~M|HMu_{ZVEO^HdNSTnopd&C6Cb|{ z>-we!awRGEIIoYl09Qi9-<_O?I)xndzgy7(H~x&C&3fdOyXOMW33#0ONXqr#y>RrU z1gI85E5paB{snXWJ+FV+?BgNL7|GplSAC50D+Y$QyjccN?CgLSM%0OE5~?zfYeU!o z@fc^~{R!kD8VXNeAE#P{gJ|PW?iCt3IlUSbZ&b=ua>9o_dOqSHtD~BbYz#I8iNLr;Iu-;qHk zJeQ-5Ph+hHh^9$I4{8r1PLsIKgSy{RxSjAqZnW!RD$_f@%Y6wKR!}rio3AXMndL+n zKEve6C<+(i!VpYx18O1kewMRw<}#D%9NEirswY;0c)7SBc;2no7^sD*m&O|Zi3r8y z?twT;t^j%b#1if|q=B1*`g7WNdk3m#IW^vl;&5RS-SDVr!I1Amxv0vz$W%HN-vxDm zS;*I+*Jn;girr1Q7t^3S603KH2)&z~a|7V4)OpOBJHT2!?isUFnA00Ct6`w@S9pGy z@%&UGPUTHC>GahvoC41BRI0^)8sTDfSx^BIY^jFs&I38AA>!Lnc<@fy(>c;>T&D+6 z1$L~x20!bfys`lB@(Yg!d!Y^LrzPG-$S4x?U#2o$@U`dCn5W{46?XdwCM?Lyg2>n> z;ds}HDN|R8k$rt3$L~6sP%d{AB!;fcoUp2$P&-7m6Pkxdm>57)qQDdz&=Q77ADb*N z>XCw?*ZTfnPtDRXPAc{FbJ+!Fw&2c`Js0t|}8UIqh~IC|zU-LYYb~*nHSO z;cVOkT#s6VnUM?KtWpOUnVP)2fUgj&R8Nwh(2qghqMyqw!EJsZSO_PKRgIqJ^kVWO z>F!Gwl`*67*(GWp-|;MFzIK@yRKAWuDV4kMGsf3bxnA=GFq!NV&eHm+cf6@XLXuCk z2i29Kk#4;baXDuwZk{CntTxVyH#<0{J=BDnXozQ#_Lo7bTNfnOkF=g}YQpV0*DsH% zbMMJ^Nfg8A3Y>Cvr`Z6`oH+D<;C`T%crQ}RSde`EVZge}tv?l^tvnx`%NLgKrJl-@ z9OJNCT`G?`bE!2Cw&SfyuFaX7m-@7DWLz7KOt8Yd(~ZxLc$Uz-asYLLj?;@W^T-5? zGWI^)RhoPr>;Uzna_!p)=CBp6p~D$x#w?Il!#8sY1%C9Fae1=@Ry5 z5p%glum?3pG3R=_y-Njme`yjMhM-J~<)KlHb06@**@W2fX^q9-zC^v|-bd$5BZRn; zAz0B&wdWA7Po2bI@JrP-^$B+j;zKlvw%npVmM-CLQEXlc(+OL1^+|@=u!Iap=v(@F zUi&D7Pe4+mA@7@mhY%jRXyACmr^Prf-)sX|ti27^%_)U%B=@I?XSto=z$C1gdV|&S z0ZOFvJ@gaa#@ewyDYOT;SdbBvz~&6fR3HO8o>q#mHxmszNr6f9SH+hwny@X&Z9ho4 zqz}V^azoOX8rZ(<*7LTYBM%LqU<0w$#@PzqV_Y< z?s83F)R=EwbMg@7$Z~suA946~#Zb01!ei{r+=FXN-e;DGNx_!SKh+EsUF%rd|b=B47?8`^DHKl{^3o@SDus~`!Jys<6`1d(S(enqxW1s-PuG{vuwPr-ka$|nRdK&EIJB# zRs4AlcZTMp*pdq7%krW4Ki=9(ByywPrvj-IU4l7349P>^ceB)iYClT?!HmT=!rdOa zR9uC2cTcv9_vG9!?>cp^cz#Yx8cm|_3_TIHgAkE-@FV;=uxmGGpCgzpADc%vGQqSA zDg<~hv^&)&I>GC2fJV=})~|O|6!I|iM3D}`_)9xwr(G!i`XYfH^0qiY`xE#kqb3plLZUr_3d40B z^H|A-*eF;U{ZQDrknzURKJlEHC*PGK6aJE2+HIV(^8QLo%2dId8TUh!ImcTiiH9j6 z0sE`azV5=2J4)*5(0hnwQZVi}@)f~L6Qt(D*9N#FXZA1naGa~9`1JIz({u?1-@ z?t>C$ohx%t-z!?O6K$H9KXI;=KewQOVX$46Z2sL|IAa(y`V}7W-Cwra;(3VKJK){0 zi?EjkmBJqP%97S`JF&j4FRe*H*;{Qs!bolY{UWd*Ze4}8;Ag36Om*5vu8fj-U9?YQ zzS|Zh^O^qLtf5#Ek^2sK^f{-TbRQiP?#1d|HM|3b)^X=9V6UQzF&<2OHr%?y+%gV^ z2zd;rXSuV}Iv~^6=W$^)fnX4LEIBxCTkCW=a_FoS` z+$~+JnWM>9Ql`H-gC#btgZlM}Be6>+NKdF5<|t_SefdN_EV-^-bYgDZM7b}LQ~bCp zE?O<;XjOA^oaigOT{TECruCwY!m;CafYet#PL^Jng03$e%0fG^x<`gO+pX_SpRb(P zZ5)4A=|*hyoqVQC^-dPW=!M#-wHa);vjPu8?(< zA7+1buJz{kb@RH}l`+X3uQV9t#HqoNCiG~wcpk0&NgPvU!n>F)4notlUq`ESisobo zRV3wPo@uO>l8y(DKCej)P~G#xRIpp*%d*Z9n5g{9IUd#J9p2|$zDK4_wVO;LQJy3oubmwSmiog(1Jj@PE4p$ zlubo?UoOBM(O140c`#QkKpwKAuwV|iOYEZYb(Ffa`cx7wDV z!I$$Uno{@Wte0}%EOxFveT>K0aAk`*`qsUCLZJNpah@@2GeB|$?@soW#x7t~d&lQhM{9liH(z14?(RB2H?3kiDlwAct39KmHHud*YbYI3 z=>#24bB@6E45#kr5mO+<9uVRIZhnK2lr(R0jX^l1_vXwP0Itbc)-Zbw)ri-TZ%vTb z(Qp6h8}t>Lr|D^v;Ut``F>3D-Jsug~Z1r9We@e8XyPFT89eUotyG=n+=_2S}uxg9P zoIrE~r%~@QfPoJzA2GEHLI%JvPdJMZ^L~)SPy;UFvWqg^G&sY0>J6W-8dS)2DO*9N zkeEr6w8J$a@7lFaFS&N`0)th7qmmmI)g1v(qEq^&P;5XC!Xi=`Uk+6q^&*pu;I zkjGy&2wJ}DE}X^$k|tdqyLD0XP^-ncMM=E^L9Cy!m zfR|QKlvQQDji>T?{rPOM{di0@E4UB5R+Cw3N=VQNpj}qx0*|*~T6|uW$ta7x8GVb+_C%w_XhV-^t%_!)Z~3HPL&r9H zVc|+Ac>hGa1mAGW;HjKwcKmB-9^7dGDwwV)UBafM6sY(jhP-$;HfQj`CVBb*U>OH` za@@Pqhu0W9D#DnQ_Q19TCQSa~T(eE&@3GYJcCBh|^e`(Jn|@N}7Z(NsFRY?WY-03y zDbl}N>Ox$#4XgsKAEg?P;#{W&FeSQVl@F=-$e=wadoAY^X~k?C{oQBnjWQ;`+V1v6 ztz;<5IX9GYZXCAVu^qlPD*r62{PRsTD)?meb~y51kv)iRr?f7?^MmMb%|F4t$)tat z5-8bgvB(=Oqu*ko+vm)bewKaH|Nk{Q(ORlXVW$aWcrO9|FDB)1(ABn(a{B5&0CV(H Avj6}9 literal 0 HcmV?d00001 diff --git a/AirplaneWithRadar/AirplaneWithRadar/Resources/Up.png b/AirplaneWithRadar/AirplaneWithRadar/Resources/Up.png new file mode 100644 index 0000000000000000000000000000000000000000..ac183c5ed11696e7ba440abf68caa6715c5057af GIT binary patch literal 6562 zcmeHM_g7R&_Q$lo285=`nFbmpg9<278W?g|kYp2VVF(f(f~bTUd<`NJ6v=6kppp@2 znjnl10Tl^?K$Bz|6cCUklA*V7_w0A(obTDcV1Ic1ZoRs7>&DNmIvs0iZg7f`kCB0a z;gpe~o)rVbG5GK~ehhqJx-tcU*O5Rg13W`TkH8l&IPRfiro+HcoyfFDJORcSOVdmG zGcz+sjvS%W>EMI6w|7HB!;G$P4;Y{V3>^X)7+Bg4pCg_APu&<8czKQVbS{OCew`qM z%xjRNX@3NXAcG9a&zB4G>-ZRIMe=thQ}HL&#pBQ{TAt=FT2{9<^!H!)4mtiN^~T~$ ziSxAnBfgsgQ(}p_VV|zwP1Imneb9;3T08&BKqzMG^)y=e|C>DC8RXwj&p9oB$Tuif zb})SLw7Saolkjs_Z)ZLT*E#><;8^~gJ+HU6$Rh!Qb(1n2HC>(1=!zRu|6Q_9cm6K} zR}XKGiOb6jc^_D$+J`-EG|#tQJ892A`*=&2;3fEv2&8Awx$kQ&i={TLqhY|fBwf*I ze$;F5BX8s&x&Ok&eYwe=k&B*-=Ccfg?6#$9jF~(B1=oK)f%Z%O$Mx!m_|tMBFaA;e zgYcUta%EZ?VL7<87oJ{-P=zh8ESA-^wUY7yn=H9P2y(@dENwL+DsSY$btFqipG7I+ z(?ayyd!1^x@N*xfr$0{?ihsH*CJv-kB|R zZB?wzp4YAo`?;N(e;#{o=@{OqT2q%2ZD|#Dkk&^xD+zAqLv^>p5^}A-TI%`qvNhI? zuFmsY)u|brzho6WJ!nX&_kiN}E!CV!y4M!I!QMsFgQ|tZFQckR%foB@l?e8G@VYRv zuKJ9;DlO1ob$pAT*eY&67W)0vv&*Ljmd0dFO`=lb?Py8SYCEjN%a}5sX2zHggWp+U zFQcmGtGSMscRaE_i0ln1tSk9hTdRDu3zwVxdIDcc{Izlv#lL%&w(8$+2h}9<2maRA z`~sgIKJF~aoN{S6)Z+0&?6%r1BG-;_$+hMue}9v7`No$?#L~zne)F6(Z$Iq}asMPT z?z-P48zhXL5gc0~yu%^N@XgLPf4I}Q#H-omaRPR*$5BGV*2-*pA7jJ(EO^Eai7--x z9Xf7&lc7~5okC;_s#`HEDVNxZjWTn2bt+_teL`Dql3^qdW7?(Kx#cra3HL-c*`0AF z!83fw!J{kC+55hgK^clRR)CV3t-zY5a3IXn2WohB87X+Xy~oLfVyy(&v%FE$copbd z+-@nV{NC!kn8wii9l-U`@dz>Gx;2>A#gP=7D0Rc^qjrGJ$+tp+IWifaP8c7@&jDEt z?d1)mzIjp8w8aAlk41}9$l3S))&-xl9DpQ#C})4{V!B-!xwwVY=K!6J%c)x`cJRD` zp5Y|eHI2E`#!5e}=EgtnM4MZ;#ws3|O9wa47R)J~`(6$YEgetX4CBy@wm0y{28GCl z{+JOMFRux(fBiS2P<2aAUn6V7w5BjF5j*%k3)&_5pxxOfyT8^1JS|*{sr+q4t!7!t z#%jCG?&5jbBP|aC%|BO7!Y*kI0{FSon zwz1)dpOuEv5{V|GFX&v2f^b}?rNMG8spa84p_V^bHD7^|LSbjCkv^-- zN{rA|yJ1%J&c8=X1$1ZnYgv#JZ`vX;d-=QezHOC5H`q5~`YuxJeWo5bZPE$nW!>%s zM99TLBt=^*Xf|@?GqCQ^$fHoRVok7r&-eJ%at33g3aHN+7i zV)@~~_ITb5kOP>!=vS;xz6O%a29g>&=j|5XQDI#i=hivBh`H`9Si;8YHw)dVn5Bie zba;P;@ur3Drx?E-{j;t;AVEHB#`l_7#*~>^OvVo?Ft3`uT~V$LW3@)V)gH6zi}9N` zawlrw?8gT}Qw*sr%T7XREBYNPE}Uqg?2IU2_jQYD8`1pgWZ)p_C9h^iai8*xy8-)* zG}+ag(f}cfG~<&`&*~<6Y-sKnOMmss)>9I0%t;D3MH9HLESO(eh~##7aeT|~4uT_$ zs;Zt`=PL@E3$X&=G0-{q2!Mz5f>&6qmDc)4b3@Oa&)f(!;Pg{WSsbf|=7AES<>mFz zHU+uKXOAb1m9Vr~{s?Tgbjwb?m8s!eS>Y4x!>Yi69)t#v;>o?NTbJ>6bk6m2dKka2 zui$VTDc~_R~V}aNGuvwU62p%&c%m90grii%?JQ4G$`so#m>TVG-?Q^G)Ko7!> z>R$g^j_6J~M<6=dItrUD0(5+*J9n6xQ9R_rZv0#?A?9DCwP7NVwCWmM71)gjx(R68 zc69#~3bsrTCJ=fJDbWGzbHH4F+AM%H1MzbqKjFC(%|l56uc*a!je%?xxb!!oj%L0a z$}B+8`>U6aYH;V*r7)cRJM5%(&0Px-gr_^=v+9#rOrm~97vJuYtG<>ev??n%i5^f< zKEi6y@nmtwK%GDTx;kWVf3T#&L!xZp<^noFk5cFEhvx=xIQ^<34-Pya@EjVDO?fu4 z_oD_3Vh4w0bv&^Gav>e^7kL0$U<53kC7b` zmQj7|%$UW6CnKA4S|VW@wXA|fV6Tzl{ckCue_uVzb}Gz zK@so6?hbfYZILipvI+ZP;lHT9MP~XzO~AWFr~%;A<@g*zrlOqNos}N@axO_zrV)|m zv;co@$@{>e>aMe?c_f-1c^oyM*_KKz&TY^Mm5=tlRvWf_pOAbkpR}?>%@Bav0MvZs zR=tVd0h@$h&q9HT9%{M<1bnelL3u;!Yt{*M3F{@T07Pk)RG}>dbJg@kTnx4FnV!U4 zKxe8#%ds(GPz=EPj~vsvh=x0@N}LDbzq&AgAK(|{A3yjq6U+ng->a1_u(70^vqpkG z4<7R#Aly##-|q0v8EAX(el1*8Uh+q`tW4~1*Y`XOrL*AJflGl8G>rbpW!J!V=!U`T zp`i`v%+QZ&@Nh@Zi~(?3>egba>Mqyx;R60mUQ8n+vQVIHrm2db4naE$t6soFgM}%p z_6BFgYk|zBQ8z;#X(@QP-7FVwd58~nV)ie3oz&-UlD;&u{(Ixf*yUSr#yV5@I)6mq zZQGmS3D}BjX}J8!6(*YU`_>du3%o}L$*#TUlkxfHGz`+Uy0z&^u31rl?OqL+zxh6i z6ky?DJ#Q!Sp`W&H`wYaTeaj~KqYs2w9Wuh>_Ce?r+SNRe2!M{F??B?hedzDK}e>{1|4*Bq7TsfUh~`RhjF%mZ!a8w z2Vi{5dhv|%F5jU_y`8RtDHrFspX+QL%dadr3LVz>x9Y$%?)ky$P;ZB{{1GliriDYL zC!u;C6*f^X<^Vn-IW3F&%!3R3^AZQK@oOoHx5uf%_?G0`#^|k zblE@*N?aBV)i9~NJ@T%7~u00aCL&Q_@a#07ud-c#_-kO>3fpG zWwLT%&lY|1kveu>{0M?%vA8X))%MASEOy zucnKWY*pAP(&{qjN-ZY;o}9hiy3V^V^?M_f6B($l0}tx_Hc~&A=E9*z{jdY=OT9e7 z7Ohrtzb~)enT1$ZFbeXvRsgX#sAC(gqSd33q0@WyE1@qqbVK)?m(O833fSL@oU_Hz zERDXi10yPv8iS=^FI1HlxWCLxng(B@$=2HN!a0L#OuOBj^QgQWYh$VcDmPEj>1=RA z$%}_V%Om#PTjJc_+acx(`N2&`q0*GAcAnCSu9ZzHO7dh=E{ zu-57`OeoC+?+G~Py(Uu|US$G~Fv*;En3H*S4SDNtWNkKAw&pn0ffq?Bm{MLUvv>62MG6RUxJhZD;k_X^s9?CP70_O}H11guU zeG_*IJXj(h4K6Fea0i#}++xg6$k3y+Oyy28;$^laPbTVl(vEwJjgLh^(=&`e!#Ofu zTphTV-`I-1N6AAS7s>%JDfw7ueSVqyDwb|?+vA>S?L5>p%AwC=jvCUZD3RE}^(-!c zAdqkK6E(db^cfp{id14>^B2+aR0CjnCQwxqV;aDdd7**u=VaS38B(BrU09p)@JMPhyU=}^ zWW^jz*{^+%j6J7rF07%(qEN$XklkktI1c9ZJu>k`ZZ1rr#vX$E6{iJ7Is?RM6)tu= zJQ%WvkY#I@VfAg89<0y4L-OfIZIaj<;ioc!@5+1R+=3j@q3T#-hE5KKcv}u)+K{Hs7H|2O5r6}T9vhC!iBfc${$5?;yR+hTI&}^Q?mVKGTXJ45nwma2 z9w#z>F;qTt#o3q*20E;mn5JAhO7u`t=k_ft#6Y_PAFz8|zE2B5?Pe|yfgX_y=iFHtrnW9= znIP9r&^VRk-MStHEMMHwEH=)>5l{AWR#z5Yz}S}Z70O&KDRjWFnEa~L!~=T$g8-`W zk^c7d)Z>Xp=@l{jc3HH6evxK@NugUkl>>EQ^&(E((^)cS#C>E9?K%R2@X>ID%n8Hc z_IeEzYfn^=6LZQrZKT+p%USTNK>}P}s?(SmkRwKW85I<~K3hI(K&4YuW^86x$IE&5 ze-YkhWAWeQU41T*Wz$~Zvako`b#vHp!68u&o(IXFE6;Y88V{de)nrGsD+iAsd-o{d zLpm!ld9v*{G|~VG!glRJ!apl-K3$!ddH-oQdAjXF{5D1_rjiqVPa=p54`E?6(h2y` zKgfUo(8S;{1rCeX{)OmNo%D*m9nwjI)|J$B*REmw>71kr&A+k(8UI<`+7Z-SiRXJRm|Y%IjrF3k-V3xpq@21s(Yx` ze?}>_VFPqZ~V8P*Tnue_w0ake`_j_dKO1*7|9KgugZ@={^$PxlAZr^|NpZ8NAdg#d>D`? cPw2-id^O%!wR&k2K(zPVln{z}w80q~RBmjD0& literal 0 HcmV?d00001