diff --git a/AirFighter/AbstractMap.cs b/AirFighter/AbstractMap.cs
index 73fab23..ba4508c 100644
--- a/AirFighter/AbstractMap.cs
+++ b/AirFighter/AbstractMap.cs
@@ -37,16 +37,12 @@ namespace AirFighter
{
int CollisionFlag = 0;
-
-
-
Size objSize1 = new Size(100,100);
//COLLISION CHECK
if (direction == Direction.Up)
{
-
for (int i = 0; i < _map.GetLength(0); i++)
{
for (int j = 0; j < _map.GetLength(1); j++)
@@ -123,12 +119,7 @@ namespace AirFighter
{
Point LeftTop = new Point((int)(_drawingObject.GetCurrentPosition().Left + _drawingObject.Step), (int)_drawingObject.GetCurrentPosition().Top);
Rectangle objectRect = new Rectangle(LeftTop, objSize1);
-
-
-
Rectangle rectBarrier = new Rectangle((int)(i * _size_x), (int)(j * _size_y), (int)_size_x, (int)_size_y);
-
-
if (objectRect.IntersectsWith(rectBarrier))
{
CollisionFlag = 1;
@@ -175,11 +166,8 @@ namespace AirFighter
}
}
- }
-
-
+ }
return true;
-
}
private Bitmap DrawMapWithObject()
@@ -208,14 +196,11 @@ namespace AirFighter
return bmp;
}
-
-
protected abstract void GenerateMap();
protected abstract void DrawRoadPart(Graphics g, int i, int j);
protected abstract void DrawBarrierPart(Graphics g, int i, int j);
-
}
}
diff --git a/AirFighter/AirFighterForm.Designer.cs b/AirFighter/AirFighterForm.Designer.cs
index 693134d..baddba9 100644
--- a/AirFighter/AirFighterForm.Designer.cs
+++ b/AirFighter/AirFighterForm.Designer.cs
@@ -39,6 +39,7 @@
this.buttonRight = new System.Windows.Forms.Button();
this.buttonDown = new System.Windows.Forms.Button();
this.buttonCreateModification = new System.Windows.Forms.Button();
+ this.SelectButton = new System.Windows.Forms.Button();
((System.ComponentModel.ISupportInitialize)(this.pictureBoxAirFighter)).BeginInit();
this.statusStripAircraft.SuspendLayout();
this.SuspendLayout();
@@ -152,11 +153,22 @@
this.buttonCreateModification.UseVisualStyleBackColor = true;
this.buttonCreateModification.Click += new System.EventHandler(this.buttonCreateModification_Click);
//
+ // SelectButton
+ //
+ this.SelectButton.Location = new System.Drawing.Point(551, 390);
+ this.SelectButton.Name = "SelectButton";
+ this.SelectButton.Size = new System.Drawing.Size(75, 23);
+ this.SelectButton.TabIndex = 8;
+ this.SelectButton.Text = "Select";
+ this.SelectButton.UseVisualStyleBackColor = true;
+ this.SelectButton.Click += new System.EventHandler(this.SelectButton_Click);
+ //
// AirFighterForm
//
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.SelectButton);
this.Controls.Add(this.buttonCreateModification);
this.Controls.Add(this.buttonDown);
this.Controls.Add(this.buttonRight);
@@ -188,5 +200,6 @@
private Button buttonRight;
private Button buttonDown;
private Button buttonCreateModification;
+ private Button SelectButton;
}
}
\ No newline at end of file
diff --git a/AirFighter/AirFighterForm.cs b/AirFighter/AirFighterForm.cs
index d08ae99..354b78b 100644
--- a/AirFighter/AirFighterForm.cs
+++ b/AirFighter/AirFighterForm.cs
@@ -4,6 +4,8 @@ namespace AirFighter
{
private DrawingAircraft _aircraft;
+ public DrawingAircraft SelectedAircraft { get; private set; }
+
public AirFighterForm()
{
InitializeComponent();
@@ -17,7 +19,6 @@ namespace AirFighter
pictureBoxAirFighter.Image = bmp;
}
-
private void SetData()
{
Random rnd = new Random();
@@ -28,14 +29,21 @@ namespace AirFighter
toolStripStatusBodyColor.Text = $"BodyColor: {_aircraft.Plane.BodyColor.Name}";
}
-
-
private void buttonCreate_Click(object sender, EventArgs e)
{
- Random rnd = new Random();
- _aircraft = new DrawingAircraft(rnd.Next(100, 300), rnd.Next(1000, 2000), Color.FromArgb(rnd.Next(0, 256), rnd.Next(0, 256), rnd.Next(0, 256)));
+ Random rnd = new();
+ Color color = Color.FromArgb(rnd.Next(0, 256), rnd.Next(0, 256),
+ rnd.Next(0, 256));
+ ColorDialog dialog = new();
+ if (dialog.ShowDialog() == DialogResult.OK)
+ {
+ color = dialog.Color;
+ }
+ _aircraft = new DrawingAircraft(rnd.Next(100, 300), rnd.Next(1000, 2000),
+ color);
SetData();
Draw();
+
}
private void buttonMove_Click(object sender, EventArgs e)
@@ -75,14 +83,34 @@ namespace AirFighter
private void buttonCreateModification_Click(object sender, EventArgs e)
{
- Random rnd = new Random();
- _aircraft = new DrawingMilitaryAircraft(rnd.Next(100, 300), rnd.Next(1000, 2000),
- Color.FromArgb(rnd.Next(0, 256), rnd.Next(0, 256), rnd.Next(0, 256)),
- Color.FromArgb(rnd.Next(0, 256), rnd.Next(0, 256), rnd.Next(0, 256)),
- Convert.ToBoolean(rnd.Next(0,2)),Convert.ToBoolean(rnd.Next(0,2)));
-
+ Random rnd = new();
+ Color color = Color.FromArgb(rnd.Next(0, 256), rnd.Next(0, 256),
+ rnd.Next(0, 256));
+ ColorDialog dialog = new();
+ if (dialog.ShowDialog() == DialogResult.OK)
+ {
+ color = dialog.Color;
+ }
+ Color dopColor = Color.FromArgb(rnd.Next(0, 256), rnd.Next(0, 256),
+ rnd.Next(0, 256));
+ ColorDialog dialogDop = new();
+ if (dialogDop.ShowDialog() == DialogResult.OK)
+ {
+ dopColor = dialogDop.Color;
+ }
+ _aircraft = new DrawingMilitaryAircraft(rnd.Next(100, 300), rnd.Next(1000, 2000),
+ color, dopColor,
+ Convert.ToBoolean(rnd.Next(0, 2)), Convert.ToBoolean(rnd.Next(0,
+ 2)));
SetData();
Draw();
+
+ }
+
+ private void SelectButton_Click(object sender, EventArgs e)
+ {
+ SelectedAircraft = _aircraft;
+ DialogResult = DialogResult.OK;
}
}
}
\ No newline at end of file
diff --git a/AirFighter/Direction.cs b/AirFighter/Direction.cs
index fc2586d..eafde9a 100644
--- a/AirFighter/Direction.cs
+++ b/AirFighter/Direction.cs
@@ -6,7 +6,7 @@ using System.Threading.Tasks;
namespace AirFighter
{
- internal enum Direction
+ public enum Direction
{
None = 0,
Up =1,
diff --git a/AirFighter/DrawingAircraft.cs b/AirFighter/DrawingAircraft.cs
index a54c275..cf10c27 100644
--- a/AirFighter/DrawingAircraft.cs
+++ b/AirFighter/DrawingAircraft.cs
@@ -9,7 +9,7 @@ using System.Threading.Tasks;
namespace AirFighter
{
- internal class DrawingAircraft
+ public class DrawingAircraft
{
public EntityAircraft Plane { get; protected set; }
@@ -140,8 +140,6 @@ namespace AirFighter
return;
}
-
-
//Aircraft Body
Pen pen = new(Color.Black);
Brush brWhite = new SolidBrush(Plane.BodyColor);
@@ -150,7 +148,6 @@ namespace AirFighter
g.DrawRectangle(pen,_startPosX + 20, _startPosY + 45, 80, 14);
//Wings
-
GraphicsPath pathWing1 = new GraphicsPath();
Point point1B = new Point((int)(_startPosX + 50), (int)(_startPosY + 45));
@@ -163,7 +160,6 @@ namespace AirFighter
g.DrawPath(pen, pathWing1);
g.FillPath(brWhite, pathWing1);
-
GraphicsPath pathWing2 = new GraphicsPath();
Point point1B2 = new Point((int)(_startPosX + 50), (int)(_startPosY + 60));
diff --git a/AirFighter/DrawingMilitaryAircraft.cs b/AirFighter/DrawingMilitaryAircraft.cs
index 0528f9b..88dcaa8 100644
--- a/AirFighter/DrawingMilitaryAircraft.cs
+++ b/AirFighter/DrawingMilitaryAircraft.cs
@@ -26,9 +26,6 @@ namespace AirFighter
base.DrawTransport(g);
-
-
-
if (militaryAircraft.ExtraWings)
{
GraphicsPath pathExtraWing1 = new GraphicsPath();
@@ -57,8 +54,6 @@ namespace AirFighter
}
-
-
if (militaryAircraft.Rockets)
{
g.DrawRectangle(pen, _startPosX + 50, _startPosY + 30,17,4);
@@ -87,10 +82,6 @@ namespace AirFighter
pathRocketHead2.AddLines(pointsExtraRocketHead2);
g.DrawPath(pen, pathRocketHead2);
g.FillPath(extraBrush, pathRocketHead2);
-
-
-
-
}
}
diff --git a/AirFighter/EntityAircraft.cs b/AirFighter/EntityAircraft.cs
index 8da76b3..23b2484 100644
--- a/AirFighter/EntityAircraft.cs
+++ b/AirFighter/EntityAircraft.cs
@@ -6,7 +6,7 @@ using System.Threading.Tasks;
namespace AirFighter
{
- internal class EntityAircraft
+ public class EntityAircraft
{
public int Speed
{
@@ -28,8 +28,7 @@ namespace AirFighter
//=> оператор подобный return
public float Step => Speed * 100 / Weight;
-
-
+
public EntityAircraft(int speed, float weight, Color bodyColor)
{
Speed = speed;
diff --git a/AirFighter/EntityMilitaryAircraft.cs b/AirFighter/EntityMilitaryAircraft.cs
index 5e7ad6b..c6967c0 100644
--- a/AirFighter/EntityMilitaryAircraft.cs
+++ b/AirFighter/EntityMilitaryAircraft.cs
@@ -10,12 +10,10 @@ namespace AirFighter
{
public Color ExtraColor { get; private set; }
-
public bool Rockets { get; private set; }
public bool ExtraWings { get; private set; }
-
public EntityMilitaryAircraft(int speed, float weight, Color bodyColor, Color extraColor, bool rockets, bool extraWings) : base(speed, weight, bodyColor)
{
ExtraColor = extraColor;
diff --git a/AirFighter/FormMap.Designer.cs b/AirFighter/FormMap.Designer.cs
deleted file mode 100644
index ac71830..0000000
--- a/AirFighter/FormMap.Designer.cs
+++ /dev/null
@@ -1,207 +0,0 @@
-namespace AirFighter
-{
- partial class FormMap
- {
- ///
- /// 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.pictureBoxAirFighter = new System.Windows.Forms.PictureBox();
- this.statusStripAircraft = 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();
- this.buttonCreate = new System.Windows.Forms.Button();
- this.buttonUp = new System.Windows.Forms.Button();
- this.buttonLeft = new System.Windows.Forms.Button();
- this.buttonRight = new System.Windows.Forms.Button();
- this.buttonDown = new System.Windows.Forms.Button();
- this.buttonCreateModification = new System.Windows.Forms.Button();
- this.comboBoxMapSelection = new System.Windows.Forms.ComboBox();
- ((System.ComponentModel.ISupportInitialize)(this.pictureBoxAirFighter)).BeginInit();
- this.statusStripAircraft.SuspendLayout();
- this.SuspendLayout();
- //
- // pictureBoxAirFighter
- //
- this.pictureBoxAirFighter.Dock = System.Windows.Forms.DockStyle.Fill;
- this.pictureBoxAirFighter.Location = new System.Drawing.Point(0, 0);
- this.pictureBoxAirFighter.Name = "pictureBoxAirFighter";
- this.pictureBoxAirFighter.Size = new System.Drawing.Size(800, 428);
- this.pictureBoxAirFighter.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
- this.pictureBoxAirFighter.TabIndex = 0;
- this.pictureBoxAirFighter.TabStop = false;
- //
- // statusStripAircraft
- //
- this.statusStripAircraft.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.toolStripStatusSpeed,
- this.toolStripStatusWeight,
- this.toolStripStatusBodyColor});
- this.statusStripAircraft.Location = new System.Drawing.Point(0, 428);
- this.statusStripAircraft.Name = "statusStripAircraft";
- this.statusStripAircraft.Size = new System.Drawing.Size(800, 22);
- this.statusStripAircraft.TabIndex = 1;
- //
- // toolStripStatusSpeed
- //
- this.toolStripStatusSpeed.Name = "toolStripStatusSpeed";
- this.toolStripStatusSpeed.Size = new System.Drawing.Size(42, 17);
- this.toolStripStatusSpeed.Text = "Speed:";
- //
- // toolStripStatusWeight
- //
- this.toolStripStatusWeight.Name = "toolStripStatusWeight";
- this.toolStripStatusWeight.Size = new System.Drawing.Size(48, 17);
- this.toolStripStatusWeight.Text = "Weight:";
- //
- // toolStripStatusBodyColor
- //
- this.toolStripStatusBodyColor.Name = "toolStripStatusBodyColor";
- this.toolStripStatusBodyColor.Size = new System.Drawing.Size(66, 17);
- this.toolStripStatusBodyColor.Text = "BodyColor:";
- //
- // 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, 389);
- this.buttonCreate.Name = "buttonCreate";
- this.buttonCreate.Size = new System.Drawing.Size(75, 23);
- this.buttonCreate.TabIndex = 2;
- this.buttonCreate.Text = "Create";
- 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 = global::AirFighter.Properties.Resources.ArrowUp;
- this.buttonUp.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
- this.buttonUp.Location = new System.Drawing.Point(702, 346);
- this.buttonUp.Name = "buttonUp";
- this.buttonUp.Size = new System.Drawing.Size(30, 30);
- this.buttonUp.TabIndex = 3;
- this.buttonUp.UseVisualStyleBackColor = true;
- this.buttonUp.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 = global::AirFighter.Properties.Resources.ArrowLeft;
- this.buttonLeft.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
- this.buttonLeft.Location = new System.Drawing.Point(666, 382);
- this.buttonLeft.Name = "buttonLeft";
- this.buttonLeft.Size = new System.Drawing.Size(30, 30);
- this.buttonLeft.TabIndex = 4;
- this.buttonLeft.UseVisualStyleBackColor = true;
- this.buttonLeft.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 = global::AirFighter.Properties.Resources.ArrowRight;
- this.buttonRight.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
- this.buttonRight.Location = new System.Drawing.Point(738, 382);
- this.buttonRight.Name = "buttonRight";
- this.buttonRight.Size = new System.Drawing.Size(30, 30);
- this.buttonRight.TabIndex = 5;
- this.buttonRight.UseVisualStyleBackColor = true;
- this.buttonRight.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 = global::AirFighter.Properties.Resources.ArrowDown;
- this.buttonDown.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
- this.buttonDown.Location = new System.Drawing.Point(702, 382);
- this.buttonDown.Name = "buttonDown";
- this.buttonDown.Size = new System.Drawing.Size(30, 30);
- this.buttonDown.TabIndex = 6;
- this.buttonDown.UseVisualStyleBackColor = true;
- this.buttonDown.Click += new System.EventHandler(this.buttonMove_Click);
- //
- // buttonCreateModification
- //
- this.buttonCreateModification.Location = new System.Drawing.Point(103, 389);
- this.buttonCreateModification.Name = "buttonCreateModification";
- this.buttonCreateModification.Size = new System.Drawing.Size(110, 23);
- this.buttonCreateModification.TabIndex = 7;
- this.buttonCreateModification.Text = "Modification";
- this.buttonCreateModification.UseVisualStyleBackColor = true;
- this.buttonCreateModification.Click += new System.EventHandler(this.buttonCreateModification_Click);
- //
- // comboBoxMapSelection
- //
- this.comboBoxMapSelection.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
- this.comboBoxMapSelection.FormattingEnabled = true;
- this.comboBoxMapSelection.Items.AddRange(new object[] {
- "1. Simple map",
- "2. NightSky map"});
- this.comboBoxMapSelection.Location = new System.Drawing.Point(12, 12);
- this.comboBoxMapSelection.Name = "comboBoxMapSelection";
- this.comboBoxMapSelection.Size = new System.Drawing.Size(121, 23);
- this.comboBoxMapSelection.TabIndex = 8;
- this.comboBoxMapSelection.SelectedIndexChanged += new System.EventHandler(this.comboBoxMapSelection_SelectedIndexChanged);
- //
- // FormMap
- //
- 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.comboBoxMapSelection);
- this.Controls.Add(this.buttonCreateModification);
- this.Controls.Add(this.buttonDown);
- this.Controls.Add(this.buttonRight);
- this.Controls.Add(this.buttonLeft);
- this.Controls.Add(this.buttonUp);
- this.Controls.Add(this.buttonCreate);
- this.Controls.Add(this.pictureBoxAirFighter);
- this.Controls.Add(this.statusStripAircraft);
- this.Name = "FormMap";
- this.Text = "Map";
- ((System.ComponentModel.ISupportInitialize)(this.pictureBoxAirFighter)).EndInit();
- this.statusStripAircraft.ResumeLayout(false);
- this.statusStripAircraft.PerformLayout();
- this.ResumeLayout(false);
- this.PerformLayout();
-
- }
-
- #endregion
-
- private PictureBox pictureBoxAirFighter;
- private StatusStrip statusStripAircraft;
- private ToolStripStatusLabel toolStripStatusSpeed;
- private ToolStripStatusLabel toolStripStatusWeight;
- private ToolStripStatusLabel toolStripStatusBodyColor;
- private Button buttonCreate;
- private Button buttonUp;
- private Button buttonLeft;
- private Button buttonRight;
- private Button buttonDown;
- private Button buttonCreateModification;
- private ComboBox comboBoxMapSelection;
- }
-}
\ No newline at end of file
diff --git a/AirFighter/FormMap.cs b/AirFighter/FormMap.cs
deleted file mode 100644
index 301897d..0000000
--- a/AirFighter/FormMap.cs
+++ /dev/null
@@ -1,102 +0,0 @@
-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 AirFighter
-{
- public partial class FormMap : Form
- {
- private AbstractMap _abstractMap;
- public FormMap()
- {
- InitializeComponent();
- _abstractMap = new SimpleMap();
- }
-
- private void SetData(DrawingAircraft plane)
- {
- toolStripStatusSpeed.Text = $"Speed: {plane.Plane.Speed}";
- toolStripStatusWeight.Text = $"Weight: {plane.Plane.Weight}";
- toolStripStatusBodyColor.Text = $"BodyColor: {plane.Plane.BodyColor.Name}";
- pictureBoxAirFighter.Image = _abstractMap.CreateMap(pictureBoxAirFighter.Width, pictureBoxAirFighter.Height, new DrawingObjectAircraft(plane) );
- }
-
-
- private void buttonCreate_Click(object sender, EventArgs e)
- {
- Random rnd = new Random();
- var plane = new DrawingAircraft(rnd.Next(100, 300), rnd.Next(1000, 2000), Color.FromArgb(rnd.Next(0, 256), rnd.Next(0, 256), rnd.Next(0, 256)));
- SetData(plane);
-
- }
-
- private void buttonMove_Click(object sender, EventArgs e)
- {
- string name = ((Button)sender)?.Name ?? string.Empty;
-
- Direction dir = Direction.None;
- switch (name)
- {
- case "buttonUp":
- {
- dir = Direction.Up;
- }
- break;
- case "buttonDown":
- {
- dir = Direction.Down;
- }
- break;
- case "buttonLeft":
- {
- dir = Direction.Left;
- }
- break;
- case "buttonRight":
- {
- dir = Direction.Right;
- }
- break;
- }
- pictureBoxAirFighter.Image = _abstractMap?.MoveObject(dir);
-
- }
-
-
-
- private void buttonCreateModification_Click(object sender, EventArgs e)
- {
- Random rnd = new Random();
- var plane = new DrawingMilitaryAircraft(rnd.Next(100, 300), rnd.Next(1000, 2000),
- Color.FromArgb(rnd.Next(0, 256), rnd.Next(0, 256), rnd.Next(0, 256)),
- Color.FromArgb(rnd.Next(0, 256), rnd.Next(0, 256), rnd.Next(0, 256)),
- Convert.ToBoolean(rnd.Next(0, 2)), Convert.ToBoolean(rnd.Next(0, 2)));
-
- SetData(plane);
-
- }
-
- private void comboBoxMapSelection_SelectedIndexChanged(object sender, EventArgs e)
- {
- switch (comboBoxMapSelection.Text)
- {
- case "1. Simple map":
- {
- _abstractMap = new SimpleMap();
- }
- break;
- case "2. NightSky map":
- {
- _abstractMap = new NightSkyMap();
- }
- break;
- }
- }
- }
-}
diff --git a/AirFighter/FormMapWithSetAircrafts.Designer.cs b/AirFighter/FormMapWithSetAircrafts.Designer.cs
new file mode 100644
index 0000000..0a1a80e
--- /dev/null
+++ b/AirFighter/FormMapWithSetAircrafts.Designer.cs
@@ -0,0 +1,216 @@
+namespace AirFighter
+{
+ partial class FormMapWithSetAircrafts
+ {
+ ///
+ /// 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.PanelGroupBox = new System.Windows.Forms.GroupBox();
+ this.pictureBox = new System.Windows.Forms.PictureBox();
+ this.comboBoxMapSelection = new System.Windows.Forms.ComboBox();
+ this.AddAircraftButton = new System.Windows.Forms.Button();
+ this.maskedTextBoxPostion = new System.Windows.Forms.MaskedTextBox();
+ this.DeleteAircraftButton = new System.Windows.Forms.Button();
+ this.ShowHangarButton = new System.Windows.Forms.Button();
+ this.ShowMapButton = new System.Windows.Forms.Button();
+ this.buttonDown = new System.Windows.Forms.Button();
+ this.buttonRight = new System.Windows.Forms.Button();
+ this.buttonLeft = new System.Windows.Forms.Button();
+ this.buttonUp = new System.Windows.Forms.Button();
+ this.PanelGroupBox.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.pictureBox)).BeginInit();
+ this.SuspendLayout();
+ //
+ // PanelGroupBox
+ //
+ this.PanelGroupBox.Controls.Add(this.buttonDown);
+ this.PanelGroupBox.Controls.Add(this.buttonRight);
+ this.PanelGroupBox.Controls.Add(this.ShowMapButton);
+ this.PanelGroupBox.Controls.Add(this.buttonLeft);
+ this.PanelGroupBox.Controls.Add(this.ShowHangarButton);
+ this.PanelGroupBox.Controls.Add(this.buttonUp);
+ this.PanelGroupBox.Controls.Add(this.DeleteAircraftButton);
+ this.PanelGroupBox.Controls.Add(this.maskedTextBoxPostion);
+ this.PanelGroupBox.Controls.Add(this.AddAircraftButton);
+ this.PanelGroupBox.Controls.Add(this.comboBoxMapSelection);
+ this.PanelGroupBox.Dock = System.Windows.Forms.DockStyle.Right;
+ this.PanelGroupBox.Location = new System.Drawing.Point(600, 0);
+ this.PanelGroupBox.Name = "PanelGroupBox";
+ this.PanelGroupBox.Size = new System.Drawing.Size(200, 450);
+ this.PanelGroupBox.TabIndex = 0;
+ this.PanelGroupBox.TabStop = false;
+ this.PanelGroupBox.Text = "Function panel";
+ //
+ // 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(600, 450);
+ this.pictureBox.TabIndex = 1;
+ this.pictureBox.TabStop = false;
+ //
+ // comboBoxMapSelection
+ //
+ this.comboBoxMapSelection.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.comboBoxMapSelection.FormattingEnabled = true;
+ this.comboBoxMapSelection.Items.AddRange(new object[] {
+ "1. Simple map",
+ "2. NightSky map"});
+ this.comboBoxMapSelection.Location = new System.Drawing.Point(6, 22);
+ this.comboBoxMapSelection.Name = "comboBoxMapSelection";
+ this.comboBoxMapSelection.Size = new System.Drawing.Size(182, 23);
+ this.comboBoxMapSelection.TabIndex = 9;
+ this.comboBoxMapSelection.SelectedIndexChanged += new System.EventHandler(this.comboBoxMapSelection_SelectedIndexChanged);
+ //
+ // AddAircraftButton
+ //
+ this.AddAircraftButton.Location = new System.Drawing.Point(6, 80);
+ this.AddAircraftButton.Name = "AddAircraftButton";
+ this.AddAircraftButton.Size = new System.Drawing.Size(182, 35);
+ this.AddAircraftButton.TabIndex = 10;
+ this.AddAircraftButton.Text = "Add aircraft";
+ this.AddAircraftButton.UseVisualStyleBackColor = true;
+ this.AddAircraftButton.Click += new System.EventHandler(this.AddAircraftButton_Click);
+ //
+ // maskedTextBoxPostion
+ //
+ this.maskedTextBoxPostion.Location = new System.Drawing.Point(6, 139);
+ this.maskedTextBoxPostion.Mask = "00";
+ this.maskedTextBoxPostion.Name = "maskedTextBoxPostion";
+ this.maskedTextBoxPostion.Size = new System.Drawing.Size(182, 23);
+ this.maskedTextBoxPostion.TabIndex = 11;
+ //
+ // DeleteAircraftButton
+ //
+ this.DeleteAircraftButton.Location = new System.Drawing.Point(6, 177);
+ this.DeleteAircraftButton.Name = "DeleteAircraftButton";
+ this.DeleteAircraftButton.Size = new System.Drawing.Size(182, 36);
+ this.DeleteAircraftButton.TabIndex = 12;
+ this.DeleteAircraftButton.Text = "Delete aircraft";
+ this.DeleteAircraftButton.UseVisualStyleBackColor = true;
+ this.DeleteAircraftButton.Click += new System.EventHandler(this.DeleteAircraftButton_Click);
+ //
+ // ShowHangarButton
+ //
+ this.ShowHangarButton.Location = new System.Drawing.Point(6, 258);
+ this.ShowHangarButton.Name = "ShowHangarButton";
+ this.ShowHangarButton.Size = new System.Drawing.Size(182, 30);
+ this.ShowHangarButton.TabIndex = 13;
+ this.ShowHangarButton.Text = "Show hangar";
+ this.ShowHangarButton.UseVisualStyleBackColor = true;
+ this.ShowHangarButton.Click += new System.EventHandler(this.ShowHangarButton_Click);
+ //
+ // ShowMapButton
+ //
+ this.ShowMapButton.Location = new System.Drawing.Point(6, 308);
+ this.ShowMapButton.Name = "ShowMapButton";
+ this.ShowMapButton.Size = new System.Drawing.Size(182, 36);
+ this.ShowMapButton.TabIndex = 14;
+ this.ShowMapButton.Text = "Show map";
+ this.ShowMapButton.UseVisualStyleBackColor = true;
+ this.ShowMapButton.Click += new System.EventHandler(this.ShowMapButton_Click);
+ //
+ // buttonDown
+ //
+ this.buttonDown.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+ this.buttonDown.BackgroundImage = global::AirFighter.Properties.Resources.ArrowDown;
+ this.buttonDown.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
+ this.buttonDown.Location = new System.Drawing.Point(81, 408);
+ this.buttonDown.Name = "buttonDown";
+ this.buttonDown.Size = new System.Drawing.Size(30, 30);
+ this.buttonDown.TabIndex = 11;
+ this.buttonDown.UseVisualStyleBackColor = true;
+ this.buttonDown.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 = global::AirFighter.Properties.Resources.ArrowRight;
+ this.buttonRight.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
+ this.buttonRight.Location = new System.Drawing.Point(117, 408);
+ this.buttonRight.Name = "buttonRight";
+ this.buttonRight.Size = new System.Drawing.Size(30, 30);
+ this.buttonRight.TabIndex = 10;
+ 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 = global::AirFighter.Properties.Resources.ArrowLeft;
+ this.buttonLeft.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
+ this.buttonLeft.Location = new System.Drawing.Point(45, 408);
+ this.buttonLeft.Name = "buttonLeft";
+ this.buttonLeft.Size = new System.Drawing.Size(30, 30);
+ this.buttonLeft.TabIndex = 9;
+ this.buttonLeft.UseVisualStyleBackColor = true;
+ this.buttonLeft.Click += new System.EventHandler(this.ButtonMove_Click);
+ //
+ // buttonUp
+ //
+ this.buttonUp.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+ this.buttonUp.BackgroundImage = global::AirFighter.Properties.Resources.ArrowUp;
+ this.buttonUp.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
+ this.buttonUp.Location = new System.Drawing.Point(81, 372);
+ this.buttonUp.Name = "buttonUp";
+ this.buttonUp.Size = new System.Drawing.Size(30, 30);
+ this.buttonUp.TabIndex = 8;
+ this.buttonUp.UseVisualStyleBackColor = true;
+ this.buttonUp.Click += new System.EventHandler(this.ButtonMove_Click);
+ //
+ // FormMapWithSetAircrafts
+ //
+ 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.pictureBox);
+ this.Controls.Add(this.PanelGroupBox);
+ this.Name = "FormMapWithSetAircrafts";
+ this.Text = "MapWithSelectedAircrafts";
+ this.PanelGroupBox.ResumeLayout(false);
+ this.PanelGroupBox.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.pictureBox)).EndInit();
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private GroupBox PanelGroupBox;
+ private PictureBox pictureBox;
+ private ComboBox comboBoxMapSelection;
+ private Button ShowMapButton;
+ private Button ShowHangarButton;
+ private Button DeleteAircraftButton;
+ private MaskedTextBox maskedTextBoxPostion;
+ private Button AddAircraftButton;
+ private Button buttonDown;
+ private Button buttonRight;
+ private Button buttonLeft;
+ private Button buttonUp;
+ }
+}
\ No newline at end of file
diff --git a/AirFighter/FormMapWithSetAircrafts.cs b/AirFighter/FormMapWithSetAircrafts.cs
new file mode 100644
index 0000000..f1894db
--- /dev/null
+++ b/AirFighter/FormMapWithSetAircrafts.cs
@@ -0,0 +1,146 @@
+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 AirFighter
+{
+ public partial class FormMapWithSetAircrafts : Form
+ {
+ private MapWithSetAircraftsGeneric _mapAircraftsCollectionGeneric;
+
+ public FormMapWithSetAircrafts()
+ {
+ InitializeComponent();
+ }
+
+ private void ShowMapButton_Click(object sender, EventArgs e)
+ {
+ if (_mapAircraftsCollectionGeneric == null)
+ {
+ return;
+ }
+ pictureBox.Image = _mapAircraftsCollectionGeneric.ShowOnMap();
+ }
+
+ private void comboBoxMapSelection_SelectedIndexChanged(object sender, EventArgs e)
+ {
+ AbstractMap map = null;
+ switch (comboBoxMapSelection.Text)
+ {
+ case "1. Simple map":
+ {
+ map = new SimpleMap();
+ }
+ break;
+ case "2. NightSky map":
+ {
+ map = new NightSkyMap();
+ }
+ break;
+
+ }
+ if (map != null)
+ {
+ _mapAircraftsCollectionGeneric = new MapWithSetAircraftsGeneric(pictureBox.Width, pictureBox.Height, map);
+ }
+ else
+ {
+ _mapAircraftsCollectionGeneric = null;
+ }
+ }
+
+ private void AddAircraftButton_Click(object sender, EventArgs e)
+ {
+ if (_mapAircraftsCollectionGeneric == null)
+ {
+ return;
+ }
+ AirFighterForm form = new();
+ if (form.ShowDialog() == DialogResult.OK)
+ {
+ DrawingObjectAircraft aircraft = new(form.SelectedAircraft);
+ if (_mapAircraftsCollectionGeneric + aircraft != -1)
+ {
+ MessageBox.Show("Object is added");
+ pictureBox.Image = _mapAircraftsCollectionGeneric.ShowSet();
+ }
+ else
+ {
+ MessageBox.Show("Unable to add object");
+ }
+ }
+ }
+
+ private void DeleteAircraftButton_Click(object sender, EventArgs e)
+ {
+ if (string.IsNullOrEmpty(maskedTextBoxPostion.Text))
+ {
+ return;
+ }
+ if (MessageBox.Show("Delete object?", "Deletion", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
+ {
+ return;
+ }
+ int pos = Convert.ToInt32(maskedTextBoxPostion.Text);
+ if (_mapAircraftsCollectionGeneric - pos != null)
+ {
+ MessageBox.Show("Object is deleted");
+ pictureBox.Image = _mapAircraftsCollectionGeneric.ShowSet();
+ }
+ else
+ {
+ MessageBox.Show("Unable to delete object");
+ }
+ }
+
+ private void ShowHangarButton_Click(object sender, EventArgs e)
+ {
+ if (_mapAircraftsCollectionGeneric == null)
+ {
+ return;
+ }
+ pictureBox.Image = _mapAircraftsCollectionGeneric.ShowSet();
+ }
+
+ private void ButtonMove_Click(object sender, EventArgs e)
+ {
+ if (_mapAircraftsCollectionGeneric == null)
+ {
+ return;
+ }
+
+ string name = ((Button)sender)?.Name ?? string.Empty;
+ Direction dir = Direction.None;
+ switch (name)
+ {
+ case "buttonUp":
+ {
+ dir = Direction.Up;
+ }
+ break;
+ case "buttonDown":
+ {
+ dir = Direction.Down;
+ }
+ break;
+ case "buttonLeft":
+ {
+ dir = Direction.Left;
+ }
+ break;
+ case "buttonRight":
+ {
+ dir = Direction.Right;
+ }
+ break;
+ }
+ pictureBox.Image = _mapAircraftsCollectionGeneric.MoveObject(dir);
+ }
+ }
+}
diff --git a/AirFighter/FormMap.resx b/AirFighter/FormMapWithSetAircrafts.resx
similarity index 92%
rename from AirFighter/FormMap.resx
rename to AirFighter/FormMapWithSetAircrafts.resx
index 12a7f01..f298a7b 100644
--- a/AirFighter/FormMap.resx
+++ b/AirFighter/FormMapWithSetAircrafts.resx
@@ -57,7 +57,4 @@
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/MapWithSetAircraftsGeneric.cs b/AirFighter/MapWithSetAircraftsGeneric.cs
new file mode 100644
index 0000000..49dd91e
--- /dev/null
+++ b/AirFighter/MapWithSetAircraftsGeneric.cs
@@ -0,0 +1,150 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace AirFighter
+{
+ internal class MapWithSetAircraftsGeneric
+ where T : class, IDrawingObject
+ where U : AbstractMap
+ {
+ private readonly int _pictureWidth;
+
+ private readonly int _pictureHeight;
+
+ private readonly int _placeSizeWidth = 145;
+
+ private readonly int _placeSizeHeight = 145;
+
+ private readonly SetAircraftsGeneric _setAircrafts;
+
+ private readonly U _map;
+
+ public MapWithSetAircraftsGeneric(int picWidth, int picHeight, U map)
+ {
+ int width = picWidth / _placeSizeWidth;
+ int height = picHeight / _placeSizeHeight;
+ _setAircrafts = new SetAircraftsGeneric(width * height);
+ _pictureWidth = picWidth;
+ _pictureHeight = picHeight;
+ _map = map;
+ }
+
+ public static int operator +(MapWithSetAircraftsGeneric map, T aircraft)
+ {
+
+ return map._setAircrafts.Insert(aircraft);
+ }
+
+ public static T operator -(MapWithSetAircraftsGeneric map, int position)
+ {
+ return map._setAircrafts.Remove(position);
+ }
+
+
+ public Bitmap ShowSet()
+ {
+ Bitmap bmp = new(_pictureWidth, _pictureHeight);
+ Graphics gr = Graphics.FromImage(bmp);
+ DrawBackground(gr);
+ DrawAircrafts(gr);
+ return bmp;
+ }
+
+ public Bitmap ShowOnMap()
+ {
+ Shaking();
+ for (int i = 0; i < _setAircrafts.Count; i++)
+ {
+ var aircraft = _setAircrafts.Get(i);
+ if (aircraft != null)
+ {
+ return _map.CreateMap(_pictureWidth, _pictureHeight, aircraft);
+ }
+ }
+ return new(_pictureWidth, _pictureHeight);
+ }
+
+ public Bitmap MoveObject(Direction direction)
+ {
+ if (_map != null)
+ {
+ return _map.MoveObject(direction);
+ }
+ return new(_pictureWidth, _pictureHeight);
+ }
+
+ private void Shaking()
+ {
+ int j = _setAircrafts.Count - 1;
+ for (int i = 0; i < _setAircrafts.Count; i++)
+ {
+ if (_setAircrafts.Get(i) == null)
+ {
+ for (; j > i; j--)
+ {
+ var aircraft = _setAircrafts.Get(i);
+ if (aircraft != null)
+ {
+ _setAircrafts.Insert(aircraft, i);
+ _setAircrafts.Remove(j);
+ break;
+
+ }
+ }
+ if (j <= i)
+ {
+ return;
+ }
+ }
+ }
+ }
+
+ private void DrawBackground(Graphics g)
+ {
+ Pen pen = new(Color.Black, 2);
+ for (int i = 0; i < _pictureWidth / _placeSizeWidth + 1; i++)
+ {
+
+ for (int j = 0; j < _pictureHeight / _placeSizeHeight; j++)
+ {
+ g.DrawLine(pen, i * _placeSizeWidth + 20, j * _placeSizeHeight + 135, _pictureWidth - 80, j * _placeSizeHeight + 135);
+ g.DrawLine(pen, i * _placeSizeWidth + 20, j * _placeSizeHeight + 60, i * _placeSizeWidth + _placeSizeWidth /2 + 20, j * _placeSizeHeight + 45);
+ g.DrawLine(pen, i * _placeSizeWidth + _placeSizeWidth / 2 + 20, j * _placeSizeHeight + 45, i * _placeSizeWidth + _placeSizeWidth + 20 , j * _placeSizeHeight + 60);
+ g.DrawLine(pen, i * _placeSizeWidth + 20, j * _placeSizeHeight + 135, i * _placeSizeWidth + 20, j * _placeSizeHeight + 60);
+
+ }
+ }
+
+ }
+
+ private void DrawAircrafts(Graphics g)
+ {
+
+ int curX = _pictureWidth / _placeSizeWidth - 1;
+ int curY = _pictureHeight / _placeSizeHeight - 1;
+
+ for (int i = 0; i < _setAircrafts.Count; i++)
+ {
+ _setAircrafts.Get(i)?.SetObject(curX * _placeSizeWidth + 30, curY * _placeSizeHeight + 40, _pictureWidth, _pictureHeight);
+
+ _setAircrafts.Get(i)?.DrawingObject(g);
+
+ if (curX <= 0)
+ {
+ curX = _pictureWidth / _placeSizeWidth - 1;
+ curY--;
+ }
+ else
+ {
+ curX--;
+
+ }
+ }
+ }
+
+
+ }
+}
diff --git a/AirFighter/Program.cs b/AirFighter/Program.cs
index b613151..7b53446 100644
--- a/AirFighter/Program.cs
+++ b/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 FormMap());
+ Application.Run(new FormMapWithSetAircrafts());
}
}
}
\ No newline at end of file
diff --git a/AirFighter/SetAircraftsGeneric.cs b/AirFighter/SetAircraftsGeneric.cs
new file mode 100644
index 0000000..2c6cce2
--- /dev/null
+++ b/AirFighter/SetAircraftsGeneric.cs
@@ -0,0 +1,87 @@
+using System;
+using System.Collections.Generic;
+using System.Configuration;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace AirFighter
+{
+ internal class SetAircraftsGeneric
+ where T : class
+ {
+ private readonly T[] _places;
+
+ public int Count => _places.Length;
+
+ public SetAircraftsGeneric(int count)
+ {
+ _places = new T[count];
+ }
+
+ public int Insert(T aircraft)
+ {
+ return Insert(aircraft, 0);
+ }
+
+ public int Insert(T aircraft, int position)
+ {
+ int emptypos = -1;
+
+ if (position >= Count && position < 0)
+ {
+ return -1;
+ }
+
+ if (_places[position] == null)
+ {
+ _places[position] = aircraft;
+ return position;
+ }
+
+ for (int i = position; i < Count; i++)
+ {
+ if (_places[i] == null)
+ {
+ emptypos = i;
+ break;
+ }
+ }
+
+ if (emptypos != -1)
+ {
+ for (int i = emptypos; i > position; i--)
+ {
+ _places[i] = _places[i - 1];
+ }
+ _places[position] = aircraft;
+ return position;
+ }
+
+ return -1;
+
+ }
+
+ public T Remove(int position)
+ {
+ if (position < Count && position >= 0)
+ {
+ T result = _places[position];
+
+ _places[position] = null;
+ return result;
+ }
+
+ return null;
+ }
+
+ public T Get(int position)
+ {
+ if (position >= Count && position < 0)
+ {
+ return null;
+ }
+ return _places[position];
+ }
+ }
+}