diff --git a/AntiAircraftGun/FormAntiAircraftGun.Designer.cs b/AntiAircraftGun/FormAntiAircraftGun.Designer.cs
index 362de52..3fcd3a8 100644
--- a/AntiAircraftGun/FormAntiAircraftGun.Designer.cs
+++ b/AntiAircraftGun/FormAntiAircraftGun.Designer.cs
@@ -35,6 +35,8 @@
buttonUp = new Button();
buttonCreate = new Button();
buttonCreatAircraftGun = new Button();
+ comboBoxStrategy = new ComboBox();
+ buttonStrategyStep = new Button();
((System.ComponentModel.ISupportInitialize)pictureBoxAntiAircraftGun).BeginInit();
SuspendLayout();
//
@@ -117,11 +119,33 @@
buttonCreatAircraftGun.UseVisualStyleBackColor = true;
buttonCreatAircraftGun.Click += buttonCreatAircraftGun_Click;
//
+ // comboBoxStrategy
+ //
+ comboBoxStrategy.DropDownStyle = ComboBoxStyle.DropDownList;
+ comboBoxStrategy.FormattingEnabled = true;
+ comboBoxStrategy.Items.AddRange(new object[] { "К центру", "К краю" });
+ comboBoxStrategy.Location = new Point(667, 12);
+ comboBoxStrategy.Name = "comboBoxStrategy";
+ comboBoxStrategy.Size = new Size(121, 23);
+ comboBoxStrategy.TabIndex = 7;
+ //
+ // buttonStrategyStep
+ //
+ buttonStrategyStep.Location = new Point(713, 41);
+ buttonStrategyStep.Name = "buttonStrategyStep";
+ buttonStrategyStep.Size = new Size(75, 23);
+ buttonStrategyStep.TabIndex = 8;
+ buttonStrategyStep.Text = "Шаг";
+ buttonStrategyStep.UseVisualStyleBackColor = true;
+ buttonStrategyStep.Click += buttonStrategyStep_Click;
+ //
// FormAntiAircraftGun
//
AutoScaleDimensions = new SizeF(7F, 15F);
AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(800, 450);
+ Controls.Add(buttonStrategyStep);
+ Controls.Add(comboBoxStrategy);
Controls.Add(buttonCreatAircraftGun);
Controls.Add(buttonUp);
Controls.Add(buttonRight);
@@ -144,5 +168,7 @@
private Button buttonUp;
private Button buttonCreate;
private Button buttonCreatAircraftGun;
+ private ComboBox comboBoxStrategy;
+ private Button buttonStrategyStep;
}
}
\ No newline at end of file
diff --git a/AntiAircraftGun/FormAntiAircraftGun.cs b/AntiAircraftGun/FormAntiAircraftGun.cs
index 098651d..a7814e0 100644
--- a/AntiAircraftGun/FormAntiAircraftGun.cs
+++ b/AntiAircraftGun/FormAntiAircraftGun.cs
@@ -1,4 +1,5 @@
using AntiAircraftGun.Drawnings;
+using AntiAircraftGun.MovementStrategy;
namespace AntiAircraftGun
{
@@ -9,11 +10,16 @@ namespace AntiAircraftGun
///
private DrawningAircraftGun? _drawningAircraftGun;
///
+ /// Стратегия перемещения
+ ///
+ private AbstractStrategy? _strategy;
+ ///
/// конструктор формы
///
public FormAntiAircraftGun()
{
InitializeComponent();
+ _strategy = null;
}
///
/// Метод прорисовки транспорта
@@ -50,6 +56,8 @@ namespace AntiAircraftGun
_drawningAircraftGun.SetPictureSize(pictureBoxAntiAircraftGun.Width, pictureBoxAntiAircraftGun.Height);
_drawningAircraftGun.SetPosition(random.Next(10, 100), random.Next(10, 100));
+ _strategy = null;
+ comboBoxStrategy.Enabled = true;
Draw();
}
///
@@ -64,7 +72,7 @@ namespace AntiAircraftGun
///
///
private void buttonCreatAircraftGun_Click(object sender, EventArgs e) => CreateObject(nameof(DrawningAircraftGun));
-
+
///
/// Перемещение объекта по форме
///
@@ -99,6 +107,42 @@ namespace AntiAircraftGun
}
}
-
+ private void buttonStrategyStep_Click(object sender, EventArgs e)
+ {
+ if (_drawningAircraftGun == null)
+ {
+ return;
+ }
+
+ if (comboBoxStrategy.Enabled)
+ {
+ _strategy = comboBoxStrategy.SelectedIndex switch
+ {
+ 0 => new MoveToCenter(),
+ 1 => new MoveToBorder(),
+ _ => null,
+ };
+ if (_strategy == null)
+ {
+ return;
+ }
+ _strategy.SetData(new MoveableAircraftGun(_drawningAircraftGun), pictureBoxAntiAircraftGun.Width, pictureBoxAntiAircraftGun.Height);
+ }
+
+ if (_strategy == null)
+ {
+ return;
+ }
+
+ comboBoxStrategy.Enabled = false;
+ _strategy.MakeStep();
+ Draw();
+
+ if (_strategy.GetStatus() == StrategyStatus.Finish)
+ {
+ comboBoxStrategy.Enabled = true;
+ _strategy = null;
+ }
+ }
}
}
\ No newline at end of file