namespace Artilleries { public partial class FormArtillery : Form { private DrawingArtillery _artillery; public DrawingArtillery SelectedArtillery { get; private set; } public FormArtillery() { InitializeComponent(); } private void Draw() { Bitmap bmp = new(pictureBoxArtilleries.Width, pictureBoxArtilleries.Height); Graphics gr = Graphics.FromImage(bmp); _artillery?.DrawTransport(gr); pictureBoxArtilleries.Image = bmp; } private void SetData(DrawingArtillery artillery) { Random rnd = new(); artillery.SetPosition(rnd.Next(10, 100), rnd.Next(10, 100), pictureBoxArtilleries.Width, pictureBoxArtilleries.Height); SpeedStatusLabel.Text = $"Скорость: {artillery.Artillery.Speed}"; WeightStatusLabel.Text = $"Вес: {artillery.Artillery.Weight}"; ColorStatusLabel.Text = $"Цвет: {artillery.Artillery.BodyColor.Name}"; } private void buttonCreate_Click(object sender, EventArgs e) { Random rnd = new(); Color color = Color.FromArgb(rnd.Next(0, 256), rnd.Next(0, 256), rnd.Next(0, 256)); ColorDialog dialog = new(); if (dialog.ShowDialog() == DialogResult.OK) { color = dialog.Color; } _artillery = new DrawingArtillery(rnd.Next(100, 300), rnd.Next(1000, 2000), color); SetData(_artillery); Draw(); } private void createAdvancedButton_Click(object sender, EventArgs e) { Random rnd = new(); Color color = Color.FromArgb(rnd.Next(0, 256), rnd.Next(0, 256), rnd.Next(0, 256)); ColorDialog dialog = new(); if (dialog.ShowDialog() == DialogResult.OK) { color = dialog.Color; } Color dopColor = Color.FromArgb(rnd.Next(0, 256), rnd.Next(0, 256), rnd.Next(0, 256)); ColorDialog dialogDop = new(); if (dialogDop.ShowDialog() == DialogResult.OK) { dopColor = dialogDop.Color; } _artillery = new DrawingAdvancedArtillery( rnd.Next(100, 300), rnd.Next(1000, 2000), color, dopColor, rnd.Next(0, 2) == 1, rnd.Next(0, 2) == 1 ); SetData(_artillery); Draw(); } private void buttonMove_Click(object sender, EventArgs e) { string name = ((Button)sender)?.Name ?? string.Empty; switch (name) { case "buttonUp": _artillery?.MoveTransport(Direction.Up); break; case "buttonDown": _artillery?.MoveTransport(Direction.Down); break; case "buttonLeft": _artillery?.MoveTransport(Direction.Left); break; case "buttonRight": _artillery?.MoveTransport(Direction.Right); break; } Draw(); } private void pictureBoxArtilleries_Resize(object sender, EventArgs e) { _artillery?.ChangeBorders(pictureBoxArtilleries.Width, pictureBoxArtilleries.Height); Draw(); } private void selectArtilleryButton_Click(object sender, EventArgs e) { SelectedArtillery = _artillery; DialogResult = DialogResult.OK; } } }