From 8188c6e0cb1abf3a83d1e983b72dda77da2b0f00 Mon Sep 17 00:00:00 2001 From: malimova Date: Sun, 10 Dec 2023 14:35:13 +0400 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=D0=B0=20?= =?UTF-8?q?=D1=84=D0=BE=D1=80=D0=BC=D0=B0=20FormPlaneCollection,=20=D0=B4?= =?UTF-8?q?=D0=BE=D0=BF=D0=BE=D0=BB=D0=BD=D0=B5=D0=BD=D0=B0=20FormAirBombe?= =?UTF-8?q?r=20(=D0=BF=D0=BE=D0=BA=D0=B0=20=D0=B1=D0=B5=D0=B7=20=D0=B4?= =?UTF-8?q?=D0=B2=D0=B8=D0=B3=D0=B0=D1=82=D0=B5=D0=BB=D0=B5=D0=B9)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AirBomber/AirBomber/FormAirBomber.Designer.cs | 37 ++++-- AirBomber/AirBomber/FormAirBomber.cs | 62 ++++++--- .../AirBomber/FormPlaneCollection.Designer.cs | 123 ++++++++++++++++++ AirBomber/AirBomber/FormPlaneCollection.cs | 20 +++ AirBomber/AirBomber/FormPlaneCollection.resx | 60 +++++++++ 5 files changed, 271 insertions(+), 31 deletions(-) create mode 100644 AirBomber/AirBomber/FormPlaneCollection.Designer.cs create mode 100644 AirBomber/AirBomber/FormPlaneCollection.cs create mode 100644 AirBomber/AirBomber/FormPlaneCollection.resx diff --git a/AirBomber/AirBomber/FormAirBomber.Designer.cs b/AirBomber/AirBomber/FormAirBomber.Designer.cs index a8ba700..fa78fa9 100644 --- a/AirBomber/AirBomber/FormAirBomber.Designer.cs +++ b/AirBomber/AirBomber/FormAirBomber.Designer.cs @@ -36,7 +36,8 @@ pictureBoxAirBomber = new PictureBox(); buttonCreateAirPlane = new Button(); comboBoxStrategy = new ComboBox(); - buttonStep = new Button(); + buttonStrategyStep = new Button(); + buttonSelectPlane = new Button(); ((System.ComponentModel.ISupportInitialize)pictureBoxAirBomber).BeginInit(); SuspendLayout(); // @@ -129,23 +130,34 @@ comboBoxStrategy.Size = new Size(182, 33); comboBoxStrategy.TabIndex = 7; // - // buttonStep + // buttonStrategyStep // - buttonStep.Anchor = AnchorStyles.Top | AnchorStyles.Right; - buttonStep.Location = new Point(660, 70); - buttonStep.Name = "buttonStep"; - buttonStep.Size = new Size(112, 34); - buttonStep.TabIndex = 8; - buttonStep.Text = "Шаг"; - buttonStep.UseVisualStyleBackColor = true; - buttonStep.Click += buttonStep_Click; + buttonStrategyStep.Anchor = AnchorStyles.Top | AnchorStyles.Right; + buttonStrategyStep.Location = new Point(660, 70); + buttonStrategyStep.Name = "buttonStrategyStep"; + buttonStrategyStep.Size = new Size(112, 34); + buttonStrategyStep.TabIndex = 8; + buttonStrategyStep.Text = "Шаг"; + buttonStrategyStep.UseVisualStyleBackColor = true; + buttonStrategyStep.Click += buttonStrategyStep_Click; + // + // buttonSelectPlane + // + buttonSelectPlane.Location = new Point(660, 161); + buttonSelectPlane.Name = "buttonSelectPlane"; + buttonSelectPlane.Size = new Size(112, 63); + buttonSelectPlane.TabIndex = 9; + buttonSelectPlane.Text = "Выбрать самолет"; + buttonSelectPlane.UseVisualStyleBackColor = true; + buttonSelectPlane.Click += buttonSelectPlane_Click; // // FormAirBomber // AutoScaleDimensions = new SizeF(10F, 25F); AutoScaleMode = AutoScaleMode.Font; ClientSize = new Size(800, 450); - Controls.Add(buttonStep); + Controls.Add(buttonSelectPlane); + Controls.Add(buttonStrategyStep); Controls.Add(comboBoxStrategy); Controls.Add(buttonCreateAirPlane); Controls.Add(buttonDown); @@ -170,6 +182,7 @@ private PictureBox pictureBoxAirBomber; private Button buttonCreateAirPlane; private ComboBox comboBoxStrategy; - private Button buttonStep; + private Button buttonStrategyStep; + private Button buttonSelectPlane; } } \ No newline at end of file diff --git a/AirBomber/AirBomber/FormAirBomber.cs b/AirBomber/AirBomber/FormAirBomber.cs index 6922714..abf877f 100644 --- a/AirBomber/AirBomber/FormAirBomber.cs +++ b/AirBomber/AirBomber/FormAirBomber.cs @@ -1,12 +1,15 @@ -namespace AirBomber +namespace AirBomber { public partial class FormAirBomber : Form { private DrawningAirPlane? _drawningAirPlane; - private AbstractStrategy? _abstractStrategy; + private AbstractStrategy? _strategy; + public DrawningAirPlane? SelectedPlane { get; private set; } public FormAirBomber() { InitializeComponent(); + _strategy = null; + SelectedPlane = null; } private void Draw() { @@ -22,21 +25,37 @@ namespace AirBomber private void buttonCreateAirBomber_Click(object sender, EventArgs e) { Random random = new(); - _drawningAirPlane = new DrawningAirBomber(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)), - pictureBoxAirBomber.Width, pictureBoxAirBomber.Height, random.Next(1, 4) * 2, random.Next(0, 4)); + Color color = Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256)); + ColorDialog colorDialog = new ColorDialog(); + //TODO выбор основного цвета DONE + if (colorDialog.ShowDialog() == DialogResult.OK) + { + color = colorDialog.Color; + } + + Color dopColor = Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256)); + //TODO выбор дополнительного цвета DONE + if (colorDialog.ShowDialog() == DialogResult.OK) + { + dopColor = colorDialog.Color; + } + + _drawningAirPlane = new DrawningAirBomber(random.Next(100, 300), random.Next(1000, 3000), color, dopColor, + Convert.ToBoolean(random.Next(0, 2)), Convert.ToBoolean(random.Next(0, 2)), pictureBoxAirBomber.Width, pictureBoxAirBomber.Height); _drawningAirPlane.SetPosition(random.Next(10, 100), random.Next(10, 100)); Draw(); - } private void buttonCreateAirPlane_Click(object sender, EventArgs e) { Random random = new(); - _drawningAirPlane = new DrawningAirPlane(random.Next(100, 300), random.Next(1000, 3000), - Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256)), - pictureBoxAirBomber.Width, pictureBoxAirBomber.Height, random.Next(1, 4) * 2, random.Next(0, 4)); + Color color = Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256)); + ColorDialog dialog = new(); + if (dialog.ShowDialog() == DialogResult.OK) + { + color = dialog.Color; + } + _drawningAirPlane = new DrawningAirPlane(random.Next(100, 300), random.Next(1000, 3000), color, pictureBoxAirBomber.Width, pictureBoxAirBomber.Height); _drawningAirPlane.SetPosition(random.Next(10, 100), random.Next(10, 100)); Draw(); @@ -65,7 +84,7 @@ namespace AirBomber } Draw(); } - private void buttonStep_Click(object sender, EventArgs e) + private void buttonStrategyStep_Click(object sender, EventArgs e) { if (_drawningAirPlane == null) { @@ -73,32 +92,37 @@ namespace AirBomber } if (comboBoxStrategy.Enabled) { - _abstractStrategy = comboBoxStrategy.SelectedIndex + _strategy = comboBoxStrategy.SelectedIndex switch { 0 => new MoveToCenter(), 1 => new MoveToBorder(), _ => null, }; - if (_abstractStrategy == null) + if (_strategy == null) { return; } - _abstractStrategy.SetData(new DrawningObjectAirPlane(_drawningAirPlane), pictureBoxAirBomber.Width, - pictureBoxAirBomber.Height); + _strategy.SetData(new DrawningObjectAirPlane(_drawningAirPlane), pictureBoxAirBomber.Width, pictureBoxAirBomber.Height); comboBoxStrategy.Enabled = false; } - if (_abstractStrategy == null) + if (_strategy == null) { return; } - _abstractStrategy.MakeStep(); + comboBoxStrategy.Enabled = false; + _strategy.MakeStep(); Draw(); - if (_abstractStrategy.GetStatus() == Status.Finish) + if (_strategy.GetStatus() == Status.Finish) { comboBoxStrategy.Enabled = true; - _abstractStrategy = null; + _strategy = null; } } + private void buttonSelectPlane_Click(object sender, EventArgs e) + { + SelectedPlane = _drawningAirPlane; + DialogResult = DialogResult.OK; + } } } \ No newline at end of file diff --git a/AirBomber/AirBomber/FormPlaneCollection.Designer.cs b/AirBomber/AirBomber/FormPlaneCollection.Designer.cs new file mode 100644 index 0000000..7f7ef81 --- /dev/null +++ b/AirBomber/AirBomber/FormPlaneCollection.Designer.cs @@ -0,0 +1,123 @@ +namespace AirBomber +{ + partial class FormPlaneCollection + { + /// + /// 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() + { + groupBoxTools = new GroupBox(); + pictureBoxCollection = new PictureBox(); + buttonAddPlane = new Button(); + maskedTextBoxNumber = new MaskedTextBox(); + buttonRemovePlane = new Button(); + buttonRefreshCollection = new Button(); + groupBoxTools.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)pictureBoxCollection).BeginInit(); + SuspendLayout(); + // + // groupBoxTools + // + groupBoxTools.Controls.Add(buttonRefreshCollection); + groupBoxTools.Controls.Add(buttonRemovePlane); + groupBoxTools.Controls.Add(maskedTextBoxNumber); + groupBoxTools.Controls.Add(buttonAddPlane); + groupBoxTools.Location = new Point(758, 1); + groupBoxTools.Name = "groupBoxTools"; + groupBoxTools.Size = new Size(325, 655); + groupBoxTools.TabIndex = 0; + groupBoxTools.TabStop = false; + groupBoxTools.Text = "Инструменты"; + // + // pictureBoxCollection + // + pictureBoxCollection.Dock = DockStyle.Left; + pictureBoxCollection.Location = new Point(0, 0); + pictureBoxCollection.Name = "pictureBoxCollection"; + pictureBoxCollection.Size = new Size(752, 668); + pictureBoxCollection.TabIndex = 1; + pictureBoxCollection.TabStop = false; + // + // buttonAddPlane + // + buttonAddPlane.Location = new Point(17, 53); + buttonAddPlane.Name = "buttonAddPlane"; + buttonAddPlane.Size = new Size(290, 59); + buttonAddPlane.TabIndex = 0; + buttonAddPlane.Text = "Добавить самолет"; + buttonAddPlane.UseVisualStyleBackColor = true; + // + // maskedTextBoxNumber + // + maskedTextBoxNumber.Location = new Point(79, 166); + maskedTextBoxNumber.Mask = "00"; + maskedTextBoxNumber.Name = "maskedTextBoxNumber"; + maskedTextBoxNumber.Size = new Size(171, 31); + maskedTextBoxNumber.TabIndex = 1; + maskedTextBoxNumber.ValidatingType = typeof(int); + // + // buttonRemovePlane + // + buttonRemovePlane.Location = new Point(17, 213); + buttonRemovePlane.Name = "buttonRemovePlane"; + buttonRemovePlane.Size = new Size(290, 59); + buttonRemovePlane.TabIndex = 2; + buttonRemovePlane.Text = "Удалить самолет"; + buttonRemovePlane.UseVisualStyleBackColor = true; + // + // buttonRefreshCollection + // + buttonRefreshCollection.Location = new Point(17, 357); + buttonRefreshCollection.Name = "buttonRefreshCollection"; + buttonRefreshCollection.Size = new Size(290, 59); + buttonRefreshCollection.TabIndex = 3; + buttonRefreshCollection.Text = "Обновить коллекцию"; + buttonRefreshCollection.UseVisualStyleBackColor = true; + // + // FormPlaneCollection + // + AutoScaleDimensions = new SizeF(10F, 25F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(1095, 668); + Controls.Add(pictureBoxCollection); + Controls.Add(groupBoxTools); + Name = "FormPlaneCollection"; + Text = "Набор самолетов"; + groupBoxTools.ResumeLayout(false); + groupBoxTools.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)pictureBoxCollection).EndInit(); + ResumeLayout(false); + } + + #endregion + + private GroupBox groupBoxTools; + private Button buttonRefreshCollection; + private Button buttonRemovePlane; + private MaskedTextBox maskedTextBoxNumber; + private Button buttonAddPlane; + private PictureBox pictureBoxCollection; + } +} \ No newline at end of file diff --git a/AirBomber/AirBomber/FormPlaneCollection.cs b/AirBomber/AirBomber/FormPlaneCollection.cs new file mode 100644 index 0000000..28a9d7e --- /dev/null +++ b/AirBomber/AirBomber/FormPlaneCollection.cs @@ -0,0 +1,20 @@ +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 AirBomber +{ + public partial class FormPlaneCollection : Form + { + public FormPlaneCollection() + { + InitializeComponent(); + } + } +} diff --git a/AirBomber/AirBomber/FormPlaneCollection.resx b/AirBomber/AirBomber/FormPlaneCollection.resx new file mode 100644 index 0000000..f298a7b --- /dev/null +++ b/AirBomber/AirBomber/FormPlaneCollection.resx @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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