From fedd8b35f3608bd75136b12114e0e9ed39126c1e Mon Sep 17 00:00:00 2001 From: Danil Markov Date: Sat, 8 Oct 2022 00:17:13 +0400 Subject: [PATCH] =?UTF-8?q?=D0=9B=D0=B0=D0=B1=D0=BE=D1=80=D0=B0=D1=82?= =?UTF-8?q?=D0=BE=D1=80=D0=BD=D0=B0=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=B0=20=E2=84=961?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ContainerShip/ContainerShip/Direction.cs | 16 ++ ContainerShip/ContainerShip/DrawingShip.cs | 128 +++++++++++++ ContainerShip/ContainerShip/EntityShip.cs | 25 +++ ContainerShip/ContainerShip/Form1.Designer.cs | 39 ---- ContainerShip/ContainerShip/Form1.cs | 10 - ContainerShip/ContainerShip/Form1.resx | 120 ------------ .../ContainerShip/FormShip.Designer.cs | 180 ++++++++++++++++++ ContainerShip/ContainerShip/FormShip.cs | 69 +++++++ ContainerShip/ContainerShip/FormShip.resx | 112 +++++++++++ ContainerShip/ContainerShip/Program.cs | 2 +- ContainerShip/ContainerShip/img/ArrowDown.png | Bin 0 -> 478 bytes ContainerShip/ContainerShip/img/ArrowLeft.png | Bin 0 -> 472 bytes .../ContainerShip/img/ArrowRight.png | Bin 0 -> 473 bytes ContainerShip/ContainerShip/img/ArrowUp.png | Bin 0 -> 448 bytes .../img/Arrows1_right-13-512.webp | Bin 0 -> 2584 bytes 15 files changed, 531 insertions(+), 170 deletions(-) create mode 100644 ContainerShip/ContainerShip/Direction.cs create mode 100644 ContainerShip/ContainerShip/DrawingShip.cs create mode 100644 ContainerShip/ContainerShip/EntityShip.cs delete mode 100644 ContainerShip/ContainerShip/Form1.Designer.cs delete mode 100644 ContainerShip/ContainerShip/Form1.cs delete mode 100644 ContainerShip/ContainerShip/Form1.resx create mode 100644 ContainerShip/ContainerShip/FormShip.Designer.cs create mode 100644 ContainerShip/ContainerShip/FormShip.cs create mode 100644 ContainerShip/ContainerShip/FormShip.resx create mode 100644 ContainerShip/ContainerShip/img/ArrowDown.png create mode 100644 ContainerShip/ContainerShip/img/ArrowLeft.png create mode 100644 ContainerShip/ContainerShip/img/ArrowRight.png create mode 100644 ContainerShip/ContainerShip/img/ArrowUp.png create mode 100644 ContainerShip/ContainerShip/img/Arrows1_right-13-512.webp diff --git a/ContainerShip/ContainerShip/Direction.cs b/ContainerShip/ContainerShip/Direction.cs new file mode 100644 index 0000000..9db3867 --- /dev/null +++ b/ContainerShip/ContainerShip/Direction.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ContainerShip +{ + internal enum Direction + { + Up = 1, + Down = 2, + Left = 3, + Right = 4 + } +} diff --git a/ContainerShip/ContainerShip/DrawingShip.cs b/ContainerShip/ContainerShip/DrawingShip.cs new file mode 100644 index 0000000..e6478e7 --- /dev/null +++ b/ContainerShip/ContainerShip/DrawingShip.cs @@ -0,0 +1,128 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ContainerShip +{ + internal class DrawingShip + { + public EntityShip Ship { get; private set; } + private float _startPosX; + private float _startPosY; + private int? _pictureWidth = null; + private int? _pictureHeight = null; + + protected readonly int _shipWidth = 100; + protected readonly int _shipHeight = 60; + + public void Init(int speed, float weight, Color bodyColor) + { + Ship = new EntityShip(); + Ship.Init(speed, weight, bodyColor); + } + + public void SetPosition(int x, int y, int width, int height) + { + if (x < 0 || y < 0) + { + return; + } + + if (x + _shipWidth > width || y + _shipHeight > height) + { + return; + } + + _startPosX = x; + _startPosY = y; + + _pictureWidth = width; + _pictureHeight = height; + } + + public void MoveShip(Direction direction) + { + if (!_pictureWidth.HasValue || !_pictureHeight.HasValue) + { + return; + } + switch (direction) + { + case Direction.Right: + if (_startPosX + _shipWidth + Ship.Step < _pictureWidth) + { + _startPosX += Ship.Step; + } + break; + case Direction.Left: + if (_startPosX - Ship.Step > 0) + { + _startPosX -= Ship.Step; + } + break; + case Direction.Up: + if (_startPosY - Ship.Step > 0) + { + _startPosY -= Ship.Step; + } + break; + case Direction.Down: + if (_startPosY + _shipHeight + Ship.Step < _pictureHeight) + { + _startPosY += Ship.Step; + } + break; + } + } + + public void DrawTransport(Graphics g) + { + if (_startPosX < 0 || _startPosY < 0 + || !_pictureHeight.HasValue || !_pictureWidth.HasValue) + { + return; + } + + Pen pen = new(Color.Black); + Brush brRed = new SolidBrush(Color.Red); + Brush brMain = new SolidBrush(Ship?.BodyColor ?? Color.Blue); + + //Границы основания корабля + PointF point1 = new PointF(_startPosX, _startPosY+30); + PointF point2 = new PointF(_startPosX+100, _startPosY+30); + PointF point3 = new PointF(_startPosX + 80, _startPosY + 60); + PointF point4 = new PointF(_startPosX + 20, _startPosY + 60); + PointF[] shipBorder = new PointF[4] {point1, point2, point3, point4}; + g.DrawPolygon(pen, shipBorder); + //Границы верхней палубы + g.DrawRectangle(pen, _startPosX + 20, _startPosY, 60, 30); + //Заливка основания корабля + g.FillPolygon(brRed, shipBorder); + //Заливка верхней палубы + g.FillRectangle(brMain, _startPosX + 21, _startPosY + 1, 59, 29); + + + } + public void ChangeBorders(int width, int height) + { + _pictureWidth = width; + _pictureHeight = height; + if (_pictureWidth <= _shipWidth || _pictureHeight <= _shipHeight) + { + _pictureWidth = null; + _pictureHeight = null; + return; + } + if (_startPosX + _shipWidth > _pictureWidth) + { + _startPosX = _pictureWidth.Value - _shipWidth; + } + if (_startPosY + _shipHeight > _pictureHeight) + { + _startPosY = _pictureHeight.Value - _shipHeight; + } + } + } +} diff --git a/ContainerShip/ContainerShip/EntityShip.cs b/ContainerShip/ContainerShip/EntityShip.cs new file mode 100644 index 0000000..9709ab0 --- /dev/null +++ b/ContainerShip/ContainerShip/EntityShip.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ContainerShip +{ + internal class EntityShip + { + public int Speed { get; private set; } + public float Weight { get; private set; } + public Color BodyColor { get; private set; } + public int Step => (int)Speed * 100 / (int)Weight; + + public void Init(int speed, float weight, Color bodyColor) + { + Random random = new Random(); + Speed = speed <= 0 ? random.Next(50, 150) : speed; + Weight = weight <= 0 ? random.Next(50, 150) : weight; + BodyColor = bodyColor; + } + + } +} diff --git a/ContainerShip/ContainerShip/Form1.Designer.cs b/ContainerShip/ContainerShip/Form1.Designer.cs deleted file mode 100644 index 91e25af..0000000 --- a/ContainerShip/ContainerShip/Form1.Designer.cs +++ /dev/null @@ -1,39 +0,0 @@ -namespace ContainerShip -{ - 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/ContainerShip/ContainerShip/Form1.cs b/ContainerShip/ContainerShip/Form1.cs deleted file mode 100644 index 4e3e4f7..0000000 --- a/ContainerShip/ContainerShip/Form1.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace ContainerShip -{ - public partial class Form1 : Form - { - public Form1() - { - InitializeComponent(); - } - } -} \ No newline at end of file diff --git a/ContainerShip/ContainerShip/Form1.resx b/ContainerShip/ContainerShip/Form1.resx deleted file mode 100644 index 1af7de1..0000000 --- a/ContainerShip/ContainerShip/Form1.resx +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - \ No newline at end of file diff --git a/ContainerShip/ContainerShip/FormShip.Designer.cs b/ContainerShip/ContainerShip/FormShip.Designer.cs new file mode 100644 index 0000000..a6db5ae --- /dev/null +++ b/ContainerShip/ContainerShip/FormShip.Designer.cs @@ -0,0 +1,180 @@ +namespace ContainerShip +{ + partial class FormShip + { + /// + /// 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(FormShip)); + this.pictureBoxShip = new System.Windows.Forms.PictureBox(); + this.buttonCreate = new System.Windows.Forms.Button(); + this.buttonUp = new System.Windows.Forms.Button(); + this.buttonRight = new System.Windows.Forms.Button(); + this.buttonLeft = new System.Windows.Forms.Button(); + this.buttonDown = new System.Windows.Forms.Button(); + this.statusStrip = new System.Windows.Forms.StatusStrip(); + this.toolStripStatusSpeed = new System.Windows.Forms.ToolStripStatusLabel(); + this.toolStripStatusWeight = new System.Windows.Forms.ToolStripStatusLabel(); + this.toolStripStatusBodyColor = new System.Windows.Forms.ToolStripStatusLabel(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxShip)).BeginInit(); + this.statusStrip.SuspendLayout(); + this.SuspendLayout(); + // + // pictureBoxShip + // + this.pictureBoxShip.Dock = System.Windows.Forms.DockStyle.Fill; + this.pictureBoxShip.Location = new System.Drawing.Point(0, 0); + this.pictureBoxShip.Name = "pictureBoxShip"; + this.pictureBoxShip.Size = new System.Drawing.Size(800, 428); + this.pictureBoxShip.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; + this.pictureBoxShip.TabIndex = 3; + this.pictureBoxShip.TabStop = false; + // + // 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(12, 402); + this.buttonCreate.Name = "buttonCreate"; + this.buttonCreate.Size = new System.Drawing.Size(75, 23); + this.buttonCreate.TabIndex = 4; + 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 = ((System.Drawing.Image)(resources.GetObject("buttonUp.BackgroundImage"))); + this.buttonUp.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.buttonUp.Location = new System.Drawing.Point(722, 359); + this.buttonUp.Name = "buttonUp"; + this.buttonUp.Size = new System.Drawing.Size(30, 30); + this.buttonUp.TabIndex = 5; + this.buttonUp.UseVisualStyleBackColor = true; + this.buttonUp.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 = ((System.Drawing.Image)(resources.GetObject("buttonRight.BackgroundImage"))); + this.buttonRight.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.buttonRight.Location = new System.Drawing.Point(758, 395); + 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); + // + // buttonLeft + // + this.buttonLeft.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.buttonLeft.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("buttonLeft.BackgroundImage"))); + this.buttonLeft.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.buttonLeft.Location = new System.Drawing.Point(686, 395); + this.buttonLeft.Name = "buttonLeft"; + this.buttonLeft.Size = new System.Drawing.Size(30, 30); + this.buttonLeft.TabIndex = 7; + this.buttonLeft.UseVisualStyleBackColor = true; + this.buttonLeft.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 = ((System.Drawing.Image)(resources.GetObject("buttonDown.BackgroundImage"))); + this.buttonDown.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.buttonDown.Location = new System.Drawing.Point(722, 395); + this.buttonDown.Name = "buttonDown"; + this.buttonDown.Size = new System.Drawing.Size(30, 30); + this.buttonDown.TabIndex = 8; + this.buttonDown.UseVisualStyleBackColor = true; + this.buttonDown.Click += new System.EventHandler(this.ButtonMove_Click); + // + // statusStrip + // + this.statusStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripStatusSpeed, + this.toolStripStatusWeight, + this.toolStripStatusBodyColor}); + this.statusStrip.Location = new System.Drawing.Point(0, 428); + this.statusStrip.Name = "statusStrip"; + this.statusStrip.Size = new System.Drawing.Size(800, 22); + this.statusStrip.TabIndex = 9; + // + // toolStripStatusSpeed + // + this.toolStripStatusSpeed.Name = "toolStripStatusSpeed"; + this.toolStripStatusSpeed.Size = new System.Drawing.Size(65, 17); + this.toolStripStatusSpeed.Text = "Скорость: "; + // + // toolStripStatusWeight + // + this.toolStripStatusWeight.Name = "toolStripStatusWeight"; + this.toolStripStatusWeight.Size = new System.Drawing.Size(32, 17); + this.toolStripStatusWeight.Text = "Вес: "; + // + // toolStripStatusBodyColor + // + this.toolStripStatusBodyColor.Name = "toolStripStatusBodyColor"; + this.toolStripStatusBodyColor.Size = new System.Drawing.Size(39, 17); + this.toolStripStatusBodyColor.Text = "Цвет: "; + // + // FormShip + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(800, 450); + this.Controls.Add(this.buttonDown); + this.Controls.Add(this.buttonLeft); + this.Controls.Add(this.buttonRight); + this.Controls.Add(this.buttonUp); + this.Controls.Add(this.buttonCreate); + this.Controls.Add(this.pictureBoxShip); + this.Controls.Add(this.statusStrip); + this.Name = "FormShip"; + this.Text = "FormShip"; + this.Resize += new System.EventHandler(this.PictureBoxShip_Resize); + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxShip)).EndInit(); + this.statusStrip.ResumeLayout(false); + this.statusStrip.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private PictureBox pictureBoxShip; + private Button buttonCreate; + private Button buttonUp; + private Button buttonRight; + private Button buttonLeft; + private Button buttonDown; + private StatusStrip statusStrip; + private ToolStripStatusLabel toolStripStatusSpeed; + private ToolStripStatusLabel toolStripStatusWeight; + private ToolStripStatusLabel toolStripStatusBodyColor; + } +} \ No newline at end of file diff --git a/ContainerShip/ContainerShip/FormShip.cs b/ContainerShip/ContainerShip/FormShip.cs new file mode 100644 index 0000000..569ae8d --- /dev/null +++ b/ContainerShip/ContainerShip/FormShip.cs @@ -0,0 +1,69 @@ +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 ContainerShip +{ + public partial class FormShip : Form + { + private DrawingShip _ship; + + public FormShip() + { + InitializeComponent(); + } + + private void Draw() + { + Bitmap bmp = new(pictureBoxShip.Width, pictureBoxShip.Height); + Graphics gr = Graphics.FromImage(bmp); + _ship?.DrawTransport(gr); + pictureBoxShip.Image = bmp; + } + + private void ButtonMove_Click(object sender, EventArgs e) + { + string name = ((Button)sender)?.Name ?? string.Empty; + switch (name) + { + case "buttonUp": + _ship?.MoveShip(Direction.Up); + break; + case "buttonDown": + _ship?.MoveShip(Direction.Down); + break; + case "buttonLeft": + _ship?.MoveShip(Direction.Left); + break; + case "buttonRight": + _ship?.MoveShip(Direction.Right); + break; + } + Draw(); + } + + private void ButtonCreate_Click(object sender, EventArgs e) + { + Random rnd = new(); + _ship = new DrawingShip(); + _ship.Init(rnd.Next(100, 300), rnd.Next(1000, 2000), Color.FromArgb(rnd.Next(0, 256), + rnd.Next(0, 256), rnd.Next(0, 256), rnd.Next(0, 256))); + _ship.SetPosition(rnd.Next(10, 100), rnd.Next(60, 100), pictureBoxShip.Width, pictureBoxShip.Height); + toolStripStatusSpeed.Text = $"Скорость: {_ship.Ship.Speed}"; + toolStripStatusWeight.Text = $"Вес: {_ship.Ship.Weight}"; + toolStripStatusBodyColor.Text = $"Цвет: {_ship.Ship.BodyColor.Name}"; + Draw(); + } + private void PictureBoxShip_Resize(object sender, EventArgs e) + { + _ship?.ChangeBorders(pictureBoxShip.Width, pictureBoxShip.Height); + Draw(); + } + } +} diff --git a/ContainerShip/ContainerShip/FormShip.resx b/ContainerShip/ContainerShip/FormShip.resx new file mode 100644 index 0000000..b324199 --- /dev/null +++ b/ContainerShip/ContainerShip/FormShip.resx @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + + iVBORw0KGgoAAAANSUhEUgAAAEMAAABHCAIAAADTOW0yAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + vgAADr4B6kKxwAAAAVVJREFUaEPtz0ESgzAMQ9He/9J08zsDNECUWMVl/HYtsWS/lqeoS/KpS/q8Pvjt + ZOzgiA/+tXEVsP4W3zws6SzewguD+GhWPsa7aMG5LHuF16EiQ1mzDzNxwhJZUMFkkJg4VtMxHyEgi6VG + kTJtNoh15pA1ZyqFRSKQOGE8ghXikDtqcJ7yaKQPGRmm1oMOnTxJoRNNIm2MKj/6FMIMJb9Ca7feAeJ/ + i+4+Xa8JvgMbdLh+SuR92OPKxTvC7sY2p84eEZMDOx07fEFAJmx2oP2Z0XzYr6XxjaGs2PLL/gPPc2PX + rc2/PPwHbLxSl9yNjVf2f/EwN3bdav97jjwPOnR1iQ0durrEhg5dXWJDh64usaFDV5fY0KGrS2zo0NUl + NnTo6hIbOnR1iQ0durrEhg5dXWJDh64usaFDNzhJbTTSh0wNp1KX5FOX5FOX5FOX5POUS5blDVXxX38K + WOldAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAAEcAAABDCAYAAADOIRgJAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + vQAADr0BR/uQrQAAAStJREFUeF7t0NkKwzAMRNH8/0+nHSjFBFvxIsvaDsyrsO91p6aMQ8g4hIxDUBnn + uq7/TlIXpwxzOpCJONgJZuJg0kzFwSSZi4NJMRkHk2A2Drab6TjYTubjYLu4iIPt4CYOxs1VHIzT0LXa + YzSOS/el2iM0j4PbONgq13GwFe7jYLNCxMFmhImDjQoVBxsRLg7WK2QcrEfYONib0HEwSvg4WEvG+a0m + 4xR7yjjFnjJOsaeM81tNxvmuJXwcSug4b8LG6REyTq9wcUaEijMqTJwZIeLMch9nhes4q9zG4TB0pfYI + jePCd4lJ7bMj4+QqDjc3cXZwEWcX83F2Mh1nN7NxJJiMI8VcHEmm4kgzE+cEE3FOURcHNIQBlXG0yDiE + jEPIOISMQ8g4Tff9AfqQ4vhbQUgmAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAAEcAAABDCAYAAADOIRgJAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + vQAADr0BR/uQrQAAAaVJREFUeF7tkEFuxDAMA/P/T6f1YYtgO1HoxHYowwPMTZAobvvilFVOwConYJUT + sMoJWOUEvFrOtm1/OvJaqmMxrgW9koiKKboxPBGV8tGNoYmokKNuDEtEZXzrxpBEVATpRvdEVMKZbnRN + RAVEutEtET1/pRtdEtHjim40T0RPq7rRNBE9XKMbzRLRs47W0KQcCuGsyuNy6Li7Ko/KocMZVLldDh3N + osqtcuhgJlWqy6Fj2VSpKocOZVRFnqQjWVWRJulAZlUuJ2l5dlXCSVo8gyqnk7R0FlVwkhbOpMq/SVo2 + myqrnIBVTgBO0sKZVDmdpKWzqBJO0uIZVLmcpOXZVZEm6UBmVeRJOpJVFX3yFzqUUZWqcgp0LJsq1eUU + 6GAmVW6VU6CjWVS5XU6BDmdQ5VE5BTrursrjcgoUwFmVJuUUKISjNTQrp0BhanSjeSJ6WtWNLonocUU3 + uiWi5690o2siKiDSje6JqIQz3RiSiIog3RiWiMr41o2hiaiQo24MT0SlfHTjlURUTNGN1xKtci5wLqbg + mcqEVU7AKidglXPKvv8AlW/i+GiZZt4AAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAAEMAAABHCAYAAABcW/plAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + vQAADr0BR/uQrQAAAVdJREFUeF7t0MsOgzAQQ1H+/6epvGhlVQYSMjMJyEfyNo+77fbjGMQxiGMQxyCO + QRyDOAZxDOIYJDzGtm3lixIaQz20ahEcgzgGcQziGMQxiGMQxyCOQRyDOAZxDOIYxDGIYxDHII5BHIM4 + BnEM4hjEMYhjEMcgjkFOT1GXvmXKYQx1wNv2zzGIY5DDGKAOeMuU0xigDnr6jlzGAHXgU3emKQaog5+2 + K80xQF3wlLXoigHqotXXqjsGqAtXXY9bMUBdvNp63Y4B6gGr7I6hGKAeMnt3DccA9aBZGxESA9TDqjcq + LAaoB1YtQmgMUA/NXpTwGKAenLVIKTFAPTx60dJigPpA1DKkxgD1kdFlSY8B6kN3l6kkBqiP9S5bWQxQ + H2xdhdIYoD56tSrlMUB9+GiVpsQA9fH/VZsWA1SA72aYGgNWCQHTY8AKIWCJGKtwDOIYxDF+9v0DSS3i + +O80JVAAAAAASUVORK5CYII= + + + + 17, 17 + + \ No newline at end of file diff --git a/ContainerShip/ContainerShip/Program.cs b/ContainerShip/ContainerShip/Program.cs index 6a9b875..3274551 100644 --- a/ContainerShip/ContainerShip/Program.cs +++ b/ContainerShip/ContainerShip/Program.cs @@ -11,7 +11,7 @@ namespace ContainerShip // 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 FormShip()); } } } \ No newline at end of file diff --git a/ContainerShip/ContainerShip/img/ArrowDown.png b/ContainerShip/ContainerShip/img/ArrowDown.png new file mode 100644 index 0000000000000000000000000000000000000000..9fdc9860045d19213df3e94e9774759accc17774 GIT binary patch literal 478 zcmeAS@N?(olHy`uVBq!ia0vp^&Oq$W!3HE_qJO0VDaPU;cPEB*=VV?2IV|apzK#qG z8~eHcB(eheoCO|{#S9F5hd`K7RKu$Qq`}k0F{C2y?VXER%?<*siEn@JFPi_+o>o*z8YcVc-{eE-nzh9NLmy8W`P~e&m@e5w>+V^jjc2?^J?PQjgF01Lc zk1!o31^)WwmV3o}VVB+7y_KnVB%Nw+^@EJKb%dkN(mpo!JWpx(gtdFi@+a?Zthv4X z<;+6y343j4$u9_J&z!km(m7UiN$ER1o>J2Z^D1{6UI}%mdT!IQFpb^P=zb!PsrHGB zJN*(@+;lj1rdZ1PEK^Zgp8$`kl**$&20W%*DzEMY@PzUTRmNGgtzzo5Q)hKfZBD7F zmufr3bn@4|5FSz6if5wJ`xY(|JJAxLD)H)#(oKO?JkGMQE0~<7Cat)4bd^GgWm{J4 z1|cWjg8|juVa_WOC9<*~3JPRtwEf!uLxbb!{+S!w;w6n)+gOk7POW6%Kehd7`GX%@ QfN{d$>FVdQ&MBb@06pZr=l}o! literal 0 HcmV?d00001 diff --git a/ContainerShip/ContainerShip/img/ArrowLeft.png b/ContainerShip/ContainerShip/img/ArrowLeft.png new file mode 100644 index 0000000000000000000000000000000000000000..ec7ccfea91de646d7e6ff303e4e994a5f1a960af GIT binary patch literal 472 zcmV;}0Vn>6P)1^@s6&LJ2H00001b5ch_0Itp) z=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!T#vIgTm}HN{bep=LPhFw_Lc z0t{8hu>wO?aV)`5wa26?FeSHJWpb1zrsP_0<5*it|GR}_8HO(7ScjoYI38fA7{?0? z72$Y-q0>0tVCWQ%M;OZDc!i-Pj%OG;#PJS8yEp;!=mRHU-eosr&jn7R51e>K@ZIj@ z1kj_yWfee~J;ysxc0=|Il*J*hK&NoXBhYCa@&;6dL!N+&amWkMB^>eqbQy=N1Kq+Q z%RskrNC~LqTC0AkclSZrY{*q6=b6$3ovA7gSpuq#Lso#A;E)BNW;mn{)D(x5fturx zDo__3QUvOTLux=>aYzZMI}WJ;4Z)!;(2QX5icuJNVcu83P|F@GC^gr0}}*HtRILD4ZY~z#)^uD8j~`$y}E#UYobKV6TEMDjZWXP1TYuNBfv3fN&yER;Tupn+hh{Xza4OzY{ zR^4{->HhfW9-v!} z|Gl>=^`q|6pJh(6+HZf$upNKI&~jkoES@hG)08Jm9T#G|_$cDAf|m@xgiHHl*5(xj zHi-hfedaui4$Ne1mTNC=nZerps^6~V#lE#R+A<3d32Fg}ojH+q`RQ3TJuDM;0HcG! M)78&qol`;+07uolOaK4? literal 0 HcmV?d00001 diff --git a/ContainerShip/ContainerShip/img/ArrowUp.png b/ContainerShip/ContainerShip/img/ArrowUp.png new file mode 100644 index 0000000000000000000000000000000000000000..91d0ca398a0c789dcdfc0fd770ad8c76e6da9d46 GIT binary patch literal 448 zcmeAS@N?(olHy`uVBq!ia0vp^&Oq$W!2~2PTjm-8DaPU;cPEB*=VV?2IV|apzK#qG z8~eHcB(eheoCO|{#S9F5he4R}c>anMpoUOS7srqc=eOq_g_;d`oG;${f2riNHM5Ds zl!&9Lf68<>rtF`#e1-R?mEOPh*!_5$^5#JY|G%w;q8t8+-M7(ssdMiTck_>oFuP;B zGY;<5scyZ#P{}!RGrw`+A)&~CgDDecScF|Rlvh;fUg|c{DA%l`^w|W{bgfobr3n^^ zHcg_BCRk?`%=?tFgkMr}*|lcAxi+2)g?*KBd$jC-i5%il-S3pW{T}0^`tEmjvFkba zF-w>1sPlSKd*kt`qt=Js9Wz^gPEK$#v$d>sjiZBFPT7LLGcVTMSikgR@4_`VKArx@ ze7-pO`r5PmZT_(5>=}HM!L8!@E3a`jcQ7`aH#Z+Ed=pkMZ?f T5ietbq0Zpx>gTe~DWM4fLZQG@ literal 0 HcmV?d00001 diff --git a/ContainerShip/ContainerShip/img/Arrows1_right-13-512.webp b/ContainerShip/ContainerShip/img/Arrows1_right-13-512.webp new file mode 100644 index 0000000000000000000000000000000000000000..9bdff7342053105639bbef170b1348d25fd0070c GIT binary patch literal 2584 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