From 187957395ea947ec5216dfcdfead61933583412b Mon Sep 17 00:00:00 2001 From: AnnZhimol Date: Tue, 18 Oct 2022 16:19:04 +0400 Subject: [PATCH 1/5] =?UTF-8?q?=D1=81=D0=BC=D0=B5=D0=BD=D0=B0=20=D0=BC?= =?UTF-8?q?=D0=B0=D1=81=D1=81=D0=B8=D0=B2=D0=B0=20=D0=BD=D0=B0=20=D1=81?= =?UTF-8?q?=D0=BF=D0=B8=D1=81=D0=BE=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Warship/Warship/MapWithSetWarshipsGeneric.cs | 19 ++++----- Warship/Warship/SetWarshipsGeneric.cs | 41 ++++++++++++++++---- 2 files changed, 41 insertions(+), 19 deletions(-) diff --git a/Warship/Warship/MapWithSetWarshipsGeneric.cs b/Warship/Warship/MapWithSetWarshipsGeneric.cs index deec30f..aa751fd 100644 --- a/Warship/Warship/MapWithSetWarshipsGeneric.cs +++ b/Warship/Warship/MapWithSetWarshipsGeneric.cs @@ -49,13 +49,9 @@ namespace Warship public Bitmap ShowOnMap() { Shaking(); - for (int i = 0; i < _setWarship.Count; i++) + foreach(var warship in _setWarship.GetWarships()) { - var warship = _setWarship.Get(i); - if (warship != null) - { - return _map.CreateMap(_pictureWidth, _pictureHeight, warship); - } + return _map.CreateMap(_pictureWidth, _pictureHeight, warship); } return new(_pictureWidth, _pictureHeight); } @@ -74,11 +70,11 @@ namespace Warship int j = _setWarship.Count - 1; for (int i = 0; i < _setWarship.Count; i++) { - if (_setWarship.Get(i) == null) + if (_setWarship[i] == null) { for (; j > i; j--) { - var warship = _setWarship.Get(j); + var warship = _setWarship[j]; if (warship != null) { _setWarship.Insert(warship, i); @@ -111,15 +107,16 @@ namespace Warship private void DrawWarship(Graphics gr) { + //todo int width = _pictureWidth / _placeSizeWidth; int height = _pictureHeight / _placeSizeHeight; for (int i = 0; i < _setWarship.Count; i++) { - if (_setWarship.Get(i) != null) + if (_setWarship[i] != null) { - _setWarship.Get(i).SetObject(i % width * _placeSizeWidth, (height - 1 - i / width) * _placeSizeHeight, _pictureWidth, _pictureHeight); - _setWarship.Get(i)?.DrawingObject(gr); + _setWarship[i].SetObject(i % width * _placeSizeWidth, (height - 1 - i / width) * _placeSizeHeight, _pictureWidth, _pictureHeight); + _setWarship[i]?.DrawingObject(gr); } } } diff --git a/Warship/Warship/SetWarshipsGeneric.cs b/Warship/Warship/SetWarshipsGeneric.cs index ac9c126..d523774 100644 --- a/Warship/Warship/SetWarshipsGeneric.cs +++ b/Warship/Warship/SetWarshipsGeneric.cs @@ -9,22 +9,27 @@ namespace Warship internal class SetWarshipsGeneric where T : class { - private readonly T[] _places; + private readonly List _places; - public int Count => _places.Length; + public int Count => _places.Count; + + private readonly int _maxCount; public SetWarshipsGeneric(int count) { - _places = new T[count]; + _maxCount = count; + _places = new List(); } public int Insert(T warship) { + //todo return Insert(warship,0); } public int Insert(T warship, int position) { + //todo int EmptyEl=-1; if (position>=Count || position < 0) @@ -58,6 +63,7 @@ namespace Warship public T Remove(int position) { + //todo if (position >= Count || position < 0 || _places[position]==null) return null; @@ -66,12 +72,31 @@ namespace Warship return deleted; } - public T Get(int position) + public T this[int position] { - if (position >= Count || position < 0) - return null; - - return _places[position]; + get + { + //todo + return _places[position]; + } + set + { + //todo + } + } + public IEnumerable GetWarships() + { + foreach(var warship in _places) + { + if (warship != null) + { + yield return warship; + } + else + { + yield break; + } + } } } } -- 2.25.1 From 1bf55f260ec9ef92d813ca644ff5a68dd2c032a9 Mon Sep 17 00:00:00 2001 From: AnnZhimol Date: Tue, 18 Oct 2022 16:28:29 +0400 Subject: [PATCH 2/5] =?UTF-8?q?=D0=9A=D0=BB=D0=B0=D1=81=D1=81=20MapsCollec?= =?UTF-8?q?tion?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Warship/Warship/MapsCollection.cs | 44 +++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 Warship/Warship/MapsCollection.cs diff --git a/Warship/Warship/MapsCollection.cs b/Warship/Warship/MapsCollection.cs new file mode 100644 index 0000000..cd8d05c --- /dev/null +++ b/Warship/Warship/MapsCollection.cs @@ -0,0 +1,44 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Warship +{ + internal class MapsCollection + { + readonly Dictionary> _mapStorages; + + public List Keys => _mapStorages.Keys.ToList(); + + private readonly int _pictureWidth; + private readonly int _pictureHeight; + + public MapsCollection(int pictureWidth,int pictureHeight) + { + _mapStorages = new Dictionary>; + _pictureWidth = pictureWidth; + _pictureHeight = pictureHeight; + } + + public void AddMap(string name,AbstractMap map) + { + //todo + } + + public void DelMap(string name) + { + + } + + public MapWithSetWarshipsGeneric this[string ind] + { + get + { + //todo + return null; + } + } + } +} -- 2.25.1 From 44408586b55cbcaa2f5a2673b1a91be0cafe7cb3 Mon Sep 17 00:00:00 2001 From: AnnZhimol Date: Tue, 18 Oct 2022 18:22:57 +0400 Subject: [PATCH 3/5] =?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=964,=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=BD=D1=8B=20=D0=BD=D0=B5=D0=B4=D0=BE=D1=87?= =?UTF-8?q?=D0=B5=D1=82=D1=8B.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../FormMapWithSetWarships.Designer.cs | 119 +++++++++++++----- Warship/Warship/FormMapWithSetWarships.cs | 100 +++++++++++---- Warship/Warship/MapWithSetWarshipsGeneric.cs | 11 +- Warship/Warship/MapsCollection.cs | 23 +++- Warship/Warship/SetWarshipsGeneric.cs | 51 +++----- 5 files changed, 201 insertions(+), 103 deletions(-) diff --git a/Warship/Warship/FormMapWithSetWarships.Designer.cs b/Warship/Warship/FormMapWithSetWarships.Designer.cs index 760c7de..db8d4d6 100644 --- a/Warship/Warship/FormMapWithSetWarships.Designer.cs +++ b/Warship/Warship/FormMapWithSetWarships.Designer.cs @@ -29,6 +29,11 @@ private void InitializeComponent() { this.groupBoxTools = new System.Windows.Forms.GroupBox(); + this.groupBoxMaps = new System.Windows.Forms.GroupBox(); + this.ButtonDeleteMap = new System.Windows.Forms.Button(); + this.listBoxMaps = new System.Windows.Forms.ListBox(); + this.ButtonAddMap = new System.Windows.Forms.Button(); + this.comboBoxSelectorMap = new System.Windows.Forms.ComboBox(); this.maskedTextBoxPosition = new System.Windows.Forms.MaskedTextBox(); this.buttonRemoveWarship = new System.Windows.Forms.Button(); this.buttonShowStorage = new System.Windows.Forms.Button(); @@ -38,14 +43,16 @@ this.buttonUp = new System.Windows.Forms.Button(); this.buttonShowOnMap = new System.Windows.Forms.Button(); this.buttonAddWarship = new System.Windows.Forms.Button(); - this.comboBoxSelectorMap = new System.Windows.Forms.ComboBox(); this.pictureBox = new System.Windows.Forms.PictureBox(); + this.textBoxMap = new System.Windows.Forms.TextBox(); this.groupBoxTools.SuspendLayout(); + this.groupBoxMaps.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox)).BeginInit(); this.SuspendLayout(); // // groupBoxTools // + this.groupBoxTools.Controls.Add(this.groupBoxMaps); this.groupBoxTools.Controls.Add(this.maskedTextBoxPosition); this.groupBoxTools.Controls.Add(this.buttonRemoveWarship); this.groupBoxTools.Controls.Add(this.buttonShowStorage); @@ -55,18 +62,73 @@ this.groupBoxTools.Controls.Add(this.buttonUp); this.groupBoxTools.Controls.Add(this.buttonShowOnMap); this.groupBoxTools.Controls.Add(this.buttonAddWarship); - this.groupBoxTools.Controls.Add(this.comboBoxSelectorMap); this.groupBoxTools.Dock = System.Windows.Forms.DockStyle.Right; - this.groupBoxTools.Location = new System.Drawing.Point(811, 0); + this.groupBoxTools.Location = new System.Drawing.Point(859, 0); this.groupBoxTools.Name = "groupBoxTools"; - this.groupBoxTools.Size = new System.Drawing.Size(204, 554); + this.groupBoxTools.Size = new System.Drawing.Size(204, 652); this.groupBoxTools.TabIndex = 0; this.groupBoxTools.TabStop = false; this.groupBoxTools.Text = "Инструменты"; // + // groupBoxMaps + // + this.groupBoxMaps.Controls.Add(this.textBoxMap); + this.groupBoxMaps.Controls.Add(this.ButtonDeleteMap); + this.groupBoxMaps.Controls.Add(this.listBoxMaps); + this.groupBoxMaps.Controls.Add(this.ButtonAddMap); + this.groupBoxMaps.Controls.Add(this.comboBoxSelectorMap); + this.groupBoxMaps.Location = new System.Drawing.Point(10, 22); + this.groupBoxMaps.Name = "groupBoxMaps"; + this.groupBoxMaps.Size = new System.Drawing.Size(188, 266); + this.groupBoxMaps.TabIndex = 11; + this.groupBoxMaps.TabStop = false; + this.groupBoxMaps.Text = "Карты"; + // + // ButtonDeleteMap + // + this.ButtonDeleteMap.Location = new System.Drawing.Point(12, 223); + this.ButtonDeleteMap.Name = "ButtonDeleteMap"; + this.ButtonDeleteMap.Size = new System.Drawing.Size(168, 33); + this.ButtonDeleteMap.TabIndex = 4; + this.ButtonDeleteMap.Text = "Удалить карту"; + this.ButtonDeleteMap.UseVisualStyleBackColor = true; + this.ButtonDeleteMap.Click += new System.EventHandler(this.ButtonDeleteMap_Click); + // + // listBoxMaps + // + this.listBoxMaps.FormattingEnabled = true; + this.listBoxMaps.ItemHeight = 15; + this.listBoxMaps.Location = new System.Drawing.Point(10, 118); + this.listBoxMaps.Name = "listBoxMaps"; + this.listBoxMaps.Size = new System.Drawing.Size(170, 94); + this.listBoxMaps.TabIndex = 3; + this.listBoxMaps.SelectedIndexChanged += new System.EventHandler(this.listBoxMaps_SelectedIndexChanged); + // + // ButtonAddMap + // + this.ButtonAddMap.Location = new System.Drawing.Point(8, 79); + this.ButtonAddMap.Name = "ButtonAddMap"; + this.ButtonAddMap.Size = new System.Drawing.Size(174, 35); + this.ButtonAddMap.TabIndex = 2; + this.ButtonAddMap.Text = "Добавить карту"; + this.ButtonAddMap.UseVisualStyleBackColor = true; + this.ButtonAddMap.Click += new System.EventHandler(this.ButtonAddMap_Click); + // + // comboBoxSelectorMap + // + this.comboBoxSelectorMap.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.comboBoxSelectorMap.FormattingEnabled = true; + this.comboBoxSelectorMap.Items.AddRange(new object[] { + "Первая карта", + "Вторая карта"}); + this.comboBoxSelectorMap.Location = new System.Drawing.Point(7, 50); + this.comboBoxSelectorMap.Name = "comboBoxSelectorMap"; + this.comboBoxSelectorMap.Size = new System.Drawing.Size(175, 23); + this.comboBoxSelectorMap.TabIndex = 0; + // // maskedTextBoxPosition // - this.maskedTextBoxPosition.Location = new System.Drawing.Point(17, 166); + this.maskedTextBoxPosition.Location = new System.Drawing.Point(15, 358); this.maskedTextBoxPosition.Mask = "00"; this.maskedTextBoxPosition.Name = "maskedTextBoxPosition"; this.maskedTextBoxPosition.Size = new System.Drawing.Size(175, 23); @@ -75,7 +137,7 @@ // // buttonRemoveWarship // - this.buttonRemoveWarship.Location = new System.Drawing.Point(17, 195); + this.buttonRemoveWarship.Location = new System.Drawing.Point(15, 387); this.buttonRemoveWarship.Name = "buttonRemoveWarship"; this.buttonRemoveWarship.Size = new System.Drawing.Size(175, 35); this.buttonRemoveWarship.TabIndex = 3; @@ -85,7 +147,7 @@ // // buttonShowStorage // - this.buttonShowStorage.Location = new System.Drawing.Point(17, 287); + this.buttonShowStorage.Location = new System.Drawing.Point(15, 452); this.buttonShowStorage.Name = "buttonShowStorage"; this.buttonShowStorage.Size = new System.Drawing.Size(175, 35); this.buttonShowStorage.TabIndex = 4; @@ -98,7 +160,7 @@ this.buttonDown.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.buttonDown.BackgroundImage = global::Warship.Properties.Resources.arrowDown; this.buttonDown.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; - this.buttonDown.Location = new System.Drawing.Point(91, 504); + this.buttonDown.Location = new System.Drawing.Point(91, 602); this.buttonDown.Name = "buttonDown"; this.buttonDown.Size = new System.Drawing.Size(30, 30); this.buttonDown.TabIndex = 10; @@ -110,7 +172,7 @@ this.buttonRight.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.buttonRight.BackgroundImage = global::Warship.Properties.Resources.arrowRight; this.buttonRight.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; - this.buttonRight.Location = new System.Drawing.Point(127, 504); + this.buttonRight.Location = new System.Drawing.Point(127, 602); this.buttonRight.Name = "buttonRight"; this.buttonRight.Size = new System.Drawing.Size(30, 30); this.buttonRight.TabIndex = 9; @@ -122,7 +184,7 @@ this.buttonLeft.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.buttonLeft.BackgroundImage = global::Warship.Properties.Resources.arrowLeft; this.buttonLeft.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; - this.buttonLeft.Location = new System.Drawing.Point(55, 504); + this.buttonLeft.Location = new System.Drawing.Point(55, 602); this.buttonLeft.Name = "buttonLeft"; this.buttonLeft.Size = new System.Drawing.Size(30, 30); this.buttonLeft.TabIndex = 8; @@ -134,7 +196,7 @@ this.buttonUp.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.buttonUp.BackgroundImage = global::Warship.Properties.Resources.arrowUp; this.buttonUp.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; - this.buttonUp.Location = new System.Drawing.Point(91, 468); + this.buttonUp.Location = new System.Drawing.Point(91, 566); this.buttonUp.Name = "buttonUp"; this.buttonUp.Size = new System.Drawing.Size(30, 30); this.buttonUp.TabIndex = 7; @@ -143,7 +205,7 @@ // // buttonShowOnMap // - this.buttonShowOnMap.Location = new System.Drawing.Point(17, 391); + this.buttonShowOnMap.Location = new System.Drawing.Point(15, 493); this.buttonShowOnMap.Name = "buttonShowOnMap"; this.buttonShowOnMap.Size = new System.Drawing.Size(175, 35); this.buttonShowOnMap.TabIndex = 5; @@ -153,7 +215,7 @@ // // buttonAddWarship // - this.buttonAddWarship.Location = new System.Drawing.Point(17, 106); + this.buttonAddWarship.Location = new System.Drawing.Point(15, 317); this.buttonAddWarship.Name = "buttonAddWarship"; this.buttonAddWarship.Size = new System.Drawing.Size(175, 35); this.buttonAddWarship.TabIndex = 1; @@ -161,39 +223,35 @@ this.buttonAddWarship.UseVisualStyleBackColor = true; this.buttonAddWarship.Click += new System.EventHandler(this.ButtonAddWarship_Click); // - // comboBoxSelectorMap - // - this.comboBoxSelectorMap.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.comboBoxSelectorMap.FormattingEnabled = true; - this.comboBoxSelectorMap.Items.AddRange(new object[] { - "Первая карта", - "Вторая карта"}); - this.comboBoxSelectorMap.Location = new System.Drawing.Point(17, 32); - this.comboBoxSelectorMap.Name = "comboBoxSelectorMap"; - this.comboBoxSelectorMap.Size = new System.Drawing.Size(175, 23); - this.comboBoxSelectorMap.TabIndex = 0; - this.comboBoxSelectorMap.SelectedIndexChanged += new System.EventHandler(this.ComboBoxSelectorMap_SelectedIndexChanged); - // // 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(811, 554); + this.pictureBox.Size = new System.Drawing.Size(859, 652); this.pictureBox.TabIndex = 1; this.pictureBox.TabStop = false; // + // textBoxMap + // + this.textBoxMap.Location = new System.Drawing.Point(5, 21); + this.textBoxMap.Name = "textBoxMap"; + this.textBoxMap.Size = new System.Drawing.Size(175, 23); + this.textBoxMap.TabIndex = 12; + // // FormMapWithSetWarships // this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(1015, 554); + this.ClientSize = new System.Drawing.Size(1063, 652); this.Controls.Add(this.pictureBox); this.Controls.Add(this.groupBoxTools); this.Name = "FormMapWithSetWarships"; this.Text = "Карта с набором объектов"; this.groupBoxTools.ResumeLayout(false); this.groupBoxTools.PerformLayout(); + this.groupBoxMaps.ResumeLayout(false); + this.groupBoxMaps.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox)).EndInit(); this.ResumeLayout(false); @@ -213,5 +271,10 @@ private Button buttonShowStorage; private Button buttonRemoveWarship; private MaskedTextBox maskedTextBoxPosition; + private GroupBox groupBoxMaps; + private Button ButtonDeleteMap; + private ListBox listBoxMaps; + private Button ButtonAddMap; + private TextBox textBoxMap; } } \ No newline at end of file diff --git a/Warship/Warship/FormMapWithSetWarships.cs b/Warship/Warship/FormMapWithSetWarships.cs index b71de7e..2b21419 100644 --- a/Warship/Warship/FormMapWithSetWarships.cs +++ b/Warship/Warship/FormMapWithSetWarships.cs @@ -12,40 +12,46 @@ namespace Warship { public partial class FormMapWithSetWarships : Form { - private MapWithSetWarshipsGeneric _mapWarshipsCollectionGeneric; + + private readonly Dictionary _mapDict = new() + { + {"Первая карта",new SimpleMap() }, + {"Вторая карта",new SecondMap() } + }; + + private readonly MapsCollection _mapsCollection; public FormMapWithSetWarships() { InitializeComponent(); + _mapsCollection = new MapsCollection(pictureBox.Width, pictureBox.Height); + comboBoxSelectorMap.Items.Clear(); + foreach(var elem in _mapDict) + { + comboBoxSelectorMap.Items.Add(elem.Key); + } } - private void ComboBoxSelectorMap_SelectedIndexChanged(object sender, EventArgs e) + private void ReloadMaps() { - AbstractMap map = null; - - switch (comboBoxSelectorMap.Text) + int index = listBoxMaps.SelectedIndex; + for (int i = 0; i < _mapsCollection.Keys.Count; i++) { - case "Первая карта": - map = new SimpleMap(); - break; - case "Вторая карта": - map = new SecondMap(); - break; + listBoxMaps.Items.Add(_mapsCollection.Keys[i]); } - if (map != null) + if (listBoxMaps.Items.Count>0&& (index == -1 || index >= listBoxMaps.Items.Count)) { - _mapWarshipsCollectionGeneric = new MapWithSetWarshipsGeneric( - pictureBox.Width, pictureBox.Height, map); + listBoxMaps.SelectedIndex = 0; } - else + else if (listBoxMaps.Items.Count>0&&index>-1 && index < listBoxMaps.Items.Count) { - _mapWarshipsCollectionGeneric = null; + listBoxMaps.SelectedIndex = index; } } private void ButtonAddWarship_Click(object sender, EventArgs e) { - if (_mapWarshipsCollectionGeneric == null) + if (listBoxMaps.SelectedIndex==-1) { return; } @@ -53,10 +59,10 @@ namespace Warship if (form.ShowDialog() == DialogResult.OK) { DrawingObjectWarship warship = new(form.SelectedWarship); - if (_mapWarshipsCollectionGeneric + warship>=0) + if (_mapsCollection[listBoxMaps.SelectedItem?.ToString()??string.Empty]+warship!=-1) { MessageBox.Show("Объект добавлен"); - pictureBox.Image = _mapWarshipsCollectionGeneric.ShowSet(); + pictureBox.Image = _mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty].ShowSet(); } else { @@ -67,6 +73,10 @@ namespace Warship private void ButtonRemoveWarship_Click(object sender, EventArgs e) { + if (listBoxMaps.SelectedIndex == -1) + { + return; + } if (string.IsNullOrEmpty(maskedTextBoxPosition.Text)) { return; @@ -76,10 +86,10 @@ namespace Warship return; } int pos = Convert.ToInt32(maskedTextBoxPosition.Text); - if (_mapWarshipsCollectionGeneric - pos !=null) + if (_mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty] - pos !=null) { MessageBox.Show("Объект удален"); - pictureBox.Image = _mapWarshipsCollectionGeneric.ShowSet(); + pictureBox.Image = _mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty].ShowSet(); } else { @@ -89,25 +99,25 @@ namespace Warship private void ButtonShowStorage_Click(object sender, EventArgs e) { - if (_mapWarshipsCollectionGeneric == null) + if (listBoxMaps.SelectedIndex == -1) { return; } - pictureBox.Image = _mapWarshipsCollectionGeneric.ShowSet(); + pictureBox.Image = _mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty].ShowSet(); } private void ButtonShowOnMap_Click(object sender, EventArgs e) { - if (_mapWarshipsCollectionGeneric == null) + if (listBoxMaps.SelectedIndex == -1) { return; } - pictureBox.Image = _mapWarshipsCollectionGeneric.ShowOnMap(); + pictureBox.Image = _mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty].ShowOnMap(); } private void ButtonMove_Click(object sender, EventArgs e) { - if (_mapWarshipsCollectionGeneric == null) + if (listBoxMaps.SelectedIndex == -1) { return; } @@ -128,7 +138,43 @@ namespace Warship dir = Direction.Right; break; } - pictureBox.Image = _mapWarshipsCollectionGeneric.MoveObject(dir); + pictureBox.Image = _mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty].MoveObject(dir); + } + + private void ButtonAddMap_Click(object sender, EventArgs e) + { + if (comboBoxSelectorMap.SelectedIndex == -1 || string.IsNullOrEmpty(textBoxMap.Text)) + { + MessageBox.Show("Не все данные заполнены", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + if (!_mapDict.ContainsKey(comboBoxSelectorMap.Text)) + { + MessageBox.Show("Нет такой карты", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + listBoxMaps.Items.Clear(); + _mapsCollection.AddMap(textBoxMap.Text, _mapDict[comboBoxSelectorMap.Text]); + ReloadMaps(); + } + + private void listBoxMaps_SelectedIndexChanged(object sender, EventArgs e) + { + pictureBox.Image = _mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty].ShowSet(); + } + + private void ButtonDeleteMap_Click(object sender, EventArgs e) + { + if (listBoxMaps.SelectedIndex == -1) + { + return; + } + if (MessageBox.Show($"Удалить карту {listBoxMaps.SelectedItem}?", "Удаление", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) + { + _mapsCollection.DelMap(listBoxMaps.SelectedItem?.ToString() ?? string.Empty); + listBoxMaps.Items.Clear(); + ReloadMaps(); + } } } } diff --git a/Warship/Warship/MapWithSetWarshipsGeneric.cs b/Warship/Warship/MapWithSetWarshipsGeneric.cs index aa751fd..dd71782 100644 --- a/Warship/Warship/MapWithSetWarshipsGeneric.cs +++ b/Warship/Warship/MapWithSetWarshipsGeneric.cs @@ -110,14 +110,13 @@ namespace Warship //todo int width = _pictureWidth / _placeSizeWidth; int height = _pictureHeight / _placeSizeHeight; + int i= 0; - for (int i = 0; i < _setWarship.Count; i++) + foreach(var warship in _setWarship.GetWarships()) { - if (_setWarship[i] != null) - { - _setWarship[i].SetObject(i % width * _placeSizeWidth, (height - 1 - i / width) * _placeSizeHeight, _pictureWidth, _pictureHeight); - _setWarship[i]?.DrawingObject(gr); - } + warship.SetObject(i % width * _placeSizeWidth, (height - 1 - i / width) * _placeSizeHeight, _pictureWidth, _pictureHeight); + warship.DrawingObject(gr); + i++; } } } diff --git a/Warship/Warship/MapsCollection.cs b/Warship/Warship/MapsCollection.cs index cd8d05c..3ef8a96 100644 --- a/Warship/Warship/MapsCollection.cs +++ b/Warship/Warship/MapsCollection.cs @@ -15,28 +15,39 @@ namespace Warship private readonly int _pictureWidth; private readonly int _pictureHeight; - public MapsCollection(int pictureWidth,int pictureHeight) + public MapsCollection(int pictureWidth, int pictureHeight) { - _mapStorages = new Dictionary>; + _mapStorages = new Dictionary>(); _pictureWidth = pictureWidth; _pictureHeight = pictureHeight; } - public void AddMap(string name,AbstractMap map) + public void AddMap(string name, AbstractMap map) { - //todo + if (_mapStorages.ContainsKey(name)) + { + MessageBox.Show("Карта уже существует"); + return; + } + else + { + _mapStorages.Add(name, new MapWithSetWarshipsGeneric(_pictureWidth, _pictureHeight, map)); + } } public void DelMap(string name) { + _mapStorages.Remove(name); + } - public MapWithSetWarshipsGeneric this[string ind] + public MapWithSetWarshipsGeneric this[string ind] { get { - //todo + if (_mapStorages.ContainsKey(ind)) + return _mapStorages[ind]; return null; } } diff --git a/Warship/Warship/SetWarshipsGeneric.cs b/Warship/Warship/SetWarshipsGeneric.cs index d523774..936cf77 100644 --- a/Warship/Warship/SetWarshipsGeneric.cs +++ b/Warship/Warship/SetWarshipsGeneric.cs @@ -23,52 +23,29 @@ namespace Warship public int Insert(T warship) { - //todo - return Insert(warship,0); + if (_places.Count + 1 >= _maxCount) + return -1; + _places.Insert(0, warship); + return 0; } public int Insert(T warship, int position) { - //todo - int EmptyEl=-1; - - if (position>=Count || position < 0) + if (position >= _maxCount || position < 0) return -1; - - if (_places[position] == null) - { - _places[position] = warship; - return 1; - } - - else if (_places[position] != null) - { - for (int i = position + 1; i < Count; i++) - if (_places[i] == null) - { - EmptyEl = i; - break; - } - - if (EmptyEl == -1) - return -1; - - for (int i = EmptyEl; i > position; i--) - _places[i] = _places[i - 1]; - } - - _places[position] = warship; - return 1; + if (_places.Count + 1 >= _maxCount) + return -1; + _places.Insert(position, warship); + return position; } public T Remove(int position) { - //todo - if (position >= Count || position < 0 || _places[position]==null) + if (position >= _maxCount || position < 0) return null; T deleted =_places[position]; - _places[position] = null; + _places.RemoveAt(position); return deleted; } @@ -76,12 +53,14 @@ namespace Warship { get { - //todo + if (position < 0 || position >= _maxCount) + return null; return _places[position]; } set { - //todo + if (position < 0 || position >= _maxCount) + Insert(value, position); } } public IEnumerable GetWarships() -- 2.25.1 From 332cf2b91ebb61c36a8150167d5fdb0b7e39abc1 Mon Sep 17 00:00:00 2001 From: AnnZhimol Date: Tue, 18 Oct 2022 18:24:38 +0400 Subject: [PATCH 4/5] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=BE=20=D0=BD=D0=B0=D0=B7=D0=B2=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Warship/Warship/FormMapWithSetWarships.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Warship/Warship/FormMapWithSetWarships.cs b/Warship/Warship/FormMapWithSetWarships.cs index 2b21419..b477fbe 100644 --- a/Warship/Warship/FormMapWithSetWarships.cs +++ b/Warship/Warship/FormMapWithSetWarships.cs @@ -158,7 +158,7 @@ namespace Warship ReloadMaps(); } - private void listBoxMaps_SelectedIndexChanged(object sender, EventArgs e) + private void ListBoxMaps_SelectedIndexChanged(object sender, EventArgs e) { pictureBox.Image = _mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty].ShowSet(); } -- 2.25.1 From 6ca9449eb0fb5833fb05cf9480f812a0afe47470 Mon Sep 17 00:00:00 2001 From: AnnZhimol Date: Wed, 19 Oct 2022 09:35:18 +0400 Subject: [PATCH 5/5] =?UTF-8?q?=D0=A4=D0=B8=D0=BD=D0=B0=D0=BB=D1=8C=D0=BD?= =?UTF-8?q?=D1=8B=D0=B9=20=D0=B2=D0=B0=D1=80=D0=B8=D0=B0=D0=BD=D1=82=204?= =?UTF-8?q?=20=D0=BB=D0=B0=D0=B1=D0=BE=D1=80=D0=B0=D1=82=D0=BE=D1=80=D0=BD?= =?UTF-8?q?=D0=BE=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Warship/Warship/FormMapWithSetWarships.Designer.cs | 2 +- Warship/Warship/MapWithSetWarshipsGeneric.cs | 1 - Warship/Warship/MapsCollection.cs | 1 + 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Warship/Warship/FormMapWithSetWarships.Designer.cs b/Warship/Warship/FormMapWithSetWarships.Designer.cs index db8d4d6..64fe4d0 100644 --- a/Warship/Warship/FormMapWithSetWarships.Designer.cs +++ b/Warship/Warship/FormMapWithSetWarships.Designer.cs @@ -102,7 +102,7 @@ this.listBoxMaps.Name = "listBoxMaps"; this.listBoxMaps.Size = new System.Drawing.Size(170, 94); this.listBoxMaps.TabIndex = 3; - this.listBoxMaps.SelectedIndexChanged += new System.EventHandler(this.listBoxMaps_SelectedIndexChanged); + this.listBoxMaps.SelectedIndexChanged += new System.EventHandler(this.ListBoxMaps_SelectedIndexChanged); // // ButtonAddMap // diff --git a/Warship/Warship/MapWithSetWarshipsGeneric.cs b/Warship/Warship/MapWithSetWarshipsGeneric.cs index dd71782..db8be0b 100644 --- a/Warship/Warship/MapWithSetWarshipsGeneric.cs +++ b/Warship/Warship/MapWithSetWarshipsGeneric.cs @@ -107,7 +107,6 @@ namespace Warship private void DrawWarship(Graphics gr) { - //todo int width = _pictureWidth / _placeSizeWidth; int height = _pictureHeight / _placeSizeHeight; int i= 0; diff --git a/Warship/Warship/MapsCollection.cs b/Warship/Warship/MapsCollection.cs index 3ef8a96..ca45d99 100644 --- a/Warship/Warship/MapsCollection.cs +++ b/Warship/Warship/MapsCollection.cs @@ -1,4 +1,5 @@ using System; +using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; -- 2.25.1