From 93c6197387494d5a1c480d3d44bebea8cbb5fbfd Mon Sep 17 00:00:00 2001 From: RozhVan Date: Tue, 16 Apr 2024 23:46:49 +0300 Subject: [PATCH] =?UTF-8?q?5=20=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?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AiSD Lab02/AiSD Lab02.sln | 25 ++ AiSD Lab02/AiSD Lab02/AiSD_Lab02.csproj | 55 +++ AiSD Lab02/AiSD Lab02/App.config | 6 + AiSD Lab02/AiSD Lab02/EntityItem.cs | 7 + AiSD Lab02/AiSD Lab02/FibNums.cs | 64 +++ AiSD Lab02/AiSD Lab02/Program.cs | 56 +++ .../AiSD Lab02/Properties/AssemblyInfo.cs | 36 ++ AiSD_Lab/AiSD Lab02.sln | 25 ++ AiSD_Lab/AiSD Lab02/AiSD_Lab02.csproj | 55 +++ AiSD_Lab/AiSD Lab02/App.config | 6 + AiSD_Lab/AiSD Lab02/EntityItem.cs | 14 + AiSD_Lab/AiSD Lab02/FibNums.cs | 12 + AiSD_Lab/AiSD Lab02/Program.cs | 28 ++ .../AiSD Lab02/Properties/AssemblyInfo.cs | 36 ++ {AiSD_Lab1 => AiSD_Lab}/AiSD_Lab1.sln | 0 .../AiSD_Lab1/AiSD_Lab1.csproj | 0 AiSD_Lab/AiSD_Lab1/Deque.cs | 67 ++++ AiSD_Lab/AiSD_Lab1/Landmark.cs | 12 + AiSD_Lab/AiSD_Lab1/Program.cs | 27 ++ {AiSD_Lab1 => AiSD_Lab}/AiSD_Lab1/Sort.cs | 0 AiSD_Lab1/AiSD_Lab1/Deque.cs | 30 -- AiSD_Lab1/AiSD_Lab1/Node.cs | 11 - AiSD_Lab1/AiSD_Lab1/Program.cs | 1 - .../ProjectPlane/Entities/EntityContainer.cs | 5 + .../ProjectPlane/Entities/EntityShip.cs | 5 + .../FormShipCollection.Designer.cs | 164 ++++---- .../ProjectPlane/FormShipCollection.cs | 50 +-- .../ProjectPlane/FormShipConfig.Designer.cs | 365 ++++++++++++++++++ ProjectPlane/ProjectPlane/FormShipConfig.cs | 126 ++++++ ProjectPlane/ProjectPlane/FormShipConfig.resx | 120 ++++++ ProjectPlane/ProjectPlane/ShipDelegate.cs | 5 + 31 files changed, 1242 insertions(+), 171 deletions(-) create mode 100644 AiSD Lab02/AiSD Lab02.sln create mode 100644 AiSD Lab02/AiSD Lab02/AiSD_Lab02.csproj create mode 100644 AiSD Lab02/AiSD Lab02/App.config create mode 100644 AiSD Lab02/AiSD Lab02/EntityItem.cs create mode 100644 AiSD Lab02/AiSD Lab02/FibNums.cs create mode 100644 AiSD Lab02/AiSD Lab02/Program.cs create mode 100644 AiSD Lab02/AiSD Lab02/Properties/AssemblyInfo.cs create mode 100644 AiSD_Lab/AiSD Lab02.sln create mode 100644 AiSD_Lab/AiSD Lab02/AiSD_Lab02.csproj create mode 100644 AiSD_Lab/AiSD Lab02/App.config create mode 100644 AiSD_Lab/AiSD Lab02/EntityItem.cs create mode 100644 AiSD_Lab/AiSD Lab02/FibNums.cs create mode 100644 AiSD_Lab/AiSD Lab02/Program.cs create mode 100644 AiSD_Lab/AiSD Lab02/Properties/AssemblyInfo.cs rename {AiSD_Lab1 => AiSD_Lab}/AiSD_Lab1.sln (100%) rename {AiSD_Lab1 => AiSD_Lab}/AiSD_Lab1/AiSD_Lab1.csproj (100%) create mode 100644 AiSD_Lab/AiSD_Lab1/Deque.cs create mode 100644 AiSD_Lab/AiSD_Lab1/Landmark.cs create mode 100644 AiSD_Lab/AiSD_Lab1/Program.cs rename {AiSD_Lab1 => AiSD_Lab}/AiSD_Lab1/Sort.cs (100%) delete mode 100644 AiSD_Lab1/AiSD_Lab1/Deque.cs delete mode 100644 AiSD_Lab1/AiSD_Lab1/Node.cs delete mode 100644 AiSD_Lab1/AiSD_Lab1/Program.cs create mode 100644 ProjectPlane/ProjectPlane/FormShipConfig.Designer.cs create mode 100644 ProjectPlane/ProjectPlane/FormShipConfig.cs create mode 100644 ProjectPlane/ProjectPlane/FormShipConfig.resx create mode 100644 ProjectPlane/ProjectPlane/ShipDelegate.cs diff --git a/AiSD Lab02/AiSD Lab02.sln b/AiSD Lab02/AiSD Lab02.sln new file mode 100644 index 0000000..a6557e6 --- /dev/null +++ b/AiSD Lab02/AiSD Lab02.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.7.34031.279 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AiSD_Lab02", "AiSD Lab02\AiSD_Lab02.csproj", "{FA17B31D-8779-415E-B3A9-140812864D38}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {FA17B31D-8779-415E-B3A9-140812864D38}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FA17B31D-8779-415E-B3A9-140812864D38}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FA17B31D-8779-415E-B3A9-140812864D38}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FA17B31D-8779-415E-B3A9-140812864D38}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {268E47D2-9C2D-4863-BCE2-130796952BAF} + EndGlobalSection +EndGlobal diff --git a/AiSD Lab02/AiSD Lab02/AiSD_Lab02.csproj b/AiSD Lab02/AiSD Lab02/AiSD_Lab02.csproj new file mode 100644 index 0000000..548f22a --- /dev/null +++ b/AiSD Lab02/AiSD Lab02/AiSD_Lab02.csproj @@ -0,0 +1,55 @@ + + + + + Debug + AnyCPU + {FA17B31D-8779-415E-B3A9-140812864D38} + Exe + AiSD_Lab02 + AiSD Lab02 + v4.7.2 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/AiSD Lab02/AiSD Lab02/App.config b/AiSD Lab02/AiSD Lab02/App.config new file mode 100644 index 0000000..56efbc7 --- /dev/null +++ b/AiSD Lab02/AiSD Lab02/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/AiSD Lab02/AiSD Lab02/EntityItem.cs b/AiSD Lab02/AiSD Lab02/EntityItem.cs new file mode 100644 index 0000000..5697b6c --- /dev/null +++ b/AiSD Lab02/AiSD Lab02/EntityItem.cs @@ -0,0 +1,7 @@ +namespace AiSD_Lab02; +public class EntityItem +{ + public int Weight { get; set; } + public int Value { get; set; } + +} diff --git a/AiSD Lab02/AiSD Lab02/FibNums.cs b/AiSD Lab02/AiSD Lab02/FibNums.cs new file mode 100644 index 0000000..7e93c47 --- /dev/null +++ b/AiSD Lab02/AiSD Lab02/FibNums.cs @@ -0,0 +1,64 @@ +namespace AiSD_Lab02; + +public class FibNums +{ + public int Fib(int num) + { + if (num < 2) return 1; + else return Fib(num - 1) + Fib(num - 2); + } + + public void Merge(int[] array, int lowIndex, int middleIndex, int highIndex) + { + int left = lowIndex; + int right = middleIndex + 1; + int[] tempArray = new int[highIndex - lowIndex + 1]; + int index = 0; + + while ((left <= middleIndex) && (right <= highIndex)) + { + if (array[left] < array[right]) + { + tempArray[index] = array[left]; + left++; + } + else + { + tempArray[index] = array[right]; + right++; + } + + index++; + } + + for (int i = left; i <= middleIndex; i++) + { + tempArray[index] = array[i]; + index++; + } + + for (int i = right; i <= highIndex; i++) + { + tempArray[index] = array[i]; + index++; + } + + for (int i = 0; i < tempArray.Length; i++) + { + array[lowIndex + i] = tempArray[i]; + } + } + + public int[] MergeSort(int[] array, int lowIndex, int highIndex) + { + if (lowIndex < highIndex) + { + int middleInd = (lowIndex + highIndex) / 2; + MergeSort(array, lowIndex, middleInd); + MergeSort(array, middleInd + 1, highIndex); + Merge(array, lowIndex, middleInd, highIndex); + } + + return array; + } +} diff --git a/AiSD Lab02/AiSD Lab02/Program.cs b/AiSD Lab02/AiSD Lab02/Program.cs new file mode 100644 index 0000000..d11e476 --- /dev/null +++ b/AiSD Lab02/AiSD Lab02/Program.cs @@ -0,0 +1,56 @@ +using System.Collections.Generic; +using System; + +namespace AiSD_Lab02; +public class Program +{ + public static void Main(string[] args) + { + List items = new List() + { + new EntityItem { Weight = 2, Value = 10 }, + new EntityItem { Weight = 3, Value = 5 }, + new EntityItem { Weight = 5, Value = 15 }, + new EntityItem { Weight = 7, Value = 7 }, + new EntityItem { Weight = 1, Value = 6 } + }; + + int capacity = 10; + + for (int i = 0; i < items.Count - 1; i++) + { + for (int j = 0; j < items.Count - i - 1; j++) + { + double ratio1 = items[j].Value / (double)items[j].Weight; + double ratio2 = items[j + 1].Value / (double)items[j + 1].Weight; + + if (ratio1 < ratio2) + { + EntityItem temp = items[j]; + items[j] = items[j + 1]; + items[j + 1] = temp; + } + } + } + + int totalValue = 0; + int totalWeight = 0; + + foreach (EntityItem item in items) + { + if (totalWeight + item.Weight <= capacity) + { + totalValue += item.Value; + totalWeight += item.Weight; + Console.WriteLine($"Предмет: вес={item.Weight}, значение={item.Value}"); + } + } + + Console.WriteLine($"Суммарное значение: {totalValue}"); + Console.WriteLine($"Суммарный вес: {totalWeight}"); + + FibNums fibNums = new FibNums(); + Console.WriteLine(fibNums.Fib(5)); + } + +} diff --git a/AiSD Lab02/AiSD Lab02/Properties/AssemblyInfo.cs b/AiSD Lab02/AiSD Lab02/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..dfbe217 --- /dev/null +++ b/AiSD Lab02/AiSD Lab02/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов для изменения сведений, +// связанные с этой сборкой. +[assembly: AssemblyTitle("AiSD Lab02")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("AiSD Lab02")] +[assembly: AssemblyCopyright("Copyright © 2024")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// из модели COM задайте для атрибута ComVisible этого типа значение true. +[assembly: ComVisible(false)] + +// Следующий GUID представляет идентификатор typelib, если этот проект доступен из модели COM +[assembly: Guid("fa17b31d-8779-415e-b3a9-140812864d38")] + +// Сведения о версии сборки состоят из указанных ниже четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Номер редакции +// +// Можно задать все значения или принять номера сборки и редакции по умолчанию +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/AiSD_Lab/AiSD Lab02.sln b/AiSD_Lab/AiSD Lab02.sln new file mode 100644 index 0000000..1db5ae1 --- /dev/null +++ b/AiSD_Lab/AiSD Lab02.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.7.34031.279 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AiSD Lab02", "AiSD Lab02\AiSD Lab02.csproj", "{FA17B31D-8779-415E-B3A9-140812864D38}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {FA17B31D-8779-415E-B3A9-140812864D38}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FA17B31D-8779-415E-B3A9-140812864D38}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FA17B31D-8779-415E-B3A9-140812864D38}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FA17B31D-8779-415E-B3A9-140812864D38}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {268E47D2-9C2D-4863-BCE2-130796952BAF} + EndGlobalSection +EndGlobal diff --git a/AiSD_Lab/AiSD Lab02/AiSD_Lab02.csproj b/AiSD_Lab/AiSD Lab02/AiSD_Lab02.csproj new file mode 100644 index 0000000..5e6c43d --- /dev/null +++ b/AiSD_Lab/AiSD Lab02/AiSD_Lab02.csproj @@ -0,0 +1,55 @@ + + + + + Debug + AnyCPU + {FA17B31D-8779-415E-B3A9-140812864D38} + Exe + AiSD_Lab02 + AiSD Lab02 + v4.7.2 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/AiSD_Lab/AiSD Lab02/App.config b/AiSD_Lab/AiSD Lab02/App.config new file mode 100644 index 0000000..56efbc7 --- /dev/null +++ b/AiSD_Lab/AiSD Lab02/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/AiSD_Lab/AiSD Lab02/EntityItem.cs b/AiSD_Lab/AiSD Lab02/EntityItem.cs new file mode 100644 index 0000000..78144dd --- /dev/null +++ b/AiSD_Lab/AiSD Lab02/EntityItem.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +public class EntityItem +{ + public int Weight { get; set; } + public int Value { get; set; } + + public EntityItem(int weight, int value) + { + Weight = weight; + Value = value; + } +} diff --git a/AiSD_Lab/AiSD Lab02/FibNums.cs b/AiSD_Lab/AiSD Lab02/FibNums.cs new file mode 100644 index 0000000..49de6df --- /dev/null +++ b/AiSD_Lab/AiSD Lab02/FibNums.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace AiSD_Lab02 +{ + internal class FibNums + { + } +} diff --git a/AiSD_Lab/AiSD Lab02/Program.cs b/AiSD_Lab/AiSD Lab02/Program.cs new file mode 100644 index 0000000..b1dc6b2 --- /dev/null +++ b/AiSD_Lab/AiSD Lab02/Program.cs @@ -0,0 +1,28 @@ +using System.Collections.Generic; +using System; + +public class Program +{ + public static void Main(string[] args) + { + List items = new List() + { + new EntityItem(2, 10), + new EntityItem(3, 5), + new EntityItem(5, 15), + new EntityItem(7, 7), + new EntityItem(1, 6) + }; + + int capacity = 10; + + List result = FillKnapsack(items, capacity); + + Console.WriteLine("Предмет в рюкзаке:"); + foreach (EntityItem item in result) + { + Console.WriteLine($"Вес: {item.Weight}, Стоимость: {item.Value}"); + } + } +} +} diff --git a/AiSD_Lab/AiSD Lab02/Properties/AssemblyInfo.cs b/AiSD_Lab/AiSD Lab02/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..dfbe217 --- /dev/null +++ b/AiSD_Lab/AiSD Lab02/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов для изменения сведений, +// связанные с этой сборкой. +[assembly: AssemblyTitle("AiSD Lab02")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("AiSD Lab02")] +[assembly: AssemblyCopyright("Copyright © 2024")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// из модели COM задайте для атрибута ComVisible этого типа значение true. +[assembly: ComVisible(false)] + +// Следующий GUID представляет идентификатор typelib, если этот проект доступен из модели COM +[assembly: Guid("fa17b31d-8779-415e-b3a9-140812864d38")] + +// Сведения о версии сборки состоят из указанных ниже четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Номер редакции +// +// Можно задать все значения или принять номера сборки и редакции по умолчанию +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/AiSD_Lab1/AiSD_Lab1.sln b/AiSD_Lab/AiSD_Lab1.sln similarity index 100% rename from AiSD_Lab1/AiSD_Lab1.sln rename to AiSD_Lab/AiSD_Lab1.sln diff --git a/AiSD_Lab1/AiSD_Lab1/AiSD_Lab1.csproj b/AiSD_Lab/AiSD_Lab1/AiSD_Lab1.csproj similarity index 100% rename from AiSD_Lab1/AiSD_Lab1/AiSD_Lab1.csproj rename to AiSD_Lab/AiSD_Lab1/AiSD_Lab1.csproj diff --git a/AiSD_Lab/AiSD_Lab1/Deque.cs b/AiSD_Lab/AiSD_Lab1/Deque.cs new file mode 100644 index 0000000..fa3275e --- /dev/null +++ b/AiSD_Lab/AiSD_Lab1/Deque.cs @@ -0,0 +1,67 @@ +using static System.Runtime.InteropServices.JavaScript.JSType; + +namespace AiSD_Lab1; + +public class Deque +{ + Landmark first; + + public Deque(string data) + { + Landmark newEl = new Landmark(data); + first = newEl; + } + + public void AddFirst(string data) + { + Landmark newEl = new Landmark(data); + newEl.next = first; + first = newEl; + } + + + public Landmark RemoveFirst() + { + Landmark delEl = first; + first = delEl.next; + delEl.next = null; + return delEl; + } + + public void RemoveLast() + { + Landmark delEl = first; + while (delEl.next.next != null) + { + delEl = delEl.next; + } + delEl.next = null; + } + + public void AddLast(string data) + { + Landmark newEl = first; + while (newEl.next != null) + { + newEl = newEl.next; + } + newEl.next = new Landmark(data); + } + + public string GetAll() + { + string Deque = ""; + + Landmark curr = first; + + while (curr.next != null) + { + Deque += " " + curr.data; + curr = curr.next; + } + Deque += " " + curr.data; + + return Deque; + } + +} \ No newline at end of file diff --git a/AiSD_Lab/AiSD_Lab1/Landmark.cs b/AiSD_Lab/AiSD_Lab1/Landmark.cs new file mode 100644 index 0000000..a2a31d0 --- /dev/null +++ b/AiSD_Lab/AiSD_Lab1/Landmark.cs @@ -0,0 +1,12 @@ +namespace AiSD_Lab1; + +public class Landmark +{ + public String data; + public Landmark next; + + public Landmark(String _data) + { + data = _data; + } +} \ No newline at end of file diff --git a/AiSD_Lab/AiSD_Lab1/Program.cs b/AiSD_Lab/AiSD_Lab1/Program.cs new file mode 100644 index 0000000..7456df6 --- /dev/null +++ b/AiSD_Lab/AiSD_Lab1/Program.cs @@ -0,0 +1,27 @@ +using System; + +namespace AiSD_Lab1; + +public class Program +{ + public static void Main(String[] args) + { + Console.WriteLine("Сортировка слиянием"); + Sort sort = new Sort(); + sort.RandomArr(); + sort.PrintArr(); + sort.MergeSort(sort.arr, 0, sort.arr.Length - 1); + sort.PrintArr(); + + Deque deque = new Deque("Статуя свободы"); + Console.WriteLine(deque.GetAll()); + deque.AddFirst("Успенский собор"); + Console.WriteLine(deque.GetAll()); + deque.AddLast("Эйфелева башня"); + Console.WriteLine(deque.GetAll()); + deque.RemoveLast(); + Console.WriteLine(deque.GetAll()); + deque.RemoveFirst(); + Console.WriteLine(deque.GetAll()); + } +} diff --git a/AiSD_Lab1/AiSD_Lab1/Sort.cs b/AiSD_Lab/AiSD_Lab1/Sort.cs similarity index 100% rename from AiSD_Lab1/AiSD_Lab1/Sort.cs rename to AiSD_Lab/AiSD_Lab1/Sort.cs diff --git a/AiSD_Lab1/AiSD_Lab1/Deque.cs b/AiSD_Lab1/AiSD_Lab1/Deque.cs deleted file mode 100644 index 777a6f1..0000000 --- a/AiSD_Lab1/AiSD_Lab1/Deque.cs +++ /dev/null @@ -1,30 +0,0 @@ -namespace AiSD_Lab1; - -public class Deque : Node -{ - Node? head; - - Node? tail; - - int count; - - public AddFirst(T node) - { - - } - - public AddLast(T node) - { - - } - - public RemoveFirst() - { - - } - - public RemoveLast() - { - - } -} \ No newline at end of file diff --git a/AiSD_Lab1/AiSD_Lab1/Node.cs b/AiSD_Lab1/AiSD_Lab1/Node.cs deleted file mode 100644 index f3fbda8..0000000 --- a/AiSD_Lab1/AiSD_Lab1/Node.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace AiSD_Lab1; - -public class Node -{ - public Node(T data) - { - Data = data; - } - public T Data { get; set; } - public Node? Next { get; set; } -} \ No newline at end of file diff --git a/AiSD_Lab1/AiSD_Lab1/Program.cs b/AiSD_Lab1/AiSD_Lab1/Program.cs deleted file mode 100644 index 5f28270..0000000 --- a/AiSD_Lab1/AiSD_Lab1/Program.cs +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/ProjectPlane/ProjectPlane/Entities/EntityContainer.cs b/ProjectPlane/ProjectPlane/Entities/EntityContainer.cs index a23e130..09f6381 100644 --- a/ProjectPlane/ProjectPlane/Entities/EntityContainer.cs +++ b/ProjectPlane/ProjectPlane/Entities/EntityContainer.cs @@ -25,4 +25,9 @@ public class EntityContainer : EntityShip Container = container; Crane = crane; } + + public void ContainerColorChange(Color newColor) + { + ContainerColor = newColor; + } } diff --git a/ProjectPlane/ProjectPlane/Entities/EntityShip.cs b/ProjectPlane/ProjectPlane/Entities/EntityShip.cs index 5024a95..26a5dd7 100644 --- a/ProjectPlane/ProjectPlane/Entities/EntityShip.cs +++ b/ProjectPlane/ProjectPlane/Entities/EntityShip.cs @@ -21,4 +21,9 @@ public class EntityShip Weight = weight; ShipColor = shipColor; } + + public void ShipColorChange(Color newColor) + { + ShipColor = newColor; + } } \ No newline at end of file diff --git a/ProjectPlane/ProjectPlane/FormShipCollection.Designer.cs b/ProjectPlane/ProjectPlane/FormShipCollection.Designer.cs index 2de725b..d31cda8 100644 --- a/ProjectPlane/ProjectPlane/FormShipCollection.Designer.cs +++ b/ProjectPlane/ProjectPlane/FormShipCollection.Designer.cs @@ -29,6 +29,12 @@ private void InitializeComponent() { groupBoxTools = new GroupBox(); + panelCompanyTools = new Panel(); + ButtonAddShip = new Button(); + maskedTextBoxPosition = new MaskedTextBox(); + ButtonRefresh = new Button(); + ButtonDel = new Button(); + ButtonGoToCheck = new Button(); ButtonCreateCompany = new Button(); panelStorage = new Panel(); radioButtonMassive = new RadioButton(); @@ -38,19 +44,12 @@ radioButtonList = new RadioButton(); textBoxCollectionName = new TextBox(); labelCollectionName = new Label(); - ButtonRefresh = new Button(); - ButtonGoToCheck = new Button(); - ButtonDel = new Button(); - maskedTextBoxPosition = new MaskedTextBox(); - ButtonAddCont = new Button(); - ButtonAddShip = new Button(); ComboBoxSelectorCompany = new ComboBox(); pictureBox = new PictureBox(); - panelCompanyTools = new Panel(); groupBoxTools.SuspendLayout(); + panelCompanyTools.SuspendLayout(); panelStorage.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)pictureBox).BeginInit(); - panelCompanyTools.SuspendLayout(); SuspendLayout(); // // groupBoxTools @@ -67,6 +66,72 @@ groupBoxTools.TabStop = false; groupBoxTools.Text = "Инструменты"; // + // panelCompanyTools + // + panelCompanyTools.Controls.Add(ButtonAddShip); + panelCompanyTools.Controls.Add(maskedTextBoxPosition); + panelCompanyTools.Controls.Add(ButtonRefresh); + panelCompanyTools.Controls.Add(ButtonDel); + panelCompanyTools.Controls.Add(ButtonGoToCheck); + panelCompanyTools.Enabled = false; + panelCompanyTools.Location = new Point(3, 400); + panelCompanyTools.Name = "panelCompanyTools"; + panelCompanyTools.Size = new Size(194, 274); + panelCompanyTools.TabIndex = 9; + // + // ButtonAddShip + // + ButtonAddShip.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right; + ButtonAddShip.Location = new Point(6, 20); + ButtonAddShip.Name = "ButtonAddShip"; + ButtonAddShip.Size = new Size(182, 40); + ButtonAddShip.TabIndex = 1; + ButtonAddShip.Text = "Добавление корабля"; + ButtonAddShip.UseVisualStyleBackColor = true; + ButtonAddShip.Click += ButtonAddShip_Click; + // + // maskedTextBoxPosition + // + maskedTextBoxPosition.Location = new Point(6, 111); + maskedTextBoxPosition.Mask = "00"; + maskedTextBoxPosition.Name = "maskedTextBoxPosition"; + maskedTextBoxPosition.Size = new Size(188, 23); + maskedTextBoxPosition.TabIndex = 3; + maskedTextBoxPosition.ValidatingType = typeof(int); + // + // ButtonRefresh + // + ButtonRefresh.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right; + ButtonRefresh.Location = new Point(6, 230); + ButtonRefresh.Name = "ButtonRefresh"; + ButtonRefresh.Size = new Size(182, 39); + ButtonRefresh.TabIndex = 6; + ButtonRefresh.Text = "Обновить"; + ButtonRefresh.UseVisualStyleBackColor = true; + ButtonRefresh.Click += ButtonRefresh_Click; + // + // ButtonDel + // + ButtonDel.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right; + ButtonDel.Location = new Point(6, 140); + ButtonDel.Name = "ButtonDel"; + ButtonDel.Size = new Size(182, 39); + ButtonDel.TabIndex = 4; + ButtonDel.Text = "Удплить контейнеровоз"; + ButtonDel.UseVisualStyleBackColor = true; + ButtonDel.Click += ButtonDel_Click; + // + // ButtonGoToCheck + // + ButtonGoToCheck.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right; + ButtonGoToCheck.Location = new Point(6, 185); + ButtonGoToCheck.Name = "ButtonGoToCheck"; + ButtonGoToCheck.Size = new Size(182, 39); + ButtonGoToCheck.TabIndex = 5; + ButtonGoToCheck.Text = "Передать на тесты"; + ButtonGoToCheck.UseVisualStyleBackColor = true; + ButtonGoToCheck.Click += ButtonGoToCheck_Click; + // // ButtonCreateCompany // ButtonCreateCompany.Location = new Point(6, 371); @@ -159,70 +224,6 @@ labelCollectionName.TabIndex = 0; labelCollectionName.Text = "Название коллекции:"; // - // ButtonRefresh - // - ButtonRefresh.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right; - ButtonRefresh.Location = new Point(6, 230); - ButtonRefresh.Name = "ButtonRefresh"; - ButtonRefresh.Size = new Size(182, 39); - ButtonRefresh.TabIndex = 6; - ButtonRefresh.Text = "Обновить"; - ButtonRefresh.UseVisualStyleBackColor = true; - ButtonRefresh.Click += ButtonRefresh_Click; - // - // ButtonGoToCheck - // - ButtonGoToCheck.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right; - ButtonGoToCheck.Location = new Point(6, 185); - ButtonGoToCheck.Name = "ButtonGoToCheck"; - ButtonGoToCheck.Size = new Size(182, 39); - ButtonGoToCheck.TabIndex = 5; - ButtonGoToCheck.Text = "Передать на тесты"; - ButtonGoToCheck.UseVisualStyleBackColor = true; - ButtonGoToCheck.Click += ButtonGoToCheck_Click; - // - // ButtonDel - // - ButtonDel.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right; - ButtonDel.Location = new Point(6, 140); - ButtonDel.Name = "ButtonDel"; - ButtonDel.Size = new Size(182, 39); - ButtonDel.TabIndex = 4; - ButtonDel.Text = "Удплить контейнеровоз"; - ButtonDel.UseVisualStyleBackColor = true; - ButtonDel.Click += ButtonDel_Click; - // - // maskedTextBoxPosition - // - maskedTextBoxPosition.Location = new Point(6, 111); - maskedTextBoxPosition.Mask = "00"; - maskedTextBoxPosition.Name = "maskedTextBoxPosition"; - maskedTextBoxPosition.Size = new Size(188, 23); - maskedTextBoxPosition.TabIndex = 3; - maskedTextBoxPosition.ValidatingType = typeof(int); - // - // ButtonAddCont - // - ButtonAddCont.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right; - ButtonAddCont.Location = new Point(6, 66); - ButtonAddCont.Name = "ButtonAddCont"; - ButtonAddCont.Size = new Size(182, 39); - ButtonAddCont.TabIndex = 2; - ButtonAddCont.Text = "Добавление контейнеровоза"; - ButtonAddCont.UseVisualStyleBackColor = true; - ButtonAddCont.Click += ButtonAddCont_Click; - // - // ButtonAddShip - // - ButtonAddShip.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right; - ButtonAddShip.Location = new Point(6, 20); - ButtonAddShip.Name = "ButtonAddShip"; - ButtonAddShip.Size = new Size(182, 40); - ButtonAddShip.TabIndex = 1; - ButtonAddShip.Text = "Добавление корабля"; - ButtonAddShip.UseVisualStyleBackColor = true; - ButtonAddShip.Click += ButtonAddShip_Click; - // // ComboBoxSelectorCompany // ComboBoxSelectorCompany.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right; @@ -244,20 +245,6 @@ pictureBox.TabIndex = 1; pictureBox.TabStop = false; // - // panelCompanyTools - // - panelCompanyTools.Controls.Add(ButtonAddShip); - panelCompanyTools.Controls.Add(ButtonAddCont); - panelCompanyTools.Controls.Add(maskedTextBoxPosition); - panelCompanyTools.Controls.Add(ButtonRefresh); - panelCompanyTools.Controls.Add(ButtonDel); - panelCompanyTools.Controls.Add(ButtonGoToCheck); - panelCompanyTools.Enabled = false; - panelCompanyTools.Location = new Point(3, 400); - panelCompanyTools.Name = "panelCompanyTools"; - panelCompanyTools.Size = new Size(194, 274); - panelCompanyTools.TabIndex = 9; - // // FormShipCollection // AutoScaleDimensions = new SizeF(7F, 15F); @@ -268,11 +255,11 @@ Name = "FormShipCollection"; Text = "Коллекция кораблей"; groupBoxTools.ResumeLayout(false); + panelCompanyTools.ResumeLayout(false); + panelCompanyTools.PerformLayout(); panelStorage.ResumeLayout(false); panelStorage.PerformLayout(); ((System.ComponentModel.ISupportInitialize)pictureBox).EndInit(); - panelCompanyTools.ResumeLayout(false); - panelCompanyTools.PerformLayout(); ResumeLayout(false); } @@ -280,7 +267,6 @@ private GroupBox groupBoxTools; private ComboBox ComboBoxSelectorCompany; - private Button ButtonAddCont; private Button ButtonAddShip; private PictureBox pictureBox; private MaskedTextBox maskedTextBoxPosition; diff --git a/ProjectPlane/ProjectPlane/FormShipCollection.cs b/ProjectPlane/ProjectPlane/FormShipCollection.cs index 06650ed..0e3b4fb 100644 --- a/ProjectPlane/ProjectPlane/FormShipCollection.cs +++ b/ProjectPlane/ProjectPlane/FormShipCollection.cs @@ -20,30 +20,21 @@ public partial class FormShipCollection : Form panelCompanyTools.Enabled = false; } - private void CreateObject(string type) + private void ButtonAddShip_Click(object sender, EventArgs e) { - if (_company == null) + FormShipConfig form = new(); + form.AddEvent(SetShip); + form.Show(); + } + + private void SetShip(DrawningShip? ship) + { + if (_company == null || ship == null) { return; } - - Random random = new Random(); - DrawningShip drawShip; - switch (type) - { - case nameof(DrawningShip): - drawShip = new DrawningShip(random.Next(100, 300), random.Next(1000, 3000), GetColor(random)); - break; - case nameof(DrawCont): - drawShip = new DrawCont(random.Next(100, 300), random.Next(1000, 3000), - GetColor(random), GetColor(random), Convert.ToBoolean(random.Next(0, 2)), Convert.ToBoolean(random.Next(0, 2))); - break; - default: - return; - } - - if (_company + drawShip != -1) + if (_company + ship != -1) { MessageBox.Show("Объект добавлен"); pictureBox.Image = _company.Show(); @@ -54,21 +45,6 @@ public partial class FormShipCollection : Form } } - private static Color GetColor(Random random) - { - 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; - } - return color; - } - - private void ButtonAddShip_Click(object sender, EventArgs e) => CreateObject(nameof(DrawningShip)); - - private void ButtonAddCont_Click(object sender, EventArgs e) => CreateObject(nameof(DrawCont)); - private void ButtonDel_Click(object sender, EventArgs e) { @@ -136,11 +112,6 @@ public partial class FormShipCollection : Form pictureBox.Image = _company.Show(); } - private void RadioButtonMassive_CheckedChanged(object sender, EventArgs e) - { - - } - private void RerfreshListBoxItems() { listBoxCollection.Items.Clear(); @@ -154,7 +125,6 @@ public partial class FormShipCollection : Form } } - private void ButtonCollectionAdd_Click(object sender, EventArgs e) { if (string.IsNullOrEmpty(textBoxCollectionName.Text) || (!radioButtonList.Checked && !radioButtonMassive.Checked)) diff --git a/ProjectPlane/ProjectPlane/FormShipConfig.Designer.cs b/ProjectPlane/ProjectPlane/FormShipConfig.Designer.cs new file mode 100644 index 0000000..52c3fcf --- /dev/null +++ b/ProjectPlane/ProjectPlane/FormShipConfig.Designer.cs @@ -0,0 +1,365 @@ +namespace ProjectPlane +{ + partial class FormShipConfig + { + /// + /// 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() + { + groupBoxConfig = new GroupBox(); + groupBoxColors = new GroupBox(); + panelPurple = new Panel(); + panelYellow = new Panel(); + panelBlack = new Panel(); + panelBlue = new Panel(); + panelGray = new Panel(); + panelWhite = new Panel(); + panelGreen = new Panel(); + panelRed = new Panel(); + checkBoxCrane = new CheckBox(); + checkBoxContainer = new CheckBox(); + numericUpDownWeight = new NumericUpDown(); + numericUpDownSpeed = new NumericUpDown(); + labelWeight = new Label(); + labelSpeed = new Label(); + labelModifiedObject = new Label(); + labelSimpleObject = new Label(); + pictureBoxObject = new PictureBox(); + buttonAdd = new Button(); + buttonCancel = new Button(); + panelObject = new Panel(); + labelContainerColor = new Label(); + labelShipColor = new Label(); + groupBoxConfig.SuspendLayout(); + groupBoxColors.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)numericUpDownWeight).BeginInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDownSpeed).BeginInit(); + ((System.ComponentModel.ISupportInitialize)pictureBoxObject).BeginInit(); + panelObject.SuspendLayout(); + SuspendLayout(); + // + // groupBoxConfig + // + groupBoxConfig.Controls.Add(groupBoxColors); + groupBoxConfig.Controls.Add(checkBoxCrane); + groupBoxConfig.Controls.Add(checkBoxContainer); + groupBoxConfig.Controls.Add(numericUpDownWeight); + groupBoxConfig.Controls.Add(numericUpDownSpeed); + groupBoxConfig.Controls.Add(labelWeight); + groupBoxConfig.Controls.Add(labelSpeed); + groupBoxConfig.Controls.Add(labelModifiedObject); + groupBoxConfig.Controls.Add(labelSimpleObject); + groupBoxConfig.Dock = DockStyle.Left; + groupBoxConfig.Location = new Point(0, 0); + groupBoxConfig.Name = "groupBoxConfig"; + groupBoxConfig.Size = new Size(571, 222); + groupBoxConfig.TabIndex = 0; + groupBoxConfig.TabStop = false; + groupBoxConfig.Text = "Параметры"; + // + // groupBoxColors + // + groupBoxColors.Controls.Add(panelPurple); + groupBoxColors.Controls.Add(panelYellow); + groupBoxColors.Controls.Add(panelBlack); + groupBoxColors.Controls.Add(panelBlue); + groupBoxColors.Controls.Add(panelGray); + groupBoxColors.Controls.Add(panelWhite); + groupBoxColors.Controls.Add(panelGreen); + groupBoxColors.Controls.Add(panelRed); + groupBoxColors.Location = new Point(266, 30); + groupBoxColors.Name = "groupBoxColors"; + groupBoxColors.Size = new Size(253, 119); + groupBoxColors.TabIndex = 8; + groupBoxColors.TabStop = false; + groupBoxColors.Text = "Цвета"; + // + // panelPurple + // + panelPurple.BackColor = Color.Purple; + panelPurple.Location = new Point(190, 70); + panelPurple.Name = "panelPurple"; + panelPurple.Size = new Size(43, 40); + panelPurple.TabIndex = 3; + panelPurple.MouseDown += Panel_MouseDown; + // + // panelYellow + // + panelYellow.BackColor = Color.Yellow; + panelYellow.Location = new Point(190, 22); + panelYellow.Name = "panelYellow"; + panelYellow.Size = new Size(43, 40); + panelYellow.TabIndex = 1; + panelYellow.MouseDown += Panel_MouseDown; + // + // panelBlack + // + panelBlack.BackColor = Color.Black; + panelBlack.Location = new Point(129, 70); + panelBlack.Name = "panelBlack"; + panelBlack.Size = new Size(43, 40); + panelBlack.TabIndex = 4; + panelBlack.MouseDown += Panel_MouseDown; + // + // panelBlue + // + panelBlue.BackColor = Color.Blue; + panelBlue.Location = new Point(129, 22); + panelBlue.Name = "panelBlue"; + panelBlue.Size = new Size(43, 40); + panelBlue.TabIndex = 1; + panelBlue.MouseDown += Panel_MouseDown; + // + // panelGray + // + panelGray.BackColor = Color.Gray; + panelGray.Location = new Point(71, 70); + panelGray.Name = "panelGray"; + panelGray.Size = new Size(43, 40); + panelGray.TabIndex = 5; + panelGray.MouseDown += Panel_MouseDown; + // + // panelWhite + // + panelWhite.BackColor = Color.White; + panelWhite.Location = new Point(14, 70); + panelWhite.Name = "panelWhite"; + panelWhite.Size = new Size(43, 40); + panelWhite.TabIndex = 2; + panelWhite.MouseDown += Panel_MouseDown; + // + // panelGreen + // + panelGreen.BackColor = Color.Green; + panelGreen.Location = new Point(71, 22); + panelGreen.Name = "panelGreen"; + panelGreen.Size = new Size(43, 40); + panelGreen.TabIndex = 1; + panelGreen.MouseDown += Panel_MouseDown; + // + // panelRed + // + panelRed.BackColor = Color.Red; + panelRed.Location = new Point(14, 22); + panelRed.Name = "panelRed"; + panelRed.Size = new Size(43, 40); + panelRed.TabIndex = 0; + panelRed.MouseDown += Panel_MouseDown; + // + // checkBoxCrane + // + checkBoxCrane.AutoSize = true; + checkBoxCrane.Location = new Point(37, 160); + checkBoxCrane.Name = "checkBoxCrane"; + checkBoxCrane.Size = new Size(158, 19); + checkBoxCrane.TabIndex = 7; + checkBoxCrane.Text = "Признак наличия крана"; + checkBoxCrane.UseVisualStyleBackColor = true; + // + // checkBoxContainer + // + checkBoxContainer.AutoSize = true; + checkBoxContainer.Location = new Point(37, 121); + checkBoxContainer.Name = "checkBoxContainer"; + checkBoxContainer.Size = new Size(190, 19); + checkBoxContainer.TabIndex = 6; + checkBoxContainer.Text = "Признак наличия контейнера"; + checkBoxContainer.UseVisualStyleBackColor = true; + // + // numericUpDownWeight + // + numericUpDownWeight.Location = new Point(105, 59); + numericUpDownWeight.Maximum = new decimal(new int[] { 1000, 0, 0, 0 }); + numericUpDownWeight.Minimum = new decimal(new int[] { 100, 0, 0, 0 }); + numericUpDownWeight.Name = "numericUpDownWeight"; + numericUpDownWeight.Size = new Size(122, 23); + numericUpDownWeight.TabIndex = 5; + numericUpDownWeight.Value = new decimal(new int[] { 100, 0, 0, 0 }); + // + // numericUpDownSpeed + // + numericUpDownSpeed.Location = new Point(105, 30); + numericUpDownSpeed.Maximum = new decimal(new int[] { 1000, 0, 0, 0 }); + numericUpDownSpeed.Minimum = new decimal(new int[] { 100, 0, 0, 0 }); + numericUpDownSpeed.Name = "numericUpDownSpeed"; + numericUpDownSpeed.Size = new Size(122, 23); + numericUpDownSpeed.TabIndex = 4; + numericUpDownSpeed.Value = new decimal(new int[] { 100, 0, 0, 0 }); + // + // labelWeight + // + labelWeight.AutoSize = true; + labelWeight.Location = new Point(37, 59); + labelWeight.Name = "labelWeight"; + labelWeight.Size = new Size(29, 15); + labelWeight.TabIndex = 3; + labelWeight.Text = "Вес:"; + // + // labelSpeed + // + labelSpeed.AutoSize = true; + labelSpeed.Location = new Point(37, 30); + labelSpeed.Name = "labelSpeed"; + labelSpeed.Size = new Size(62, 15); + labelSpeed.TabIndex = 2; + labelSpeed.Text = "Скорость:"; + // + // labelModifiedObject + // + labelModifiedObject.BorderStyle = BorderStyle.FixedSingle; + labelModifiedObject.Location = new Point(419, 160); + labelModifiedObject.Name = "labelModifiedObject"; + labelModifiedObject.Size = new Size(100, 38); + labelModifiedObject.TabIndex = 1; + labelModifiedObject.Text = "Продвинутый"; + labelModifiedObject.TextAlign = ContentAlignment.MiddleCenter; + labelModifiedObject.MouseDown += LabelObject_MouseDown; + // + // labelSimpleObject + // + labelSimpleObject.BorderStyle = BorderStyle.FixedSingle; + labelSimpleObject.Location = new Point(266, 160); + labelSimpleObject.Name = "labelSimpleObject"; + labelSimpleObject.Size = new Size(100, 38); + labelSimpleObject.TabIndex = 0; + labelSimpleObject.Text = "Простой"; + labelSimpleObject.TextAlign = ContentAlignment.MiddleCenter; + labelSimpleObject.MouseDown += LabelObject_MouseDown; + // + // pictureBoxObject + // + pictureBoxObject.Location = new Point(11, 47); + pictureBoxObject.Name = "pictureBoxObject"; + pictureBoxObject.Size = new Size(209, 110); + pictureBoxObject.TabIndex = 1; + pictureBoxObject.TabStop = false; + // + // buttonAdd + // + buttonAdd.Location = new Point(588, 187); + buttonAdd.Name = "buttonAdd"; + buttonAdd.Size = new Size(75, 23); + buttonAdd.TabIndex = 2; + buttonAdd.Text = "Добавить"; + buttonAdd.UseVisualStyleBackColor = true; + buttonAdd.Click += ButtonAdd_Click; + // + // buttonCancel + // + buttonCancel.Location = new Point(722, 187); + buttonCancel.Name = "buttonCancel"; + buttonCancel.Size = new Size(75, 23); + buttonCancel.TabIndex = 3; + buttonCancel.Text = "Отмена"; + buttonCancel.UseVisualStyleBackColor = true; + // + // panelObject + // + panelObject.AllowDrop = true; + panelObject.Controls.Add(labelContainerColor); + panelObject.Controls.Add(labelShipColor); + panelObject.Controls.Add(pictureBoxObject); + panelObject.Location = new Point(577, 12); + panelObject.Name = "panelObject"; + panelObject.Size = new Size(229, 167); + panelObject.TabIndex = 4; + panelObject.DragDrop += PanelObject_DragDrop; + panelObject.DragEnter += PanelObject_DragEnter; + // + // labelContainerColor + // + labelContainerColor.AllowDrop = true; + labelContainerColor.BorderStyle = BorderStyle.FixedSingle; + labelContainerColor.Location = new Point(117, 8); + labelContainerColor.Name = "labelContainerColor"; + labelContainerColor.Size = new Size(100, 33); + labelContainerColor.TabIndex = 3; + labelContainerColor.Text = "Доп цвет"; + labelContainerColor.TextAlign = ContentAlignment.MiddleCenter; + labelContainerColor.DragDrop += LabelAdditionalColor_DragDrop; + labelContainerColor.DragEnter += LabelAdditionalColor_DragEnter; + // + // labelShipColor + // + labelShipColor.AllowDrop = true; + labelShipColor.BorderStyle = BorderStyle.FixedSingle; + labelShipColor.Location = new Point(11, 8); + labelShipColor.Name = "labelShipColor"; + labelShipColor.Size = new Size(100, 33); + labelShipColor.TabIndex = 2; + labelShipColor.Text = "Цвет"; + labelShipColor.TextAlign = ContentAlignment.MiddleCenter; + labelShipColor.DragDrop += LabelBodyColor_DragDrop; + labelShipColor.DragEnter += LabelBodyColor_DragEnter; + // + // FormShipConfig + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(809, 222); + Controls.Add(panelObject); + Controls.Add(buttonCancel); + Controls.Add(buttonAdd); + Controls.Add(groupBoxConfig); + Name = "FormShipConfig"; + Text = "Создание объекта"; + groupBoxConfig.ResumeLayout(false); + groupBoxConfig.PerformLayout(); + groupBoxColors.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)numericUpDownWeight).EndInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDownSpeed).EndInit(); + ((System.ComponentModel.ISupportInitialize)pictureBoxObject).EndInit(); + panelObject.ResumeLayout(false); + ResumeLayout(false); + } + + #endregion + + private GroupBox groupBoxConfig; + private Label labelModifiedObject; + private Label labelSimpleObject; + private Label labelSpeed; + private NumericUpDown numericUpDownWeight; + private NumericUpDown numericUpDownSpeed; + private Label labelWeight; + private CheckBox checkBoxCrane; + private CheckBox checkBoxContainer; + private GroupBox groupBoxColors; + private Panel panelRed; + private Panel panelPurple; + private Panel panelYellow; + private Panel panelBlack; + private Panel panelBlue; + private Panel panelGray; + private Panel panelWhite; + private Panel panelGreen; + private PictureBox pictureBoxObject; + private Button buttonAdd; + private Button buttonCancel; + private Panel panelObject; + private Label labelContainerColor; + private Label labelShipColor; + } +} \ No newline at end of file diff --git a/ProjectPlane/ProjectPlane/FormShipConfig.cs b/ProjectPlane/ProjectPlane/FormShipConfig.cs new file mode 100644 index 0000000..4d7a90c --- /dev/null +++ b/ProjectPlane/ProjectPlane/FormShipConfig.cs @@ -0,0 +1,126 @@ +using ProjectPlane.Drawnings; +using ProjectPlane.Entities; +namespace ProjectPlane; + +public partial class FormShipConfig : Form +{ + private DrawningShip? _ship; + + private event Action? ShipDelegate; + + public FormShipConfig() + { + InitializeComponent(); + + panelRed.MouseDown += Panel_MouseDown; + panelGreen.MouseDown += Panel_MouseDown; + panelBlue.MouseDown += Panel_MouseDown; + panelYellow.MouseDown += Panel_MouseDown; + panelWhite.MouseDown += Panel_MouseDown; + panelGray.MouseDown += Panel_MouseDown; + panelBlack.MouseDown += Panel_MouseDown; + panelPurple.MouseDown += Panel_MouseDown; + + buttonCancel.Click += (sender, e) => Close(); + } + + private void DrawObject() + { + Bitmap bmp = new(pictureBoxObject.Width, pictureBoxObject.Height); + Graphics gr = Graphics.FromImage(bmp); + _ship?.SetPictureSize(pictureBoxObject.Width, + pictureBoxObject.Height); + _ship?.SetPosition(15, 15); + _ship?.DrawTransport(gr); + pictureBoxObject.Image = bmp; + } + + public void AddEvent(Action shipDelegate) + { + ShipDelegate += shipDelegate; + } + + private void LabelObject_MouseDown(object sender, MouseEventArgs e) + { + (sender as Label)?.DoDragDrop((sender as Label)?.Name ?? string.Empty, DragDropEffects.Move | DragDropEffects.Copy); + } + + private void PanelObject_DragEnter(object sender, DragEventArgs e) + { + e.Effect = e.Data?.GetDataPresent(DataFormats.Text) ?? false ? DragDropEffects.Copy : DragDropEffects.None; + } + + private void PanelObject_DragDrop(object sender, DragEventArgs e) + { + switch (e.Data?.GetData(DataFormats.Text)?.ToString()) + { + case "labelSimpleObject": + _ship = new DrawningShip((int)numericUpDownSpeed.Value, + (double)numericUpDownWeight.Value, Color.White); + break; + case "labelModifiedObject": + _ship = new + DrawCont((int)numericUpDownSpeed.Value, (double)numericUpDownWeight.Value, + Color.White, + Color.Black, checkBoxContainer.Checked, + checkBoxCrane.Checked); + break; + } + DrawObject(); + } + + private void Panel_MouseDown(object? sender, MouseEventArgs e) + { + (sender as Panel)?.DoDragDrop((sender as Panel)?.BackColor ?? Color.Black, DragDropEffects.Move | DragDropEffects.Copy); + } + + private void LabelBodyColor_DragEnter(object sender, DragEventArgs e) + { + e.Effect = e.Data?.GetDataPresent(typeof(Color)) ?? false ? DragDropEffects.Copy : DragDropEffects.None; + } + + /// + /// Действия при приеме перетаскиваемой информации(Основной цвет) + /// + /// + /// + private void LabelBodyColor_DragDrop(object sender, DragEventArgs e) + { + _ship?.EntityShip?.ShipColorChange((Color)e.Data?.GetData(typeof(Color))); + DrawObject(); + } + + /// + /// Проверка получаемой информации(Доп. цвет) (ее типа на соответствие требуемому) + /// + /// + /// + private void LabelAdditionalColor_DragEnter(object sender, DragEventArgs e) + { + e.Effect = e.Data?.GetDataPresent(typeof(Color)) ?? false ? DragDropEffects.Copy : DragDropEffects.None; + } + + /// + /// Действия при приеме перетаскиваемой информации(Доп. цвет) + /// + /// + /// + private void LabelAdditionalColor_DragDrop(object sender, DragEventArgs e) + { + if (_ship?.EntityShip is EntityContainer _container) + { + _container.ContainerColorChange((Color)e.Data?.GetData(typeof(Color))); + } + DrawObject(); + } + + private void ButtonAdd_Click(object sender, EventArgs e) + { + if (_ship != null) + { + ShipDelegate?.Invoke(_ship); + Close(); + } + } +} + diff --git a/ProjectPlane/ProjectPlane/FormShipConfig.resx b/ProjectPlane/ProjectPlane/FormShipConfig.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/ProjectPlane/ProjectPlane/FormShipConfig.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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/ProjectPlane/ProjectPlane/ShipDelegate.cs b/ProjectPlane/ProjectPlane/ShipDelegate.cs new file mode 100644 index 0000000..fe387d3 --- /dev/null +++ b/ProjectPlane/ProjectPlane/ShipDelegate.cs @@ -0,0 +1,5 @@ +using ProjectPlane.Drawnings; + +namespace ProjectPlane; + +public delegate void ShipDelegate(DrawningShip ship); -- 2.25.1