Курсач
25
BackpackGreedyAlgorithm/BackpackGreedyAlgorithm.sln
Normal file
@ -0,0 +1,25 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 17
|
||||
VisualStudioVersion = 17.7.34024.191
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BackpackGreedyAlgorithm", "BackpackGreedyAlgorithm\BackpackGreedyAlgorithm.csproj", "{87938294-DFE4-40BA-9605-54E7D8253905}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{87938294-DFE4-40BA-9605-54E7D8253905}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{87938294-DFE4-40BA-9605-54E7D8253905}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{87938294-DFE4-40BA-9605-54E7D8253905}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{87938294-DFE4-40BA-9605-54E7D8253905}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {0D128F43-FAAF-4727-9A1A-21C66C8B968A}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
@ -0,0 +1,27 @@
|
||||
|
||||
|
||||
namespace BackpackGreedyAlgorithm.Algorithm;
|
||||
|
||||
public class Datas
|
||||
{
|
||||
/// <summary>
|
||||
/// Список драгоценностей
|
||||
/// </summary>
|
||||
public List<Gem> gems;
|
||||
|
||||
/// <summary>
|
||||
/// Максимальный вес рюкзака
|
||||
/// </summary>
|
||||
public int maxWeight;
|
||||
|
||||
/// <summary>
|
||||
/// Конструктор
|
||||
/// </summary>
|
||||
/// <param name="maxWeight">Максимальный вес рюкзака</param>
|
||||
/// <param name="gems">Список драгоценностей</param>
|
||||
public Datas(int maxWeight, List<Gem> gems)
|
||||
{
|
||||
this.maxWeight = maxWeight;
|
||||
this.gems = gems;
|
||||
}
|
||||
}
|
@ -0,0 +1,47 @@
|
||||
namespace BackpackGreedyAlgorithm.Algorithm;
|
||||
|
||||
[Serializable]
|
||||
public class Gem
|
||||
{
|
||||
/// <summary>
|
||||
/// Изображение драгоценности
|
||||
/// </summary>
|
||||
public Image image;
|
||||
|
||||
/// <summary>
|
||||
/// Вес драгоценности
|
||||
/// </summary>
|
||||
public int weight;
|
||||
|
||||
/// <summary>
|
||||
/// Цена драгоценности
|
||||
/// </summary>
|
||||
public int value;
|
||||
|
||||
/// <summary>
|
||||
/// Индекс элемента
|
||||
/// </summary>
|
||||
public int id;
|
||||
|
||||
/// <summary>
|
||||
/// Отношение цены и веса
|
||||
/// </summary>
|
||||
public double ratio;
|
||||
|
||||
/// <summary>
|
||||
/// Конструктор
|
||||
/// </summary>
|
||||
/// <param name="image">Изображение драгоценности</param>
|
||||
/// <param name="weight">Вес драгоценности</param>
|
||||
/// <param name="value">Цена драгоценности</param>
|
||||
/// <param name="id">Индекс</param>
|
||||
public Gem(Image image, int weight, int value, int id)
|
||||
{
|
||||
this.image = image;
|
||||
this.weight = weight;
|
||||
this.value = value;
|
||||
this.id = id;
|
||||
ratio = value / weight;
|
||||
ratio = Math.Round(ratio, 3);
|
||||
}
|
||||
}
|
@ -0,0 +1,111 @@
|
||||
|
||||
using BackpackGreedyAlgorithm.Storages;
|
||||
|
||||
namespace BackpackGreedyAlgorithm.Algorithm;
|
||||
|
||||
public class GreedyAlgorithm
|
||||
{
|
||||
/// <summary>
|
||||
/// Текущий статус
|
||||
/// </summary>
|
||||
public Status? status;
|
||||
|
||||
/// <summary>
|
||||
/// Список драгоценностей
|
||||
/// </summary>
|
||||
private List<Gem> _gems;
|
||||
|
||||
/// <summary>
|
||||
/// Максимальный вес
|
||||
/// </summary>
|
||||
private int _maxWeight;
|
||||
|
||||
/// <summary>
|
||||
/// Текущая стоимость драг. в рюкзаке
|
||||
/// </summary>
|
||||
private int _value;
|
||||
|
||||
/// <summary>
|
||||
/// Текущий вес драг. в рюкзаке
|
||||
/// </summary>
|
||||
private int _weight;
|
||||
|
||||
/// <summary>
|
||||
/// Количество драг. на полке
|
||||
/// </summary>
|
||||
private int _countGems;
|
||||
|
||||
/// <summary>
|
||||
/// Конструктор
|
||||
/// </summary>
|
||||
/// <param name="maxWeight">Максимальный вес</param>
|
||||
/// <param name="gems">Список драгоценностей</param>
|
||||
public GreedyAlgorithm(int maxWeight, List<Gem> gems)
|
||||
{
|
||||
_maxWeight = maxWeight;
|
||||
_gems = gems.OrderBy(o => o.ratio).ToList();
|
||||
_value = 0;
|
||||
_weight = 0;
|
||||
_countGems = gems.Count;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Конструктор
|
||||
/// </summary>
|
||||
/// <param name="data">Класс-параметр</param>
|
||||
public GreedyAlgorithm(Datas? data)
|
||||
{
|
||||
if (data != null)
|
||||
{
|
||||
_maxWeight = data.maxWeight;
|
||||
_gems = data.gems.OrderBy(o => o.ratio).ToList();
|
||||
_countGems = _gems.Count;
|
||||
}
|
||||
_value = 0;
|
||||
_weight = 0;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Выполнить шаг алгоритма
|
||||
/// </summary>
|
||||
public void PutGem()
|
||||
{
|
||||
if (_countGems <= 0) return;
|
||||
|
||||
Gem gem = _gems[_countGems - 1];
|
||||
|
||||
if (_weight + gem.weight > _maxWeight)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
_weight += gem.weight;
|
||||
_value += gem.value;
|
||||
|
||||
_gems.RemoveAt(_countGems - 1);
|
||||
_countGems--;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Установить новый статус
|
||||
/// </summary>
|
||||
public void SaveStatus()
|
||||
{
|
||||
status = new Status(_maxWeight, _weight, _value, new List<Gem>(_gems));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Получить предыдущий статус
|
||||
/// </summary>
|
||||
/// <param name="status">Устанавливаемый статус</param>
|
||||
public void ReturnToStatus(Status? status)
|
||||
{
|
||||
if (status == null) return;
|
||||
this.status = status;
|
||||
_maxWeight = status.maxWeight;
|
||||
_weight = status.weight;
|
||||
_value = status.value;
|
||||
_gems = new List<Gem>(status.gems);
|
||||
_countGems = _gems.Count();
|
||||
}
|
||||
}
|
@ -0,0 +1,30 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<TargetFramework>net7.0-windows</TargetFramework>
|
||||
<Nullable>enable</Nullable>
|
||||
<UseWindowsForms>true</UseWindowsForms>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Update="Properties\Resources.Designer.cs">
|
||||
<DesignTime>True</DesignTime>
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Update="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="Saves\" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
@ -0,0 +1,57 @@
|
||||
|
||||
|
||||
using BackpackGreedyAlgorithm.Algorithm;
|
||||
using BackpackGreedyAlgorithm.Storages;
|
||||
using static System.Runtime.InteropServices.JavaScript.JSType;
|
||||
|
||||
namespace BackpackGreedyAlgorithm.Communications;
|
||||
|
||||
public class Manager
|
||||
{
|
||||
/// <summary>
|
||||
/// Хранидище
|
||||
/// </summary>
|
||||
public Storage storage = new Storage();
|
||||
|
||||
/// <summary>
|
||||
/// Реализатор
|
||||
/// </summary>
|
||||
GreedyAlgorithm backpack;
|
||||
|
||||
/// <summary>
|
||||
/// Конструктор
|
||||
/// </summary>
|
||||
/// <param name="data">Параметры для работы алгоритма</param>
|
||||
public Manager(Datas? data)
|
||||
{
|
||||
backpack = new GreedyAlgorithm(data);
|
||||
if (data != null)
|
||||
{
|
||||
backpack.SaveStatus();
|
||||
storage.AddStatus(backpack.status);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Выполнение шага и запись шага в хранилище
|
||||
/// </summary>
|
||||
/// <returns>Хранилище с результатом шага</returns>
|
||||
public Storage MakeStap()
|
||||
{
|
||||
backpack.PutGem();
|
||||
backpack.SaveStatus();
|
||||
storage.AddStatus(backpack.status);
|
||||
return storage;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Задание статуса
|
||||
/// </summary>
|
||||
/// <param name="status">Статус</param>
|
||||
/// <param name="storage">Хранилище</param>
|
||||
public void SetStatusAlgoritm(Status status, Storage storage)
|
||||
{
|
||||
backpack.ReturnToStatus(status);
|
||||
this.storage = storage;
|
||||
}
|
||||
}
|
@ -0,0 +1,121 @@
|
||||
using BackpackGreedyAlgorithm.Algorithm;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace BackpackGreedyAlgorithm.Communications;
|
||||
|
||||
public class Visualizer
|
||||
{
|
||||
/// <summary>
|
||||
/// Список панелей драг.
|
||||
/// </summary>
|
||||
private List<Panel> _listGemsInfo;
|
||||
|
||||
/// <summary>
|
||||
/// Вес рюкзака
|
||||
/// </summary>
|
||||
private string _weightBackpack;
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
private Label _valueL;
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
private Label _weightL;
|
||||
|
||||
/// <summary>
|
||||
/// Конструктор
|
||||
/// </summary>
|
||||
/// <param name="listGems">Список панелей драг.</param>
|
||||
/// <param name="maxWeight">Максимальный вес рюкзака</param>
|
||||
/// <param name="weightL">Label веса</param>
|
||||
/// <param name="valueL">Label ценности</param>
|
||||
public Visualizer(List<Panel> listGems, int maxWeight, Label valueL, Label weightL)
|
||||
{
|
||||
_listGemsInfo = listGems;
|
||||
_weightBackpack = "\\" + maxWeight;
|
||||
_valueL = valueL;
|
||||
_weightL = weightL;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Обновление формы
|
||||
/// </summary>
|
||||
/// <param name="gems">Список драг.</param>
|
||||
/// <param name="weight">Текущий вес</param>
|
||||
/// <param name="value">Текущее ценность</param>
|
||||
public void Update(List<Gem> gems, int weight, int value)
|
||||
{
|
||||
_weightL.Text = weight + _weightBackpack;
|
||||
_valueL.Text = value.ToString();
|
||||
|
||||
var regex = new Regex("[0-9]");
|
||||
|
||||
for (int i = 0; i < _listGemsInfo.Count; i++)
|
||||
{
|
||||
Gem? gem = HasGemInList(i, gems);
|
||||
if (gem != null)
|
||||
{
|
||||
foreach (Control info in _listGemsInfo[i].Controls)
|
||||
{
|
||||
String type = regex.Replace(info.Name, String.Empty);
|
||||
|
||||
switch (type)
|
||||
{
|
||||
case "pictureBoxElem":
|
||||
((PictureBox)info).BackgroundImage = gem.image;
|
||||
break;
|
||||
case "panelValue":
|
||||
GetLabel((Panel)info, "labelValue").Text = gem.value.ToString();
|
||||
break;
|
||||
case "panelWeight":
|
||||
GetLabel((Panel)info, "labelWeight").Text = gem.weight.ToString();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
_listGemsInfo[i].Visible = true;
|
||||
}
|
||||
else _listGemsInfo[i].Visible = false;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Метод ищущий в Panel Label
|
||||
/// </summary>
|
||||
/// <param name="panel"></param>
|
||||
/// <param name="name"></param>
|
||||
/// <returns>Label</returns>
|
||||
private Label? GetLabel(Panel panel, string name)
|
||||
{
|
||||
foreach(Control label in panel.Controls)
|
||||
{
|
||||
if (label.Name.Contains(name))
|
||||
{
|
||||
return (Label)label;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Проверяет есть ли драг. с указанным индексом в списке драг-ей
|
||||
/// </summary>
|
||||
/// <param name="ind">Индекс</param>
|
||||
/// <param name="gems">Список драгоценностей</param>
|
||||
/// <returns>true - да; false - нет</returns>
|
||||
private Gem? HasGemInList(int ind, List<Gem> gems)
|
||||
{
|
||||
foreach (Gem ge in gems)
|
||||
{
|
||||
if (ge.id == ind)
|
||||
{
|
||||
return ge;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
987
BackpackGreedyAlgorithm/BackpackGreedyAlgorithm/InformationForm.Designer.cs
generated
Normal file
@ -0,0 +1,987 @@
|
||||
namespace BackpackGreedyAlgorithm
|
||||
{
|
||||
partial class InformationForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(InformationForm));
|
||||
groupBoxAboutAlgoritm = new GroupBox();
|
||||
groupBox3 = new GroupBox();
|
||||
label12 = new Label();
|
||||
groupBox1 = new GroupBox();
|
||||
label10 = new Label();
|
||||
label11 = new Label();
|
||||
label3 = new Label();
|
||||
label9 = new Label();
|
||||
label7 = new Label();
|
||||
label8 = new Label();
|
||||
label5 = new Label();
|
||||
label6 = new Label();
|
||||
label4 = new Label();
|
||||
label2 = new Label();
|
||||
label1 = new Label();
|
||||
groupBoxInputWindow = new GroupBox();
|
||||
label20 = new Label();
|
||||
label23 = new Label();
|
||||
label22 = new Label();
|
||||
label21 = new Label();
|
||||
label19 = new Label();
|
||||
label18 = new Label();
|
||||
label16 = new Label();
|
||||
groupBoxElements = new GroupBox();
|
||||
panelElement0 = new Panel();
|
||||
numericUpDownWeight0 = new NumericUpDown();
|
||||
label33 = new Label();
|
||||
numericUpDownValue0 = new NumericUpDown();
|
||||
label34 = new Label();
|
||||
pictureBoxElement0 = new PictureBox();
|
||||
groupBoxIcons = new GroupBox();
|
||||
panelDimond = new Panel();
|
||||
groupBox4 = new GroupBox();
|
||||
pictureBoxBackpack = new PictureBox();
|
||||
numericUpDownMaxWeight = new NumericUpDown();
|
||||
labelMaxWeight = new Label();
|
||||
numericUpDownCount = new NumericUpDown();
|
||||
labelCount = new Label();
|
||||
buttonCreate = new Button();
|
||||
groupBoxInfo = new GroupBox();
|
||||
label17 = new Label();
|
||||
buttonPrev = new Button();
|
||||
buttonNext = new Button();
|
||||
groupBox2 = new GroupBox();
|
||||
labelInputWind = new Label();
|
||||
labelMainWind = new Label();
|
||||
labelAboutAlgoritm = new Label();
|
||||
labelInfo = new Label();
|
||||
groupBoxMainWindow = new GroupBox();
|
||||
label30 = new Label();
|
||||
buttonData = new Button();
|
||||
label29 = new Label();
|
||||
label28 = new Label();
|
||||
label27 = new Label();
|
||||
label26 = new Label();
|
||||
label25 = new Label();
|
||||
panel7 = new Panel();
|
||||
label24 = new Label();
|
||||
pictureBox1 = new PictureBox();
|
||||
groupBoxTools = new GroupBox();
|
||||
buttonStart = new Button();
|
||||
buttonStep = new Button();
|
||||
panelElem = new Panel();
|
||||
panelWeight0 = new Panel();
|
||||
pictureBoxElem0 = new PictureBox();
|
||||
panelValue0 = new Panel();
|
||||
panel8 = new Panel();
|
||||
label13 = new Label();
|
||||
label14 = new Label();
|
||||
groupBoxAboutAlgoritm.SuspendLayout();
|
||||
groupBox3.SuspendLayout();
|
||||
groupBox1.SuspendLayout();
|
||||
groupBoxInputWindow.SuspendLayout();
|
||||
groupBoxElements.SuspendLayout();
|
||||
panelElement0.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)numericUpDownWeight0).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)numericUpDownValue0).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)pictureBoxElement0).BeginInit();
|
||||
groupBoxIcons.SuspendLayout();
|
||||
groupBox4.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)pictureBoxBackpack).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)numericUpDownMaxWeight).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)numericUpDownCount).BeginInit();
|
||||
groupBoxInfo.SuspendLayout();
|
||||
groupBox2.SuspendLayout();
|
||||
groupBoxMainWindow.SuspendLayout();
|
||||
panel7.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)pictureBox1).BeginInit();
|
||||
groupBoxTools.SuspendLayout();
|
||||
panelElem.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)pictureBoxElem0).BeginInit();
|
||||
panel8.SuspendLayout();
|
||||
SuspendLayout();
|
||||
//
|
||||
// groupBoxAboutAlgoritm
|
||||
//
|
||||
groupBoxAboutAlgoritm.Controls.Add(groupBox3);
|
||||
groupBoxAboutAlgoritm.Controls.Add(groupBox1);
|
||||
groupBoxAboutAlgoritm.Controls.Add(label7);
|
||||
groupBoxAboutAlgoritm.Controls.Add(label8);
|
||||
groupBoxAboutAlgoritm.Controls.Add(label5);
|
||||
groupBoxAboutAlgoritm.Controls.Add(label6);
|
||||
groupBoxAboutAlgoritm.Controls.Add(label4);
|
||||
groupBoxAboutAlgoritm.Controls.Add(label2);
|
||||
groupBoxAboutAlgoritm.Controls.Add(label1);
|
||||
groupBoxAboutAlgoritm.Location = new Point(0, 0);
|
||||
groupBoxAboutAlgoritm.Name = "groupBoxAboutAlgoritm";
|
||||
groupBoxAboutAlgoritm.Size = new Size(837, 431);
|
||||
groupBoxAboutAlgoritm.TabIndex = 1;
|
||||
groupBoxAboutAlgoritm.TabStop = false;
|
||||
groupBoxAboutAlgoritm.Text = "О алгаритме";
|
||||
groupBoxAboutAlgoritm.Visible = false;
|
||||
//
|
||||
// groupBox3
|
||||
//
|
||||
groupBox3.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left;
|
||||
groupBox3.BackColor = SystemColors.ActiveBorder;
|
||||
groupBox3.Controls.Add(label12);
|
||||
groupBox3.Location = new Point(312, 103);
|
||||
groupBox3.Name = "groupBox3";
|
||||
groupBox3.Size = new Size(300, 111);
|
||||
groupBox3.TabIndex = 12;
|
||||
groupBox3.TabStop = false;
|
||||
groupBox3.Text = "Output";
|
||||
//
|
||||
// label12
|
||||
//
|
||||
label12.AutoSize = true;
|
||||
label12.Location = new Point(0, 23);
|
||||
label12.Name = "label12";
|
||||
label12.Size = new Size(235, 20);
|
||||
label12.TabIndex = 0;
|
||||
label12.Text = "totalValue - собранная ценность";
|
||||
//
|
||||
// groupBox1
|
||||
//
|
||||
groupBox1.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left;
|
||||
groupBox1.BackColor = SystemColors.ActiveBorder;
|
||||
groupBox1.Controls.Add(label10);
|
||||
groupBox1.Controls.Add(label11);
|
||||
groupBox1.Controls.Add(label3);
|
||||
groupBox1.Controls.Add(label9);
|
||||
groupBox1.Location = new Point(6, 103);
|
||||
groupBox1.Name = "groupBox1";
|
||||
groupBox1.Size = new Size(300, 111);
|
||||
groupBox1.TabIndex = 11;
|
||||
groupBox1.TabStop = false;
|
||||
groupBox1.Text = "Input";
|
||||
//
|
||||
// label10
|
||||
//
|
||||
label10.AutoSize = true;
|
||||
label10.Location = new Point(6, 63);
|
||||
label10.MaximumSize = new Size(480, 0);
|
||||
label10.Name = "label10";
|
||||
label10.Size = new Size(214, 20);
|
||||
label10.TabIndex = 9;
|
||||
label10.Text = "waight[i] - вес i-ого предмета";
|
||||
//
|
||||
// label11
|
||||
//
|
||||
label11.AutoSize = true;
|
||||
label11.Location = new Point(6, 83);
|
||||
label11.MaximumSize = new Size(480, 0);
|
||||
label11.Name = "label11";
|
||||
label11.Size = new Size(215, 20);
|
||||
label11.TabIndex = 10;
|
||||
label11.Text = "value[i] - цена i-ого предмета";
|
||||
//
|
||||
// label3
|
||||
//
|
||||
label3.AutoSize = true;
|
||||
label3.Location = new Point(6, 23);
|
||||
label3.MaximumSize = new Size(480, 0);
|
||||
label3.Name = "label3";
|
||||
label3.Size = new Size(227, 20);
|
||||
label3.TabIndex = 3;
|
||||
label3.Text = "maxWaight - Ограничение веса";
|
||||
//
|
||||
// label9
|
||||
//
|
||||
label9.AutoSize = true;
|
||||
label9.Location = new Point(6, 43);
|
||||
label9.MaximumSize = new Size(480, 0);
|
||||
label9.Name = "label9";
|
||||
label9.Size = new Size(217, 20);
|
||||
label9.TabIndex = 8;
|
||||
label9.Text = "count - количество элементов";
|
||||
//
|
||||
// label7
|
||||
//
|
||||
label7.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left;
|
||||
label7.AutoSize = true;
|
||||
label7.Location = new Point(6, 297);
|
||||
label7.MaximumSize = new Size(800, 0);
|
||||
label7.Name = "label7";
|
||||
label7.Size = new Size(779, 80);
|
||||
label7.TabIndex = 7;
|
||||
label7.Text = resources.GetString("label7.Text");
|
||||
//
|
||||
// label8
|
||||
//
|
||||
label8.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left;
|
||||
label8.AutoSize = true;
|
||||
label8.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
|
||||
label8.Location = new Point(6, 277);
|
||||
label8.MaximumSize = new Size(800, 0);
|
||||
label8.Name = "label8";
|
||||
label8.Size = new Size(173, 20);
|
||||
label8.TabIndex = 6;
|
||||
label8.Text = "Недостаток алгоритма";
|
||||
//
|
||||
// label5
|
||||
//
|
||||
label5.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left;
|
||||
label5.AutoSize = true;
|
||||
label5.Location = new Point(6, 237);
|
||||
label5.MaximumSize = new Size(800, 0);
|
||||
label5.Name = "label5";
|
||||
label5.Size = new Size(798, 40);
|
||||
label5.TabIndex = 5;
|
||||
label5.Text = "Необходимо отсортировать вещи по их удельной ценности (то есть отношению ценности предмета к его весу), и поместить в рюкзак предметы с наибольшей удельной ценностью";
|
||||
//
|
||||
// label6
|
||||
//
|
||||
label6.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left;
|
||||
label6.AutoSize = true;
|
||||
label6.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
|
||||
label6.Location = new Point(6, 217);
|
||||
label6.MaximumSize = new Size(800, 0);
|
||||
label6.Name = "label6";
|
||||
label6.Size = new Size(148, 20);
|
||||
label6.TabIndex = 4;
|
||||
label6.Text = "Жадный алгоритм:";
|
||||
//
|
||||
// label4
|
||||
//
|
||||
label4.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left;
|
||||
label4.AutoSize = true;
|
||||
label4.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
|
||||
label4.Location = new Point(6, 82);
|
||||
label4.MaximumSize = new Size(800, 0);
|
||||
label4.Name = "label4";
|
||||
label4.Size = new Size(71, 20);
|
||||
label4.TabIndex = 2;
|
||||
label4.Text = "Данные:";
|
||||
//
|
||||
// label2
|
||||
//
|
||||
label2.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left;
|
||||
label2.AutoSize = true;
|
||||
label2.Location = new Point(6, 42);
|
||||
label2.MaximumSize = new Size(800, 0);
|
||||
label2.Name = "label2";
|
||||
label2.Size = new Size(782, 40);
|
||||
label2.TabIndex = 1;
|
||||
label2.Text = "Из заданного множества предметов со свойствами «стоимость» и «вес» требуется отобрать подмножество с максимальной полной стоимостью, соблюдая при этом ограничение на суммарный вес.";
|
||||
//
|
||||
// label1
|
||||
//
|
||||
label1.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left;
|
||||
label1.AutoSize = true;
|
||||
label1.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
|
||||
label1.Location = new Point(6, 22);
|
||||
label1.MaximumSize = new Size(800, 0);
|
||||
label1.Name = "label1";
|
||||
label1.Size = new Size(141, 20);
|
||||
label1.TabIndex = 0;
|
||||
label1.Text = "Задача о рюкзаке:";
|
||||
//
|
||||
// groupBoxInputWindow
|
||||
//
|
||||
groupBoxInputWindow.Controls.Add(label20);
|
||||
groupBoxInputWindow.Controls.Add(label23);
|
||||
groupBoxInputWindow.Controls.Add(label22);
|
||||
groupBoxInputWindow.Controls.Add(label21);
|
||||
groupBoxInputWindow.Controls.Add(label19);
|
||||
groupBoxInputWindow.Controls.Add(label18);
|
||||
groupBoxInputWindow.Controls.Add(label16);
|
||||
groupBoxInputWindow.Controls.Add(groupBoxElements);
|
||||
groupBoxInputWindow.Controls.Add(groupBoxIcons);
|
||||
groupBoxInputWindow.Controls.Add(groupBox4);
|
||||
groupBoxInputWindow.Location = new Point(0, 0);
|
||||
groupBoxInputWindow.Name = "groupBoxInputWindow";
|
||||
groupBoxInputWindow.Size = new Size(837, 431);
|
||||
groupBoxInputWindow.TabIndex = 14;
|
||||
groupBoxInputWindow.TabStop = false;
|
||||
groupBoxInputWindow.Text = "Об окне вводы входных данных";
|
||||
groupBoxInputWindow.Visible = false;
|
||||
//
|
||||
// label20
|
||||
//
|
||||
label20.AutoSize = true;
|
||||
label20.Location = new Point(459, 326);
|
||||
label20.Name = "label20";
|
||||
label20.Size = new Size(335, 60);
|
||||
label20.TabIndex = 24;
|
||||
label20.Text = "Коробка с иконками для предметов. Возьмите\r\nкартинку и перетащите их к предмету. Если не\r\nуказать иконку она выберется рандомно";
|
||||
//
|
||||
// label23
|
||||
//
|
||||
label23.AutoSize = true;
|
||||
label23.Location = new Point(14, 390);
|
||||
label23.Name = "label23";
|
||||
label23.Size = new Size(134, 40);
|
||||
label23.TabIndex = 23;
|
||||
label23.Text = " |\r\nрамка для иконки";
|
||||
//
|
||||
// label22
|
||||
//
|
||||
label22.AutoSize = true;
|
||||
label22.Location = new Point(191, 362);
|
||||
label22.Name = "label22";
|
||||
label22.Size = new Size(154, 20);
|
||||
label22.TabIndex = 22;
|
||||
label22.Text = "- вес этого предмета";
|
||||
//
|
||||
// label21
|
||||
//
|
||||
label21.AutoSize = true;
|
||||
label21.Location = new Point(191, 325);
|
||||
label21.Name = "label21";
|
||||
label21.Size = new Size(165, 20);
|
||||
label21.TabIndex = 21;
|
||||
label21.Text = "- цена этого предмета";
|
||||
//
|
||||
// label19
|
||||
//
|
||||
label19.AutoSize = true;
|
||||
label19.Location = new Point(152, 120);
|
||||
label19.Name = "label19";
|
||||
label19.Size = new Size(574, 20);
|
||||
label19.TabIndex = 19;
|
||||
label19.Text = "- Здесь вы ограничиваете вес, который можно положить в рюкзак (от 20 до 100)";
|
||||
//
|
||||
// label18
|
||||
//
|
||||
label18.AutoSize = true;
|
||||
label18.Location = new Point(152, 87);
|
||||
label18.Name = "label18";
|
||||
label18.Size = new Size(466, 20);
|
||||
label18.TabIndex = 18;
|
||||
label18.Text = "- Это кнопка, которая создает элементы в коробке с Предметами";
|
||||
//
|
||||
// label16
|
||||
//
|
||||
label16.AutoSize = true;
|
||||
label16.Location = new Point(152, 52);
|
||||
label16.Name = "label16";
|
||||
label16.Size = new Size(389, 20);
|
||||
label16.TabIndex = 17;
|
||||
label16.Text = "- Здесь вы указываете количестов элеметов (от 1 до 9)";
|
||||
//
|
||||
// groupBoxElements
|
||||
//
|
||||
groupBoxElements.Controls.Add(panelElement0);
|
||||
groupBoxElements.Location = new Point(6, 294);
|
||||
groupBoxElements.Name = "groupBoxElements";
|
||||
groupBoxElements.Size = new Size(196, 100);
|
||||
groupBoxElements.TabIndex = 16;
|
||||
groupBoxElements.TabStop = false;
|
||||
groupBoxElements.Text = "Предметы";
|
||||
//
|
||||
// panelElement0
|
||||
//
|
||||
panelElement0.AllowDrop = true;
|
||||
panelElement0.BackgroundImageLayout = ImageLayout.Zoom;
|
||||
panelElement0.Controls.Add(numericUpDownWeight0);
|
||||
panelElement0.Controls.Add(label33);
|
||||
panelElement0.Controls.Add(numericUpDownValue0);
|
||||
panelElement0.Controls.Add(label34);
|
||||
panelElement0.Controls.Add(pictureBoxElement0);
|
||||
panelElement0.Location = new Point(6, 26);
|
||||
panelElement0.Name = "panelElement0";
|
||||
panelElement0.Size = new Size(182, 70);
|
||||
panelElement0.TabIndex = 0;
|
||||
//
|
||||
// numericUpDownWeight0
|
||||
//
|
||||
numericUpDownWeight0.Location = new Point(124, 40);
|
||||
numericUpDownWeight0.Minimum = new decimal(new int[] { 20, 0, 0, 0 });
|
||||
numericUpDownWeight0.Name = "numericUpDownWeight0";
|
||||
numericUpDownWeight0.Size = new Size(52, 27);
|
||||
numericUpDownWeight0.TabIndex = 4;
|
||||
numericUpDownWeight0.Value = new decimal(new int[] { 20, 0, 0, 0 });
|
||||
//
|
||||
// label33
|
||||
//
|
||||
label33.AutoSize = true;
|
||||
label33.Location = new Point(73, 42);
|
||||
label33.Name = "label33";
|
||||
label33.Size = new Size(33, 20);
|
||||
label33.TabIndex = 3;
|
||||
label33.Text = "Вес";
|
||||
//
|
||||
// numericUpDownValue0
|
||||
//
|
||||
numericUpDownValue0.Location = new Point(124, 3);
|
||||
numericUpDownValue0.Minimum = new decimal(new int[] { 1, 0, 0, 0 });
|
||||
numericUpDownValue0.Name = "numericUpDownValue0";
|
||||
numericUpDownValue0.Size = new Size(52, 27);
|
||||
numericUpDownValue0.TabIndex = 2;
|
||||
numericUpDownValue0.Value = new decimal(new int[] { 1, 0, 0, 0 });
|
||||
//
|
||||
// label34
|
||||
//
|
||||
label34.AutoSize = true;
|
||||
label34.Location = new Point(73, 5);
|
||||
label34.Name = "label34";
|
||||
label34.Size = new Size(45, 20);
|
||||
label34.TabIndex = 1;
|
||||
label34.Text = "Цена";
|
||||
//
|
||||
// pictureBoxElement0
|
||||
//
|
||||
pictureBoxElement0.BackgroundImageLayout = ImageLayout.Zoom;
|
||||
pictureBoxElement0.BorderStyle = BorderStyle.FixedSingle;
|
||||
pictureBoxElement0.Location = new Point(3, 3);
|
||||
pictureBoxElement0.Name = "pictureBoxElement0";
|
||||
pictureBoxElement0.Size = new Size(64, 64);
|
||||
pictureBoxElement0.TabIndex = 0;
|
||||
pictureBoxElement0.TabStop = false;
|
||||
//
|
||||
// groupBoxIcons
|
||||
//
|
||||
groupBoxIcons.Controls.Add(panelDimond);
|
||||
groupBoxIcons.Location = new Point(374, 297);
|
||||
groupBoxIcons.Name = "groupBoxIcons";
|
||||
groupBoxIcons.Size = new Size(83, 105);
|
||||
groupBoxIcons.TabIndex = 15;
|
||||
groupBoxIcons.TabStop = false;
|
||||
groupBoxIcons.Text = "Иконки";
|
||||
//
|
||||
// panelDimond
|
||||
//
|
||||
panelDimond.BackgroundImage = (Image)resources.GetObject("panelDimond.BackgroundImage");
|
||||
panelDimond.BackgroundImageLayout = ImageLayout.Zoom;
|
||||
panelDimond.Location = new Point(9, 29);
|
||||
panelDimond.Name = "panelDimond";
|
||||
panelDimond.Size = new Size(64, 64);
|
||||
panelDimond.TabIndex = 9;
|
||||
//
|
||||
// groupBox4
|
||||
//
|
||||
groupBox4.Controls.Add(pictureBoxBackpack);
|
||||
groupBox4.Controls.Add(numericUpDownMaxWeight);
|
||||
groupBox4.Controls.Add(labelMaxWeight);
|
||||
groupBox4.Controls.Add(numericUpDownCount);
|
||||
groupBox4.Controls.Add(labelCount);
|
||||
groupBox4.Controls.Add(buttonCreate);
|
||||
groupBox4.Location = new Point(6, 26);
|
||||
groupBox4.Name = "groupBox4";
|
||||
groupBox4.Size = new Size(156, 274);
|
||||
groupBox4.TabIndex = 14;
|
||||
groupBox4.TabStop = false;
|
||||
groupBox4.Text = "Информация";
|
||||
//
|
||||
// pictureBoxBackpack
|
||||
//
|
||||
pictureBoxBackpack.BackColor = SystemColors.Control;
|
||||
pictureBoxBackpack.BackgroundImage = (Image)resources.GetObject("pictureBoxBackpack.BackgroundImage");
|
||||
pictureBoxBackpack.BackgroundImageLayout = ImageLayout.Zoom;
|
||||
pictureBoxBackpack.Location = new Point(16, 130);
|
||||
pictureBoxBackpack.Name = "pictureBoxBackpack";
|
||||
pictureBoxBackpack.Size = new Size(128, 128);
|
||||
pictureBoxBackpack.TabIndex = 0;
|
||||
pictureBoxBackpack.TabStop = false;
|
||||
//
|
||||
// numericUpDownMaxWeight
|
||||
//
|
||||
numericUpDownMaxWeight.Location = new Point(96, 92);
|
||||
numericUpDownMaxWeight.Minimum = new decimal(new int[] { 20, 0, 0, 0 });
|
||||
numericUpDownMaxWeight.Name = "numericUpDownMaxWeight";
|
||||
numericUpDownMaxWeight.Size = new Size(48, 27);
|
||||
numericUpDownMaxWeight.TabIndex = 2;
|
||||
numericUpDownMaxWeight.Value = new decimal(new int[] { 20, 0, 0, 0 });
|
||||
//
|
||||
// labelMaxWeight
|
||||
//
|
||||
labelMaxWeight.AutoSize = true;
|
||||
labelMaxWeight.Location = new Point(16, 94);
|
||||
labelMaxWeight.Name = "labelMaxWeight";
|
||||
labelMaxWeight.Size = new Size(74, 20);
|
||||
labelMaxWeight.TabIndex = 1;
|
||||
labelMaxWeight.Text = "Макс. вес";
|
||||
//
|
||||
// numericUpDownCount
|
||||
//
|
||||
numericUpDownCount.Location = new Point(81, 24);
|
||||
numericUpDownCount.Maximum = new decimal(new int[] { 9, 0, 0, 0 });
|
||||
numericUpDownCount.Minimum = new decimal(new int[] { 1, 0, 0, 0 });
|
||||
numericUpDownCount.Name = "numericUpDownCount";
|
||||
numericUpDownCount.Size = new Size(63, 27);
|
||||
numericUpDownCount.TabIndex = 7;
|
||||
numericUpDownCount.Value = new decimal(new int[] { 1, 0, 0, 0 });
|
||||
//
|
||||
// labelCount
|
||||
//
|
||||
labelCount.AutoSize = true;
|
||||
labelCount.Location = new Point(16, 26);
|
||||
labelCount.Name = "labelCount";
|
||||
labelCount.Size = new Size(58, 20);
|
||||
labelCount.TabIndex = 6;
|
||||
labelCount.Text = "Кол-во";
|
||||
//
|
||||
// buttonCreate
|
||||
//
|
||||
buttonCreate.Location = new Point(16, 57);
|
||||
buttonCreate.Name = "buttonCreate";
|
||||
buttonCreate.Size = new Size(128, 29);
|
||||
buttonCreate.TabIndex = 5;
|
||||
buttonCreate.Text = "Создать";
|
||||
buttonCreate.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// groupBoxInfo
|
||||
//
|
||||
groupBoxInfo.Controls.Add(label17);
|
||||
groupBoxInfo.Location = new Point(0, 0);
|
||||
groupBoxInfo.Name = "groupBoxInfo";
|
||||
groupBoxInfo.Size = new Size(837, 431);
|
||||
groupBoxInfo.TabIndex = 13;
|
||||
groupBoxInfo.TabStop = false;
|
||||
groupBoxInfo.Text = "Окно информации";
|
||||
//
|
||||
// label17
|
||||
//
|
||||
label17.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left;
|
||||
label17.AutoSize = true;
|
||||
label17.Font = new Font("Segoe UI", 9F, FontStyle.Regular, GraphicsUnit.Point);
|
||||
label17.Location = new Point(6, 23);
|
||||
label17.MaximumSize = new Size(800, 0);
|
||||
label17.Name = "label17";
|
||||
label17.Size = new Size(747, 100);
|
||||
label17.TabIndex = 1;
|
||||
label17.Text = resources.GetString("label17.Text");
|
||||
//
|
||||
// buttonPrev
|
||||
//
|
||||
buttonPrev.Anchor = AnchorStyles.Bottom | AnchorStyles.Left;
|
||||
buttonPrev.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
|
||||
buttonPrev.Location = new Point(0, 437);
|
||||
buttonPrev.Name = "buttonPrev";
|
||||
buttonPrev.Size = new Size(488, 50);
|
||||
buttonPrev.TabIndex = 2;
|
||||
buttonPrev.Text = "Предыдущий";
|
||||
buttonPrev.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// buttonNext
|
||||
//
|
||||
buttonNext.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
|
||||
buttonNext.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
|
||||
buttonNext.Location = new Point(518, 437);
|
||||
buttonNext.Name = "buttonNext";
|
||||
buttonNext.Size = new Size(488, 50);
|
||||
buttonNext.TabIndex = 3;
|
||||
buttonNext.Text = "Следующий";
|
||||
buttonNext.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// groupBox2
|
||||
//
|
||||
groupBox2.Controls.Add(labelInputWind);
|
||||
groupBox2.Controls.Add(labelMainWind);
|
||||
groupBox2.Controls.Add(labelAboutAlgoritm);
|
||||
groupBox2.Controls.Add(labelInfo);
|
||||
groupBox2.Location = new Point(843, 0);
|
||||
groupBox2.Name = "groupBox2";
|
||||
groupBox2.Size = new Size(163, 431);
|
||||
groupBox2.TabIndex = 4;
|
||||
groupBox2.TabStop = false;
|
||||
groupBox2.Text = "Содержание";
|
||||
//
|
||||
// labelInputWind
|
||||
//
|
||||
labelInputWind.AutoSize = true;
|
||||
labelInputWind.Location = new Point(6, 83);
|
||||
labelInputWind.MaximumSize = new Size(160, 0);
|
||||
labelInputWind.Name = "labelInputWind";
|
||||
labelInputWind.Size = new Size(125, 40);
|
||||
labelInputWind.TabIndex = 3;
|
||||
labelInputWind.Text = "- Об окне ввода входных данных";
|
||||
labelInputWind.Click += Label_Click;
|
||||
//
|
||||
// labelMainWind
|
||||
//
|
||||
labelMainWind.AutoSize = true;
|
||||
labelMainWind.Location = new Point(6, 123);
|
||||
labelMainWind.MaximumSize = new Size(160, 0);
|
||||
labelMainWind.Name = "labelMainWind";
|
||||
labelMainWind.Size = new Size(130, 20);
|
||||
labelMainWind.TabIndex = 2;
|
||||
labelMainWind.Text = "- О главном окне";
|
||||
labelMainWind.Click += Label_Click;
|
||||
//
|
||||
// labelAboutAlgoritm
|
||||
//
|
||||
labelAboutAlgoritm.AutoSize = true;
|
||||
labelAboutAlgoritm.Location = new Point(6, 62);
|
||||
labelAboutAlgoritm.MaximumSize = new Size(160, 0);
|
||||
labelAboutAlgoritm.Name = "labelAboutAlgoritm";
|
||||
labelAboutAlgoritm.Size = new Size(117, 20);
|
||||
labelAboutAlgoritm.TabIndex = 1;
|
||||
labelAboutAlgoritm.Text = "- Об алгоритме";
|
||||
labelAboutAlgoritm.Click += Label_Click;
|
||||
//
|
||||
// labelInfo
|
||||
//
|
||||
labelInfo.AutoSize = true;
|
||||
labelInfo.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
|
||||
labelInfo.Location = new Point(6, 22);
|
||||
labelInfo.MaximumSize = new Size(160, 0);
|
||||
labelInfo.Name = "labelInfo";
|
||||
labelInfo.Size = new Size(105, 40);
|
||||
labelInfo.TabIndex = 0;
|
||||
labelInfo.Text = "- Об окне информации";
|
||||
labelInfo.Click += Label_Click;
|
||||
//
|
||||
// groupBoxMainWindow
|
||||
//
|
||||
groupBoxMainWindow.Controls.Add(label13);
|
||||
groupBoxMainWindow.Controls.Add(panel8);
|
||||
groupBoxMainWindow.Controls.Add(label30);
|
||||
groupBoxMainWindow.Controls.Add(buttonData);
|
||||
groupBoxMainWindow.Controls.Add(label29);
|
||||
groupBoxMainWindow.Controls.Add(label28);
|
||||
groupBoxMainWindow.Controls.Add(label27);
|
||||
groupBoxMainWindow.Controls.Add(label26);
|
||||
groupBoxMainWindow.Controls.Add(label25);
|
||||
groupBoxMainWindow.Controls.Add(panel7);
|
||||
groupBoxMainWindow.Controls.Add(pictureBox1);
|
||||
groupBoxMainWindow.Controls.Add(groupBoxTools);
|
||||
groupBoxMainWindow.Controls.Add(panelElem);
|
||||
groupBoxMainWindow.Location = new Point(0, 0);
|
||||
groupBoxMainWindow.Name = "groupBoxMainWindow";
|
||||
groupBoxMainWindow.Size = new Size(837, 431);
|
||||
groupBoxMainWindow.TabIndex = 15;
|
||||
groupBoxMainWindow.TabStop = false;
|
||||
groupBoxMainWindow.Text = "О главном окне";
|
||||
groupBoxMainWindow.Visible = false;
|
||||
//
|
||||
// label30
|
||||
//
|
||||
label30.AutoSize = true;
|
||||
label30.Location = new Point(501, 153);
|
||||
label30.Name = "label30";
|
||||
label30.Size = new Size(228, 20);
|
||||
label30.TabIndex = 25;
|
||||
label30.Text = "- Открыть форму ввода данных";
|
||||
//
|
||||
// buttonData
|
||||
//
|
||||
buttonData.Location = new Point(343, 149);
|
||||
buttonData.Name = "buttonData";
|
||||
buttonData.Size = new Size(157, 29);
|
||||
buttonData.TabIndex = 24;
|
||||
buttonData.Text = "Начать";
|
||||
buttonData.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// label29
|
||||
//
|
||||
label29.AutoSize = true;
|
||||
label29.Location = new Point(234, 389);
|
||||
label29.Name = "label29";
|
||||
label29.Size = new Size(247, 20);
|
||||
label29.TabIndex = 23;
|
||||
label29.Text = "- Текущий вес/Максимвльный вес";
|
||||
//
|
||||
// label28
|
||||
//
|
||||
label28.AutoSize = true;
|
||||
label28.Location = new Point(501, 95);
|
||||
label28.Name = "label28";
|
||||
label28.Size = new Size(287, 20);
|
||||
label28.TabIndex = 22;
|
||||
label28.Text = "- Сделать шаг в выполнении алгоритма";
|
||||
//
|
||||
// label27
|
||||
//
|
||||
label27.AutoSize = true;
|
||||
label27.Location = new Point(501, 60);
|
||||
label27.Name = "label27";
|
||||
label27.Size = new Size(157, 20);
|
||||
label27.TabIndex = 21;
|
||||
label27.Text = "- Запустить алгоритм";
|
||||
//
|
||||
// label26
|
||||
//
|
||||
label26.AutoSize = true;
|
||||
label26.Location = new Point(150, 87);
|
||||
label26.Name = "label26";
|
||||
label26.Size = new Size(121, 20);
|
||||
label26.TabIndex = 20;
|
||||
label26.Text = "- Значение веса";
|
||||
//
|
||||
// label25
|
||||
//
|
||||
label25.AutoSize = true;
|
||||
label25.Location = new Point(150, 42);
|
||||
label25.Name = "label25";
|
||||
label25.Size = new Size(127, 20);
|
||||
label25.TabIndex = 19;
|
||||
label25.Text = "- Значение цены";
|
||||
//
|
||||
// panel7
|
||||
//
|
||||
panel7.BackgroundImage = (Image)resources.GetObject("panel7.BackgroundImage");
|
||||
panel7.BackgroundImageLayout = ImageLayout.Zoom;
|
||||
panel7.Controls.Add(label24);
|
||||
panel7.Location = new Point(168, 343);
|
||||
panel7.Name = "panel7";
|
||||
panel7.Size = new Size(74, 82);
|
||||
panel7.TabIndex = 18;
|
||||
//
|
||||
// label24
|
||||
//
|
||||
label24.AutoSize = true;
|
||||
label24.BackColor = Color.Transparent;
|
||||
label24.ForeColor = Color.White;
|
||||
label24.Location = new Point(6, 46);
|
||||
label24.Name = "label24";
|
||||
label24.Size = new Size(55, 20);
|
||||
label24.TabIndex = 0;
|
||||
label24.Text = " 0/100";
|
||||
//
|
||||
// pictureBox1
|
||||
//
|
||||
pictureBox1.BackColor = SystemColors.Control;
|
||||
pictureBox1.BackgroundImage = (Image)resources.GetObject("pictureBox1.BackgroundImage");
|
||||
pictureBox1.BackgroundImageLayout = ImageLayout.Zoom;
|
||||
pictureBox1.Location = new Point(0, 267);
|
||||
pictureBox1.Name = "pictureBox1";
|
||||
pictureBox1.Size = new Size(167, 158);
|
||||
pictureBox1.TabIndex = 17;
|
||||
pictureBox1.TabStop = false;
|
||||
//
|
||||
// groupBoxTools
|
||||
//
|
||||
groupBoxTools.Controls.Add(buttonStart);
|
||||
groupBoxTools.Controls.Add(buttonStep);
|
||||
groupBoxTools.Location = new Point(337, 23);
|
||||
groupBoxTools.Name = "groupBoxTools";
|
||||
groupBoxTools.Size = new Size(169, 117);
|
||||
groupBoxTools.TabIndex = 15;
|
||||
groupBoxTools.TabStop = false;
|
||||
groupBoxTools.Text = "Инструменты";
|
||||
//
|
||||
// buttonStart
|
||||
//
|
||||
buttonStart.Location = new Point(6, 33);
|
||||
buttonStart.Name = "buttonStart";
|
||||
buttonStart.Size = new Size(157, 29);
|
||||
buttonStart.TabIndex = 2;
|
||||
buttonStart.Text = "Запустить";
|
||||
buttonStart.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// buttonStep
|
||||
//
|
||||
buttonStep.Location = new Point(6, 68);
|
||||
buttonStep.Name = "buttonStep";
|
||||
buttonStep.Size = new Size(157, 29);
|
||||
buttonStep.TabIndex = 0;
|
||||
buttonStep.Text = "Шаг";
|
||||
buttonStep.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// panelElem
|
||||
//
|
||||
panelElem.Controls.Add(panelWeight0);
|
||||
panelElem.Controls.Add(pictureBoxElem0);
|
||||
panelElem.Controls.Add(panelValue0);
|
||||
panelElem.Location = new Point(6, 26);
|
||||
panelElem.Name = "panelElem";
|
||||
panelElem.Size = new Size(146, 100);
|
||||
panelElem.TabIndex = 14;
|
||||
//
|
||||
// panelWeight0
|
||||
//
|
||||
panelWeight0.BackgroundImage = (Image)resources.GetObject("panelWeight0.BackgroundImage");
|
||||
panelWeight0.BackgroundImageLayout = ImageLayout.Zoom;
|
||||
panelWeight0.Location = new Point(95, 50);
|
||||
panelWeight0.Name = "panelWeight0";
|
||||
panelWeight0.Size = new Size(48, 47);
|
||||
panelWeight0.TabIndex = 11;
|
||||
//
|
||||
// pictureBoxElem0
|
||||
//
|
||||
pictureBoxElem0.BackColor = Color.Transparent;
|
||||
pictureBoxElem0.BackgroundImage = (Image)resources.GetObject("pictureBoxElem0.BackgroundImage");
|
||||
pictureBoxElem0.BackgroundImageLayout = ImageLayout.Zoom;
|
||||
pictureBoxElem0.Location = new Point(3, 3);
|
||||
pictureBoxElem0.Name = "pictureBoxElem0";
|
||||
pictureBoxElem0.Size = new Size(92, 94);
|
||||
pictureBoxElem0.TabIndex = 12;
|
||||
pictureBoxElem0.TabStop = false;
|
||||
//
|
||||
// panelValue0
|
||||
//
|
||||
panelValue0.BackgroundImage = (Image)resources.GetObject("panelValue0.BackgroundImage");
|
||||
panelValue0.BackgroundImageLayout = ImageLayout.Zoom;
|
||||
panelValue0.Location = new Point(95, 3);
|
||||
panelValue0.Name = "panelValue0";
|
||||
panelValue0.Size = new Size(48, 47);
|
||||
panelValue0.TabIndex = 10;
|
||||
//
|
||||
// panel8
|
||||
//
|
||||
panel8.BackgroundImage = (Image)resources.GetObject("panel8.BackgroundImage");
|
||||
panel8.BackgroundImageLayout = ImageLayout.Zoom;
|
||||
panel8.Controls.Add(label14);
|
||||
panel8.Location = new Point(168, 267);
|
||||
panel8.Name = "panel8";
|
||||
panel8.Size = new Size(74, 78);
|
||||
panel8.TabIndex = 26;
|
||||
//
|
||||
// label13
|
||||
//
|
||||
label13.AutoSize = true;
|
||||
label13.Location = new Point(241, 297);
|
||||
label13.Name = "label13";
|
||||
label13.Size = new Size(146, 20);
|
||||
label13.TabIndex = 27;
|
||||
label13.Text = "- Текущая ценность";
|
||||
//
|
||||
// label14
|
||||
//
|
||||
label14.AutoSize = true;
|
||||
label14.BackColor = Color.Transparent;
|
||||
label14.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
|
||||
label14.Location = new Point(29, 29);
|
||||
label14.Name = "label14";
|
||||
label14.Size = new Size(18, 20);
|
||||
label14.TabIndex = 28;
|
||||
label14.Text = "0";
|
||||
//
|
||||
// InformationForm
|
||||
//
|
||||
AutoScaleDimensions = new SizeF(8F, 20F);
|
||||
AutoScaleMode = AutoScaleMode.Font;
|
||||
ClientSize = new Size(1006, 487);
|
||||
Controls.Add(groupBox2);
|
||||
Controls.Add(buttonNext);
|
||||
Controls.Add(buttonPrev);
|
||||
Controls.Add(groupBoxMainWindow);
|
||||
Controls.Add(groupBoxInfo);
|
||||
Controls.Add(groupBoxAboutAlgoritm);
|
||||
Controls.Add(groupBoxInputWindow);
|
||||
MinimumSize = new Size(1024, 483);
|
||||
Name = "InformationForm";
|
||||
Text = "InformationForm";
|
||||
groupBoxAboutAlgoritm.ResumeLayout(false);
|
||||
groupBoxAboutAlgoritm.PerformLayout();
|
||||
groupBox3.ResumeLayout(false);
|
||||
groupBox3.PerformLayout();
|
||||
groupBox1.ResumeLayout(false);
|
||||
groupBox1.PerformLayout();
|
||||
groupBoxInputWindow.ResumeLayout(false);
|
||||
groupBoxInputWindow.PerformLayout();
|
||||
groupBoxElements.ResumeLayout(false);
|
||||
panelElement0.ResumeLayout(false);
|
||||
panelElement0.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)numericUpDownWeight0).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)numericUpDownValue0).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)pictureBoxElement0).EndInit();
|
||||
groupBoxIcons.ResumeLayout(false);
|
||||
groupBox4.ResumeLayout(false);
|
||||
groupBox4.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)pictureBoxBackpack).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)numericUpDownMaxWeight).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)numericUpDownCount).EndInit();
|
||||
groupBoxInfo.ResumeLayout(false);
|
||||
groupBoxInfo.PerformLayout();
|
||||
groupBox2.ResumeLayout(false);
|
||||
groupBox2.PerformLayout();
|
||||
groupBoxMainWindow.ResumeLayout(false);
|
||||
groupBoxMainWindow.PerformLayout();
|
||||
panel7.ResumeLayout(false);
|
||||
panel7.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)pictureBox1).EndInit();
|
||||
groupBoxTools.ResumeLayout(false);
|
||||
panelElem.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)pictureBoxElem0).EndInit();
|
||||
panel8.ResumeLayout(false);
|
||||
panel8.PerformLayout();
|
||||
ResumeLayout(false);
|
||||
}
|
||||
|
||||
#endregion
|
||||
private GroupBox groupBoxAboutAlgoritm;
|
||||
private Label label1;
|
||||
private Label label5;
|
||||
private Label label6;
|
||||
private Label label3;
|
||||
private Label label4;
|
||||
private Label label2;
|
||||
private Label label7;
|
||||
private Label label8;
|
||||
private Label label11;
|
||||
private Label label10;
|
||||
private Label label9;
|
||||
private GroupBox groupBox3;
|
||||
private GroupBox groupBox1;
|
||||
private Label label12;
|
||||
private Button buttonPrev;
|
||||
private Button buttonNext;
|
||||
private GroupBox groupBox2;
|
||||
private Label labelInputWind;
|
||||
private Label labelMainWind;
|
||||
private Label labelAboutAlgoritm;
|
||||
private Label labelInfo;
|
||||
private GroupBox groupBoxInfo;
|
||||
private Label label17;
|
||||
private GroupBox groupBoxInputWindow;
|
||||
private GroupBox groupBox4;
|
||||
private PictureBox pictureBoxBackpack;
|
||||
private NumericUpDown numericUpDownMaxWeight;
|
||||
private Label labelMaxWeight;
|
||||
private NumericUpDown numericUpDownCount;
|
||||
private Label labelCount;
|
||||
private Button buttonCreate;
|
||||
private GroupBox groupBoxIcons;
|
||||
private Panel panelDimond;
|
||||
private GroupBox groupBoxElements;
|
||||
private Panel panelElement0;
|
||||
private NumericUpDown numericUpDownWeight0;
|
||||
private Label label33;
|
||||
private NumericUpDown numericUpDownValue0;
|
||||
private Label label34;
|
||||
private PictureBox pictureBoxElement0;
|
||||
private Label label19;
|
||||
private Label label18;
|
||||
private Label label16;
|
||||
private Label label23;
|
||||
private Label label22;
|
||||
private Label label21;
|
||||
private Label label20;
|
||||
private GroupBox groupBoxMainWindow;
|
||||
private Panel panelElem;
|
||||
private Panel panelWeight0;
|
||||
private PictureBox pictureBoxElem0;
|
||||
private Panel panelValue0;
|
||||
private GroupBox groupBoxTools;
|
||||
private Button buttonStart;
|
||||
private Button buttonStep;
|
||||
private Panel panel7;
|
||||
private Label label24;
|
||||
private PictureBox pictureBox1;
|
||||
private Label label26;
|
||||
private Label label25;
|
||||
private Label label29;
|
||||
private Label label28;
|
||||
private Label label27;
|
||||
private Label label30;
|
||||
private Button buttonData;
|
||||
private Label label13;
|
||||
private Panel panel8;
|
||||
private Label label14;
|
||||
}
|
||||
}
|
@ -0,0 +1,94 @@
|
||||
namespace BackpackGreedyAlgorithm;
|
||||
|
||||
public partial class InformationForm : Form
|
||||
{
|
||||
|
||||
// 0 - Об окне инфомрмации
|
||||
// 1 - Об алгоритме
|
||||
// 2 - Об окне ввода данных
|
||||
// 3 - О главном окне
|
||||
|
||||
/// <summary>
|
||||
/// Индекс текущей страницы информации
|
||||
/// </summary>
|
||||
private int indInfWind = 0;
|
||||
|
||||
/// <summary>
|
||||
/// Список содержания
|
||||
/// </summary>
|
||||
private Label[] listLabel;
|
||||
|
||||
/// <summary>
|
||||
/// Список листов информации
|
||||
/// </summary>
|
||||
private GroupBox[] listWind;
|
||||
|
||||
/// <summary>
|
||||
/// Конструктор
|
||||
/// </summary>
|
||||
public InformationForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
listWind = new GroupBox[4]
|
||||
{
|
||||
groupBoxInfo,
|
||||
groupBoxAboutAlgoritm,
|
||||
groupBoxInputWindow,
|
||||
groupBoxMainWindow
|
||||
};
|
||||
|
||||
listLabel = new Label[4]
|
||||
{
|
||||
labelInfo,
|
||||
labelAboutAlgoritm,
|
||||
labelInputWind,
|
||||
labelMainWind
|
||||
};
|
||||
|
||||
buttonNext.Click += (sender, e) => SetVisible(indInfWind, ++indInfWind > 3 ? 0 : indInfWind);
|
||||
buttonPrev.Click += (sender, e) => SetVisible(indInfWind, --indInfWind < 0 ? 3 : indInfWind); ;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Установление текущей страницы
|
||||
/// </summary>
|
||||
/// <param name="oldInd"></param>
|
||||
/// <param name="newInd"></param>
|
||||
private void SetVisible(int oldInd, int newInd)
|
||||
{
|
||||
if (oldInd == newInd) return;
|
||||
listWind[oldInd].Visible = false;
|
||||
listLabel[oldInd].Font = null;
|
||||
listWind[newInd].Visible = true;
|
||||
listLabel[newInd].Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
|
||||
indInfWind = newInd;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Событие нажатия на заголовки содержание
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void Label_Click(object sender, EventArgs e)
|
||||
{
|
||||
switch ((sender as Label)?.Name)
|
||||
{
|
||||
case "labelInfo":
|
||||
SetVisible(indInfWind, 0);
|
||||
break;
|
||||
case "labelAboutAlgoritm":
|
||||
SetVisible(indInfWind, 1);
|
||||
break;
|
||||
case "labelInputWind":
|
||||
SetVisible(indInfWind, 2);
|
||||
break;
|
||||
case "labelMainWind":
|
||||
SetVisible(indInfWind, 3);
|
||||
break;
|
||||
default:
|
||||
SetVisible(indInfWind, 4);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
19592
BackpackGreedyAlgorithm/BackpackGreedyAlgorithm/InformationForm.resx
Normal file
1002
BackpackGreedyAlgorithm/BackpackGreedyAlgorithm/InputForm.Designer.cs
generated
Normal file
193
BackpackGreedyAlgorithm/BackpackGreedyAlgorithm/InputForm.cs
Normal file
@ -0,0 +1,193 @@
|
||||
using BackpackGreedyAlgorithm.Algorithm;
|
||||
using System.Linq;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace BackpackGreedyAlgorithm;
|
||||
|
||||
public partial class InputForm : Form
|
||||
{
|
||||
/// <summary>
|
||||
/// Список панелей элементов
|
||||
/// </summary>
|
||||
private List<Panel> panelElements = new();
|
||||
|
||||
/// <summary>
|
||||
/// Список картинок
|
||||
/// </summary>
|
||||
private List<Image> Images = new();
|
||||
|
||||
/// <summary>
|
||||
/// Создание делегата
|
||||
/// </summary>
|
||||
private event Action<Datas>? action;
|
||||
|
||||
/// <summary>
|
||||
/// Конструктор
|
||||
/// </summary>
|
||||
public InputForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
panelElement0.DragDrop += PanelElement_DragDrop;
|
||||
panelElement0.DragEnter += PanelElement_DragEnter;
|
||||
panelElement1.DragDrop += PanelElement_DragDrop;
|
||||
panelElement1.DragEnter += PanelElement_DragEnter;
|
||||
panelElement2.DragDrop += PanelElement_DragDrop;
|
||||
panelElement2.DragEnter += PanelElement_DragEnter;
|
||||
panelElement3.DragDrop += PanelElement_DragDrop;
|
||||
panelElement3.DragEnter += PanelElement_DragEnter;
|
||||
panelElement4.DragDrop += PanelElement_DragDrop;
|
||||
panelElement4.DragEnter += PanelElement_DragEnter;
|
||||
panelElement5.DragDrop += PanelElement_DragDrop;
|
||||
panelElement5.DragEnter += PanelElement_DragEnter;
|
||||
panelElement6.DragDrop += PanelElement_DragDrop;
|
||||
panelElement6.DragEnter += PanelElement_DragEnter;
|
||||
panelElement7.DragDrop += PanelElement_DragDrop;
|
||||
panelElement7.DragEnter += PanelElement_DragEnter;
|
||||
panelElement8.DragDrop += PanelElement_DragDrop;
|
||||
panelElement8.DragEnter += PanelElement_DragEnter;
|
||||
|
||||
buttonCancel.Click += (sender, e) => Close();
|
||||
|
||||
panelElements.Add(panelElement0);
|
||||
panelElements.Add(panelElement1);
|
||||
panelElements.Add(panelElement2);
|
||||
panelElements.Add(panelElement3);
|
||||
panelElements.Add(panelElement4);
|
||||
panelElements.Add(panelElement5);
|
||||
panelElements.Add(panelElement6);
|
||||
panelElements.Add(panelElement7);
|
||||
panelElements.Add(panelElement8);
|
||||
|
||||
Images.Add((groupBoxIcons.Controls["panelDimond"] as Panel).BackgroundImage);
|
||||
Images.Add((groupBoxIcons.Controls["panelEmerald"] as Panel).BackgroundImage);
|
||||
Images.Add((groupBoxIcons.Controls["panelGold"] as Panel).BackgroundImage);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Кнопка создания элементов
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void ButtonCreate_Click(object sender, EventArgs e)
|
||||
{
|
||||
groupBoxElements.Enabled = true;
|
||||
groupBoxIcons.Enabled = true;
|
||||
|
||||
for (int ind = 0; ind < 9; ind++)
|
||||
{
|
||||
if (ind < (int)numericUpDownCount.Value) panelElements[ind].Visible = true;
|
||||
else panelElements[ind].Visible = false;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Кнопка принятий данных
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void ButtonAccept_Click(object sender, EventArgs e)
|
||||
{
|
||||
Datas data = GetData();
|
||||
action?.Invoke(data);
|
||||
Close();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Получение параметров из формы
|
||||
/// </summary>
|
||||
/// <returns>Параметр</returns>
|
||||
private Datas GetData()
|
||||
{
|
||||
List<Gem> gems = new List<Gem>();
|
||||
|
||||
var regex = new Regex("[0-9]");
|
||||
|
||||
int i = 0;
|
||||
|
||||
foreach (Panel elem in panelElements)
|
||||
{
|
||||
if (elem.Visible)
|
||||
{
|
||||
Image image = Images[0];
|
||||
int weight = 20;
|
||||
int value = 1;
|
||||
|
||||
foreach (Control info in elem.Controls)
|
||||
{
|
||||
String type = regex.Replace(info.Name, String.Empty);
|
||||
|
||||
switch (type)
|
||||
{
|
||||
case "pictureBoxElement":
|
||||
PictureBox pb = (PictureBox)info;
|
||||
image = pb.BackgroundImage ?? Images[0];
|
||||
break;
|
||||
case "numericUpDownValue":
|
||||
NumericUpDown nudV = (NumericUpDown)info;
|
||||
value = (int?)nudV.Value ?? 1;
|
||||
break;
|
||||
case "numericUpDownWeight":
|
||||
NumericUpDown nudW = (NumericUpDown)info;
|
||||
weight = (int?)nudW.Value ?? 20;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
gems.Add(new(image, weight, value, i));
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
return new((int)numericUpDownMaxWeight.Value, gems);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Добавление ивента
|
||||
/// </summary>
|
||||
/// <param name="e"></param>
|
||||
public void AddEvent(Action<Datas> e)
|
||||
{
|
||||
action += e;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Событие нажатия панели с иконками
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void Panel_MouseDown(object sender, MouseEventArgs e)
|
||||
{
|
||||
(sender as Panel)?.DoDragDrop((sender as Panel)?.BackgroundImage, DragDropEffects.Copy | DragDropEffects.Move);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Событие DragDrop
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void PanelElement_DragDrop(object sender, DragEventArgs e)
|
||||
{
|
||||
foreach (Control picture in (sender as Panel).Controls)
|
||||
{
|
||||
if (picture.GetType() == typeof(PictureBox))
|
||||
{
|
||||
picture.BackgroundImage = e.Data?.GetData(typeof(Bitmap)) as Bitmap;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Проверка что перетаскиваемый элемент Bitmap
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void PanelElement_DragEnter(object sender, DragEventArgs e)
|
||||
{
|
||||
e.Effect = e.Data.GetDataPresent(typeof(Bitmap)) ? DragDropEffects.Copy : DragDropEffects.None;
|
||||
}
|
||||
|
||||
// TODO Сделать кнопку рандомайзер значений
|
||||
}
|
556
BackpackGreedyAlgorithm/BackpackGreedyAlgorithm/InputForm.resx
Normal file
@ -0,0 +1,556 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="pictureBoxBackpack.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
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
|
||||
2kqzl9lPRq8AAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="panelDimond.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
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
|
||||
io3mA3X6P/H8qENMPlbNAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="panelEmerald.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAh
|
||||
hQAAIYUBsqnhPgAAAvdJREFUeF7tmsFOFEEURYce+AVNINGFAdeajOwVlyr6AfgHJsrEhUuBjQnK2ugY
|
||||
40bUxERw4ScYceEOv0EYZUXIUCmroZ7punXHLqZbo8y7yVnw0tX97oH0JEDDWtuXupJdG7GD4I9XDusm
|
||||
0KFQV1i5FPzxymHdBDoU6gorl4I/Xjmsm0CHQl1h5VLwxyuHdRPoUKgrrFwK/njlsG4CHQqDxC0+ikXe
|
||||
m8/IHpkFfLBfgnvk+EccOaybQIfCIHGLqgBcnBRUAWQW8N8IwCXHbowZLHN760nArW+Pe+Obc/Z3THy9
|
||||
aZuvLgTgszx+k/5h3QQ6FFKCC6kAFaACjq+A0dm4MJZdNxsGC+M1b/c/RgKwbPPNdPCcAx5NhTw4s4PX
|
||||
+FWDsG4CHQoYFaAChkwA3nzkasOumY0ALHtn62nKSzAoTwUQIgHLkzZbOBUCO+dgryJ0KOCNVIAKUAEq
|
||||
AAVc7N6PwMIoxFEqqd19FhdOAXbOwV5F6FDAG6kAFaAC8tI7RZiAme5iAJZd2/9k29sdU2SmuxBw+ceS
|
||||
aa62bMDLlimSPT+3my2dNgGwcw72KkKHAt4o9ScAQQHvnAD8juOZS98X6SdBwIvzu//kpwCiAlSACkAB
|
||||
vUEE0Lc+AjvnYK8idCjgjVSAClABQy7gSiNYmi3OwDMOU3bN/HanXMDy5F/+FFABKiBaFIsw8Izj+AjA
|
||||
X21NbM6VlkthvtuJCjfvngy5N64CVIAKUAF/TgCG/XEU39TN19MGpUTXrLZ6WC5ihRRG2if2cB+/ahDW
|
||||
TaBDAaMCVMCQC2DBBbLrmcHCUbmHU9E1tCAQPesQv0n/sG4CHQopiRZSASpABWC5Yy0A4xaK/l0+EpDC
|
||||
ytnwHg7/iIO4r39RFtZNoENhkLiFVEC+bAArWEaJgKOEdRPoUBgkbtHhFsDiXoz5yzFkthx/vHJYN4EO
|
||||
hbqC38lU/PHKYd0EOhTqCiuXgj9eOaybQIdCXWHlUvDHK4d1E+hQqCusXAr+eOWwbofYxk9uHRUXCZU9
|
||||
sgAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="panelGold.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
|
||||
vAAADrwBlbxySQAAAd1JREFUeF7tm81Nw1AQhCM6QIgeqIUmuNACrdAHFMOJA1cK4IIUPQRaw/OXiTfG
|
||||
P7G9O9J3Wb+8nRlHkTiwK6WERg4jIYeRkMNIyGEk5DASchgJOYzE4vV8f1m6sGPblQpdY8e2KxW6xo5t
|
||||
Vyp0jR1bj1SILj5fbjvheVuzXNGwhwpdw/O2ZrmiYQ8Vuobnbc1yRcMeKnQNz9ua+UQDHvuPu0nhPrM5
|
||||
nbjQQ5keE+4zm9OJCz2U6THhPrM5nbjQQ5keE+4zm6eLF3jwR0mZmhP6sVinS4XsgguVqTmhn4ebi18s
|
||||
YrdUyC64UJmaE/rJArwCGKjs31qoJUuCfkl91iK3FamAb+pvxM+3IgvIAtoF8EfEu3BsuM+Dn399vGrB
|
||||
PFlAFpAF9CuACzwDhOc9+Pn3p+sWDOjBPFlAFpAFDCuAzw80cSDC++iPZAFZQPAC7I/gP7EAXsgAvJDP
|
||||
+Xllug+8j/sJ33CNRW4rC8gCtlWAxfq/vEK4cGgBPE/UmzyGRRimLCALWFYBZut86lsInxP15o5hFs6r
|
||||
LCALGLcAu3a9YiFEvckGu2LdUqFrVPAGu2LdUqFrVPAGu2LdUqFr7Nh6VMQ/EURCDiMhh5GQw0jIYSTk
|
||||
MBJyGAk5jEPZfQHhwks0ntFtBgAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
1173
BackpackGreedyAlgorithm/BackpackGreedyAlgorithm/MainForm.Designer.cs
generated
Normal file
168
BackpackGreedyAlgorithm/BackpackGreedyAlgorithm/MainForm.cs
Normal file
@ -0,0 +1,168 @@
|
||||
using BackpackGreedyAlgorithm.Storages;
|
||||
using BackpackGreedyAlgorithm.Communications;
|
||||
using BackpackGreedyAlgorithm.Algorithm;
|
||||
using static System.Runtime.InteropServices.JavaScript.JSType;
|
||||
|
||||
namespace BackpackGreedyAlgorithm;
|
||||
|
||||
public partial class MainForm : Form
|
||||
{
|
||||
/// <summary>
|
||||
/// Список панелей драгоценностей
|
||||
/// </summary>
|
||||
List<Panel> listElement = new List<Panel>();
|
||||
|
||||
/// <summary>
|
||||
/// Хранилище
|
||||
/// </summary>
|
||||
private Storage _storage;
|
||||
|
||||
/// <summary>
|
||||
/// Управленец
|
||||
/// </summary>
|
||||
private Manager _manager;
|
||||
|
||||
/// <summary>
|
||||
/// Визуализатор
|
||||
/// </summary>
|
||||
private Visualizer _visualizer;
|
||||
|
||||
/// <summary>
|
||||
/// Параметр
|
||||
/// </summary>
|
||||
private Datas _data;
|
||||
|
||||
/// <summary>
|
||||
/// Конструктор
|
||||
/// </summary>
|
||||
public MainForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
listElement.Add(panelElem0);
|
||||
listElement.Add(panelElem1);
|
||||
listElement.Add(panelElem2);
|
||||
listElement.Add(panelElem3);
|
||||
listElement.Add(panelElem4);
|
||||
listElement.Add(panelElem5);
|
||||
listElement.Add(panelElem6);
|
||||
listElement.Add(panelElem7);
|
||||
listElement.Add(panelElem8);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Кнопки шагов
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void ButtonStep_Click(object sender, EventArgs e)
|
||||
{
|
||||
switch (((Button)sender).Name)
|
||||
{
|
||||
case "buttonStepNext":
|
||||
if (_storage.GetStatus().maxWeight <= _storage.GetStatus().weight)
|
||||
{
|
||||
MessageBox.Show("Алгоритм завершился", "Инфо");
|
||||
return;
|
||||
}
|
||||
if (_storage.statuses.Count == _storage.currentStatus + 1) _storage = _manager.MakeStap();
|
||||
else _storage.SetNextStatus();
|
||||
break;
|
||||
case "buttonStepPrev":
|
||||
_storage.SetPrevStatus();
|
||||
break;
|
||||
case "buttonReset":
|
||||
_storage.SetFirstStatus();
|
||||
break;
|
||||
}
|
||||
Status status = _storage.GetStatus();
|
||||
_visualizer.Update(status.gems, status.weight, status.value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Кнопка вызова окна входных данных
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void ButtonData_Click(object sender, EventArgs e)
|
||||
{
|
||||
InputForm form = new InputForm();
|
||||
form.Show();
|
||||
form.AddEvent(InitData);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Определение параметра
|
||||
/// </summary>
|
||||
/// <param name="data">Параметр</param>
|
||||
private void InitData(Datas data)
|
||||
{
|
||||
_data = data;
|
||||
_visualizer = new(listElement, data.maxWeight, labelBackpackValue, labelBackpackWeight);
|
||||
_manager = new(_data);
|
||||
_storage = _manager.storage;
|
||||
_visualizer.Update(_data.gems, 0, 0);
|
||||
groupBoxElems.Enabled = true;
|
||||
groupBoxTools.Enabled = true;
|
||||
}
|
||||
|
||||
|
||||
// TODO Сделать меню с функциями:
|
||||
// - Сохранения
|
||||
// - Загрузки
|
||||
|
||||
/// <summary>
|
||||
/// Выпадающее меню для сохранения данных
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void SaveToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (saveFileDialog.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
if (_storage == null)
|
||||
{
|
||||
MessageBox.Show("Файл не удалось сохранить", "Инфо");
|
||||
return;
|
||||
}
|
||||
Storage.Save(saveFileDialog.FileName, _storage);
|
||||
MessageBox.Show("Файл сохранён", "Инфо");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Выпадающее меню для загрузки данных
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void LoadToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (openFileDialog.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
_storage = Storage.Load(openFileDialog.FileName);
|
||||
if (_storage == null) MessageBox.Show($"Файл {openFileDialog.FileName.Split("\\")[0]} не найден");
|
||||
else
|
||||
{
|
||||
Status status = _storage.GetStatus();
|
||||
_manager = new(null);
|
||||
_manager.SetStatusAlgoritm(status, _storage);
|
||||
_visualizer = new(listElement, status.maxWeight, labelBackpackValue, labelBackpackWeight);
|
||||
_visualizer.Update(status.gems, status.weight, status.value);
|
||||
groupBoxElems.Enabled = true;
|
||||
groupBoxTools.Enabled = true;
|
||||
MessageBox.Show("Файл загружен");
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Выпадающее меню открывающее форму информации
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void InfoToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
InformationForm info = new InformationForm();
|
||||
info.Show();
|
||||
}
|
||||
}
|
93974
BackpackGreedyAlgorithm/BackpackGreedyAlgorithm/MainForm.resx
Normal file
17
BackpackGreedyAlgorithm/BackpackGreedyAlgorithm/Program.cs
Normal file
@ -0,0 +1,17 @@
|
||||
namespace BackpackGreedyAlgorithm
|
||||
{
|
||||
internal static class Program
|
||||
{
|
||||
/// <summary>
|
||||
/// The main entry point for the application.
|
||||
/// </summary>
|
||||
[STAThread]
|
||||
static void Main()
|
||||
{
|
||||
// To customize application configuration such as set high DPI settings or default font,
|
||||
// see https://aka.ms/applicationconfiguration.
|
||||
ApplicationConfiguration.Initialize();
|
||||
Application.Run(new MainForm());
|
||||
}
|
||||
}
|
||||
}
|
113
BackpackGreedyAlgorithm/BackpackGreedyAlgorithm/Properties/Resources.Designer.cs
generated
Normal file
@ -0,0 +1,113 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// Этот код создан программой.
|
||||
// Исполняемая версия:4.0.30319.42000
|
||||
//
|
||||
// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
|
||||
// повторной генерации кода.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace BackpackGreedyAlgorithm.Properties {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Класс ресурса со строгой типизацией для поиска локализованных строк и т.д.
|
||||
/// </summary>
|
||||
// Этот класс создан автоматически классом StronglyTypedResourceBuilder
|
||||
// с помощью такого средства, как ResGen или Visual Studio.
|
||||
// Чтобы добавить или удалить член, измените файл .ResX и снова запустите ResGen
|
||||
// с параметром /str или перестройте свой проект VS.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Возвращает кэшированный экземпляр ResourceManager, использованный этим классом.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("BackpackGreedyAlgorithm.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Перезаписывает свойство CurrentUICulture текущего потока для всех
|
||||
/// обращений к ресурсу с помощью этого класса ресурса со строгой типизацией.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Поиск локализованного ресурса типа System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap Diamond {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("Diamond", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Поиск локализованного ресурса типа System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap Emerald {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("Emerald", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Поиск локализованного ресурса типа System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap Gold {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("Gold", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Поиск локализованного ресурса типа System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap Value {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("Value", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Поиск локализованного ресурса типа System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap Weigth {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("Weigth", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,136 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="Value" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\img\Value.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="Weigth" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\img\Weigth.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="Diamond" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\img\Diamond.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="Emerald" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\img\Emerald.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="Gold" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\img\Gold.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
</root>
|
BIN
BackpackGreedyAlgorithm/BackpackGreedyAlgorithm/Saves/save1.dat
Normal file
BIN
BackpackGreedyAlgorithm/BackpackGreedyAlgorithm/Saves/save2.dat
Normal file
@ -0,0 +1,43 @@
|
||||
using BackpackGreedyAlgorithm.Algorithm;
|
||||
|
||||
namespace BackpackGreedyAlgorithm.Storages;
|
||||
|
||||
[Serializable]
|
||||
public class Status
|
||||
{
|
||||
/// <summary>
|
||||
/// Список драгоценностей
|
||||
/// </summary>
|
||||
public List<Gem> gems;
|
||||
|
||||
/// <summary>
|
||||
/// Максимальный вес
|
||||
/// </summary>
|
||||
public int maxWeight;
|
||||
|
||||
/// <summary>
|
||||
/// Текущая стоимость драг. в рюкзаке
|
||||
/// </summary>
|
||||
public int value;
|
||||
|
||||
/// <summary>
|
||||
/// Текущий вес драг. в рюкзаке
|
||||
/// </summary>
|
||||
public int weight;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Конструктор
|
||||
/// </summary>
|
||||
/// <param name="maxWeight">Максимальный вес</param>
|
||||
/// <param name="weight">Текущий вес драг. в рюкзаке</param>
|
||||
/// <param name="value">Текущая стоимость драг. в рюкзаке</param>
|
||||
/// <param name="gems">Список драгоценностей</param>
|
||||
public Status(int maxWeight, int weight, int value, List<Gem> gems)
|
||||
{
|
||||
this.maxWeight = maxWeight;
|
||||
this.weight = weight;
|
||||
this.value = value;
|
||||
this.gems = gems;
|
||||
}
|
||||
}
|
@ -0,0 +1,104 @@
|
||||
|
||||
using System.Runtime.Serialization.Formatters.Binary;
|
||||
#pragma warning disable SYSLIB0011
|
||||
|
||||
namespace BackpackGreedyAlgorithm.Storages;
|
||||
|
||||
[Serializable]
|
||||
public class Storage
|
||||
{
|
||||
/// <summary>
|
||||
/// Список состояний
|
||||
/// </summary>
|
||||
public readonly List<Status> statuses = new();
|
||||
|
||||
/// <summary>
|
||||
/// Текущее состояние
|
||||
/// (-1 - список состояний пуст)
|
||||
/// </summary>
|
||||
public int currentStatus = -1;
|
||||
|
||||
/// <summary>
|
||||
/// Бинарный сериализатор
|
||||
/// </summary>
|
||||
[NonSerialized]
|
||||
static BinaryFormatter formatter = new BinaryFormatter();
|
||||
|
||||
/// <summary>
|
||||
/// Добавить статус в список
|
||||
/// </summary>
|
||||
/// <param name="status">Добавляемый статус</param>
|
||||
public void AddStatus(Status? status)
|
||||
{
|
||||
if (status == null) return;
|
||||
statuses.Add(status);
|
||||
currentStatus++;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Установить следующий статус
|
||||
/// </summary>
|
||||
public void SetNextStatus()
|
||||
{
|
||||
if (currentStatus + 1 > statuses.Count) return;
|
||||
currentStatus++;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Установить предыдущий статус
|
||||
/// </summary>
|
||||
public void SetPrevStatus()
|
||||
{
|
||||
if (currentStatus - 1 < 0) return;
|
||||
currentStatus--;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Установить первый статус
|
||||
/// </summary>
|
||||
public void SetFirstStatus()
|
||||
{
|
||||
if (currentStatus == -1) return;
|
||||
currentStatus = 0;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Получить установленный статус
|
||||
/// </summary>
|
||||
public Status GetStatus()
|
||||
{
|
||||
return statuses[currentStatus];
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Сохранить текущее состояние работы программы
|
||||
/// </summary>
|
||||
/// <param name="filename">Путь к файлу или имя файла</param>
|
||||
public static void Save(string filename, Storage storage)
|
||||
{
|
||||
if (File.Exists(filename))
|
||||
{
|
||||
File.Delete(filename);
|
||||
}
|
||||
|
||||
using (FileStream fs = new(filename, FileMode.OpenOrCreate))
|
||||
{
|
||||
formatter.Serialize(fs, storage);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Загрузить состояние работы программы
|
||||
/// </summary>
|
||||
/// <param name="filename">Путь к файлу</param>
|
||||
/// <returns>Загруженное хранилище</returns>
|
||||
public static Storage? Load(string filename)
|
||||
{
|
||||
if (!File.Exists(filename)) return null;
|
||||
|
||||
using (FileStream fs = new FileStream(filename, FileMode.OpenOrCreate))
|
||||
{
|
||||
return (Storage)formatter.Deserialize(fs);
|
||||
}
|
||||
}
|
||||
}
|
BIN
BackpackGreedyAlgorithm/BackpackGreedyAlgorithm/img/Backpack.png
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
BackpackGreedyAlgorithm/BackpackGreedyAlgorithm/img/Diamond.png
Normal file
After Width: | Height: | Size: 4.0 KiB |
BIN
BackpackGreedyAlgorithm/BackpackGreedyAlgorithm/img/Emerald.png
Normal file
After Width: | Height: | Size: 2.1 KiB |
BIN
BackpackGreedyAlgorithm/BackpackGreedyAlgorithm/img/Gold.png
Normal file
After Width: | Height: | Size: 2.0 KiB |
BIN
BackpackGreedyAlgorithm/BackpackGreedyAlgorithm/img/Value.png
Normal file
After Width: | Height: | Size: 158 KiB |
BIN
BackpackGreedyAlgorithm/BackpackGreedyAlgorithm/img/Weigth.png
Normal file
After Width: | Height: | Size: 290 KiB |
BIN
BackpackGreedyAlgorithm/BackpackGreedyAlgorithm/img/фон.png
Normal file
After Width: | Height: | Size: 1.2 MiB |