From b6b102355af113406047263b7d3ad0018ab8a329 Mon Sep 17 00:00:00 2001 From: JuneHasGone <147802413+JuneHasGone@users.noreply.github.com> Date: Sun, 4 Feb 2024 08:50:18 +0400 Subject: [PATCH] =?UTF-8?q?=D0=9B=D0=B0=D0=B1=D0=B0=201.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ProjectOOP/ProjectOOP.sln | 25 ++ ProjectOOP/ProjectOOP/DirectionType.cs | 29 +++ ProjectOOP/ProjectOOP/DrawningCruiser.cs | 239 ++++++++++++++++++ ProjectOOP/ProjectOOP/EntityCruiser.cs | 65 +++++ ProjectOOP/ProjectOOP/Form1.Designer.cs | 39 +++ ProjectOOP/ProjectOOP/Form1.cs | 10 + ProjectOOP/ProjectOOP/Form1.resx | 120 +++++++++ ProjectOOP/ProjectOOP/FormCruiser.Designer.cs | 141 +++++++++++ ProjectOOP/ProjectOOP/FormCruiser.cs | 87 +++++++ ProjectOOP/ProjectOOP/FormCruiser.resx | 120 +++++++++ ProjectOOP/ProjectOOP/Program.cs | 18 ++ ProjectOOP/ProjectOOP/ProjectOOP.csproj | 26 ++ .../Properties/Resources.Designer.cs | 103 ++++++++ .../ProjectOOP/Properties/Resources.resx | 133 ++++++++++ .../Resources/Стрелка вверх1.png | Bin 0 -> 6683 bytes .../Resources/Стрелка влево1.png | Bin 0 -> 5878 bytes .../Resources/Стрелка вниз1.png | Bin 0 -> 6633 bytes .../Стрелка вправо1.png | Bin 0 -> 5832 bytes 18 files changed, 1155 insertions(+) create mode 100644 ProjectOOP/ProjectOOP.sln create mode 100644 ProjectOOP/ProjectOOP/DirectionType.cs create mode 100644 ProjectOOP/ProjectOOP/DrawningCruiser.cs create mode 100644 ProjectOOP/ProjectOOP/EntityCruiser.cs create mode 100644 ProjectOOP/ProjectOOP/Form1.Designer.cs create mode 100644 ProjectOOP/ProjectOOP/Form1.cs create mode 100644 ProjectOOP/ProjectOOP/Form1.resx create mode 100644 ProjectOOP/ProjectOOP/FormCruiser.Designer.cs create mode 100644 ProjectOOP/ProjectOOP/FormCruiser.cs create mode 100644 ProjectOOP/ProjectOOP/FormCruiser.resx create mode 100644 ProjectOOP/ProjectOOP/Program.cs create mode 100644 ProjectOOP/ProjectOOP/ProjectOOP.csproj create mode 100644 ProjectOOP/ProjectOOP/Properties/Resources.Designer.cs create mode 100644 ProjectOOP/ProjectOOP/Properties/Resources.resx create mode 100644 ProjectOOP/ProjectOOP/Resources/Стрелка вверх1.png create mode 100644 ProjectOOP/ProjectOOP/Resources/Стрелка влево1.png create mode 100644 ProjectOOP/ProjectOOP/Resources/Стрелка вниз1.png create mode 100644 ProjectOOP/ProjectOOP/Resources/Стрелка вправо1.png diff --git a/ProjectOOP/ProjectOOP.sln b/ProjectOOP/ProjectOOP.sln new file mode 100644 index 0000000..cb05e9a --- /dev/null +++ b/ProjectOOP/ProjectOOP.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.8.34330.188 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProjectOOP", "ProjectOOP\ProjectOOP.csproj", "{205123A2-35A2-499F-98A2-114737A93769}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {205123A2-35A2-499F-98A2-114737A93769}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {205123A2-35A2-499F-98A2-114737A93769}.Debug|Any CPU.Build.0 = Debug|Any CPU + {205123A2-35A2-499F-98A2-114737A93769}.Release|Any CPU.ActiveCfg = Release|Any CPU + {205123A2-35A2-499F-98A2-114737A93769}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {6008E0BD-3FE3-4125-A659-882A1CA20F63} + EndGlobalSection +EndGlobal diff --git a/ProjectOOP/ProjectOOP/DirectionType.cs b/ProjectOOP/ProjectOOP/DirectionType.cs new file mode 100644 index 0000000..a50b548 --- /dev/null +++ b/ProjectOOP/ProjectOOP/DirectionType.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProjectOOP +{ + public enum DirectionType + { + /// + /// Вверх + /// + Up = 1, + /// + /// Вниз + /// + Down = 2, + /// + /// Влево + /// + Left = 3, + /// + /// Вправо + /// + Right = 4 + } + +} diff --git a/ProjectOOP/ProjectOOP/DrawningCruiser.cs b/ProjectOOP/ProjectOOP/DrawningCruiser.cs new file mode 100644 index 0000000..3856d89 --- /dev/null +++ b/ProjectOOP/ProjectOOP/DrawningCruiser.cs @@ -0,0 +1,239 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProjectOOP +{ + public class DrawningCruiser + { + /// + /// Класс-сущность + /// + public EntityCruiser? EntityCruiser { get; private set; } + /// + /// Ширина окна + /// + private int? _pictureWidth; + /// + /// Высота окна + /// + private int? _pictureHeight; + /// + /// Левая координата прорисовки автомобиля + /// + private int? _startPosX; + /// + /// Верхняя кооридната прорисовки автомобиля + /// + private int? _startPosY; + /// + /// Ширина прорисовки автомобиля + /// + private readonly int _drawningCruiserWidth = 410; + /// + /// Высота прорисовки автомобиля + /// + private readonly int _drawningCruiserHeight = 110; + /// + /// Инициализация свойств + /// + /// Скорость + /// Вес + /// Основной цвет + /// Дополнительный цвет + /// Признак наличия обвеса + /// Признак наличия антикрыла + /// Признак наличия гоночной полосы + public void Init(int speed, double weight, Color bodyColor, Color + additionalColor, bool bodyKit, bool wing, bool sportLine) + { + EntityCruiser = new EntityCruiser(); + EntityCruiser.Init(speed, weight, bodyColor, additionalColor, + bodyKit, wing, sportLine); + _pictureWidth = null; + _pictureHeight = null; + _startPosX = null; + _startPosY = null; + } + /// + /// Установка границ поля + /// + /// Ширина поля + /// Высота поля + /// true - границы заданы, false - проверка не пройдена, нельзя + public bool SetPictureSize(int width, int height) + { + if (_drawningCruiserWidth <= width && _drawningCruiserHeight <= height) { + _pictureWidth = width; + _pictureHeight = height; + if(_startPosX.HasValue && _startPosY.HasValue) + { + if(_startPosX + _drawningCruiserWidth <= _pictureWidth) + { + _startPosX = 0; + } + if (_startPosY + _drawningCruiserHeight <= _pictureHeight) + { + _startPosY = 0; + } + } + return true; + } + return false; + } + /// + /// Установка позиции + /// + /// Координата X + /// Координата Y + public void SetPosition(int x, int y) + { + if (!_pictureHeight.HasValue || !_pictureWidth.HasValue) + { + return; + } + + if(x + _drawningCruiserWidth > _pictureWidth.Value || y + _drawningCruiserHeight > _pictureHeight.Value || x<0 || y<0) { + _startPosX = 0; + _startPosY = 0; + return; + } + _startPosX = x; + _startPosY = y; + } + /// + /// Изменение направления перемещения + /// + /// Направление + /// true - перемещене выполнено, false - перемещение + //невозможно + public bool MoveTransport(DirectionType direction) + { + if (EntityCruiser == null || !_startPosX.HasValue || !_startPosY.HasValue) + { + return false; + } + switch (direction) + { + //влево + case DirectionType.Left: + if (_startPosX.Value - EntityCruiser.Step > 0) + { + _startPosX -= (int)EntityCruiser.Step; + } + return true; + //вверх + case DirectionType.Up: + if (_startPosY.Value - EntityCruiser.Step > 0) + { + _startPosY -= (int)EntityCruiser.Step; + } + return true; + // вправо + case DirectionType.Right: + if(_startPosX.Value + EntityCruiser.Step + _drawningCruiserWidth < _pictureWidth) + { + _startPosX += (int)EntityCruiser.Step; + } + return true; + //вниз + case DirectionType.Down: + if (_startPosY.Value + EntityCruiser.Step + _drawningCruiserHeight < _pictureHeight) + { + _startPosY += (int)EntityCruiser.Step; + } + return true; + default: + return false; + } + } + /// + /// Прорисовка объекта + /// + /// + public void DrawTransport(Graphics g) + { + if (EntityCruiser == null || !_startPosX.HasValue || + !_startPosY.HasValue) + { + return; + } + Pen pen = new(Color.Black); + Brush additionalBrush = new + SolidBrush(EntityCruiser.AdditionalColor); + Brush brRed = new SolidBrush(Color.Red); + Brush br = new SolidBrush(EntityCruiser.BodyColor); + Brush brBlue = new SolidBrush(Color.LightBlue); + Brush brBlack = new SolidBrush(Color.Black); + // корпус корабля + g.DrawLine(pen, _startPosX.Value + 10, _startPosY.Value + 10, _startPosX.Value + 200, _startPosY.Value + 10); + Point point1 = new Point(_startPosX.Value + 10, _startPosY.Value + 10); + Point point2 = new Point(_startPosX.Value + 310, _startPosY.Value + 10); + Point point3 = new Point(_startPosX.Value + 410, _startPosY.Value + 60); + Point point4 = new Point(_startPosX.Value + 310, _startPosY.Value + 110); + Point point5 = new Point(_startPosX.Value + 10, _startPosY.Value + 110); + Point[] points = + { + point1,point2,point3,point4,point5 + }; + + g.FillPolygon(br, points); + g.DrawPolygon(pen, points); + // двигатели + g.FillRectangle(brBlack, _startPosX.Value + 5, _startPosY.Value + 25, 5, 30); + g.FillRectangle(brBlack, _startPosX.Value + 5, _startPosY.Value + 65, 5, 30); + + + //башни с орудиями + if (EntityCruiser.Turerts) + { + Pen pen2 = new(Color.Black, 3); + Pen pen3 = new(Color.Black, 5); + g.FillEllipse(additionalBrush, _startPosX.Value + 140, +_startPosY.Value + 15, 26, 26); + g.DrawEllipse(pen, _startPosX.Value + 140, +_startPosY.Value + 15, 26, 26); + g.FillEllipse(additionalBrush, _startPosX.Value + 190, +_startPosY.Value + 15, 26, 26); + g.DrawEllipse(pen, _startPosX.Value + 190, +_startPosY.Value + 15, 26, 26); + g.FillEllipse(additionalBrush, _startPosX.Value + 140, +_startPosY.Value + 79, 26, 26); + g.DrawEllipse(pen, _startPosX.Value + 140, +_startPosY.Value + 79, 26, 26); + g.FillEllipse(additionalBrush, _startPosX.Value + 190, +_startPosY.Value + 79, 26, 26); + g.DrawEllipse(pen, _startPosX.Value + 190, +_startPosY.Value + 79, 26, 26); + g.DrawLine(pen2, _startPosX.Value + 153, _startPosY.Value + 28, _startPosX.Value + 173, _startPosY.Value + 8); + g.DrawLine(pen2, _startPosX.Value + 203, _startPosY.Value + 28, _startPosX.Value + 223, _startPosY.Value + 8); + g.DrawLine(pen2, _startPosX.Value + 203, _startPosY.Value + 92, _startPosX.Value + 223, _startPosY.Value + 112); + g.DrawLine(pen2, _startPosX.Value + 153, _startPosY.Value + 92, _startPosX.Value + 173, _startPosY.Value + 112); + g.FillEllipse(additionalBrush, _startPosX.Value + 300, +_startPosY.Value + 44, 32, 32); + g.DrawEllipse(pen, _startPosX.Value + 300, +_startPosY.Value + 44, 32, 32); + g.DrawLine(pen3, _startPosX.Value + 316, _startPosY.Value + 60, _startPosX.Value + 356, _startPosY.Value + 60); + } + // флаг + if (EntityCruiser.Flag) + { + + g.DrawLine(pen, _startPosX.Value + 40, _startPosY.Value + 60, _startPosX.Value + 40, _startPosY.Value + 20); + g.FillRectangle(additionalBrush, _startPosX.Value + 20, _startPosY.Value + 20, 20, 20); + g.DrawLine(pen, _startPosX.Value + 20, _startPosY.Value + 30, _startPosX.Value + 40, _startPosY.Value + 30); + g.DrawRectangle(pen, _startPosX.Value + 20, _startPosY.Value + 20, 20, 20); + } + // Надстройки корабля + if (EntityCruiser.Towers) + { + g.FillRectangle(additionalBrush, _startPosX.Value + 230, _startPosY.Value + 30, 30, 60); + g.DrawRectangle(pen,_startPosX.Value +230, _startPosY.Value +30, 30, 60); + g.FillRectangle(brBlue, _startPosX.Value + 256, _startPosY.Value + 40, 4, 40); + g.FillRectangle(additionalBrush, _startPosX.Value + 130, _startPosY.Value + 50, 100, 20); + g.DrawRectangle(pen, _startPosX.Value + 130, _startPosY.Value + 50, 100, 20); + g.FillRectangle(additionalBrush, _startPosX.Value + 60, _startPosY.Value + 30, 50, 15); + g.DrawRectangle(pen, _startPosX.Value + 60, _startPosY.Value + 30, 50, 15); + g.FillRectangle(additionalBrush, _startPosX.Value + 60, _startPosY.Value + 75, 50, 15); + g.DrawRectangle(pen, _startPosX.Value + 60, _startPosY.Value + 75, 50, 15); + g.FillEllipse(brBlack, _startPosX.Value + 65, +_startPosY.Value + 30, 15, 15); + g.FillEllipse(brBlack, _startPosX.Value + 90, +_startPosY.Value + 30, 15, 15); + g.FillEllipse(brBlack, _startPosX.Value + 65, +_startPosY.Value + 75, 15, 15); + g.FillEllipse(brBlack, _startPosX.Value + 90, +_startPosY.Value + 75, 15, 15); + } + } + } + +} diff --git a/ProjectOOP/ProjectOOP/EntityCruiser.cs b/ProjectOOP/ProjectOOP/EntityCruiser.cs new file mode 100644 index 0000000..85221e3 --- /dev/null +++ b/ProjectOOP/ProjectOOP/EntityCruiser.cs @@ -0,0 +1,65 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProjectOOP +{ + public class EntityCruiser + { + /// + /// Скорость + /// + public int Speed { get; private set; } + /// + /// Вес + /// + public double Weight { get; private set; } + /// + /// Основной цвет + /// + public Color BodyColor { get; private set; } + /// + /// Дополнительный цвет (для опциональных элементов) + /// + public Color AdditionalColor { get; private set; } + /// + /// Признак (опция) наличия обвеса + /// + public bool Turerts { get; private set; } + /// + /// Признак (опция) наличия антикрыла + /// + public bool Towers { get; private set; } + /// + /// Признак (опция) наличия гоночной полосы + /// + public bool Flag { get; private set; } + /// + /// Шаг перемещения автомобиля + /// + public double Step => Speed * 100 / Weight; + /// + /// Инициализация полей объекта-класса спортивного автомобиля + /// + /// Скорость + /// Вес автомобиля + /// Основной цвет + /// Дополнительный цвет + /// Признак наличия обвеса + /// Признак наличия антикрыла + /// Признак наличия гоночной полосы + public void Init(int speed, double weight, Color bodyColor, Color + additionalColor, bool turrets, bool towers, bool flag) + { + Speed = speed; + Weight = weight; + BodyColor = bodyColor; + AdditionalColor = additionalColor; + Turerts = turrets; + this.Towers = towers; + this.Flag = flag; + } + } +} diff --git a/ProjectOOP/ProjectOOP/Form1.Designer.cs b/ProjectOOP/ProjectOOP/Form1.Designer.cs new file mode 100644 index 0000000..32fc00e --- /dev/null +++ b/ProjectOOP/ProjectOOP/Form1.Designer.cs @@ -0,0 +1,39 @@ +namespace ProjectOOP +{ + partial class Form1 + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(800, 450); + this.Text = "Form1"; + } + + #endregion + } +} diff --git a/ProjectOOP/ProjectOOP/Form1.cs b/ProjectOOP/ProjectOOP/Form1.cs new file mode 100644 index 0000000..9237891 --- /dev/null +++ b/ProjectOOP/ProjectOOP/Form1.cs @@ -0,0 +1,10 @@ +namespace ProjectOOP +{ + public partial class Form1 : Form + { + public Form1() + { + InitializeComponent(); + } + } +} diff --git a/ProjectOOP/ProjectOOP/Form1.resx b/ProjectOOP/ProjectOOP/Form1.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/ProjectOOP/ProjectOOP/Form1.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/ProjectOOP/ProjectOOP/FormCruiser.Designer.cs b/ProjectOOP/ProjectOOP/FormCruiser.Designer.cs new file mode 100644 index 0000000..6611e82 --- /dev/null +++ b/ProjectOOP/ProjectOOP/FormCruiser.Designer.cs @@ -0,0 +1,141 @@ +namespace ProjectOOP +{ + partial class FormCruiser + { + /// + /// 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() + { + pictureBoxCruiser = new PictureBox(); + buttonCreateCruiser = new Button(); + buttonDown = new Button(); + buttonUp = new Button(); + buttonRight = new Button(); + buttonLeft = new Button(); + ((System.ComponentModel.ISupportInitialize)pictureBoxCruiser).BeginInit(); + SuspendLayout(); + // + // pictureBoxCruiser + // + pictureBoxCruiser.Dock = DockStyle.Fill; + pictureBoxCruiser.Location = new Point(0, 0); + pictureBoxCruiser.Name = "pictureBoxCruiser"; + pictureBoxCruiser.Size = new Size(800, 450); + pictureBoxCruiser.SizeMode = PictureBoxSizeMode.AutoSize; + pictureBoxCruiser.TabIndex = 0; + pictureBoxCruiser.TabStop = false; + pictureBoxCruiser.Click += pictureBox1_Click; + // + // buttonCreateCruiser + // + buttonCreateCruiser.Anchor = AnchorStyles.Bottom | AnchorStyles.Left; + buttonCreateCruiser.Location = new Point(0, 416); + buttonCreateCruiser.Name = "buttonCreateCruiser"; + buttonCreateCruiser.Size = new Size(112, 34); + buttonCreateCruiser.TabIndex = 1; + buttonCreateCruiser.Text = "Создать"; + buttonCreateCruiser.UseVisualStyleBackColor = true; + buttonCreateCruiser.Click += buttonCreateCruiser_Click; + // + // buttonDown + // + buttonDown.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonDown.BackgroundImage = Properties.Resources.Стрелка_вниз1; + buttonDown.BackgroundImageLayout = ImageLayout.Zoom; + buttonDown.Location = new Point(728, 416); + buttonDown.Name = "buttonDown"; + buttonDown.Size = new Size(30, 30); + buttonDown.TabIndex = 2; + buttonDown.UseVisualStyleBackColor = true; + buttonDown.Click += buttonMove_Click; + // + // buttonUp + // + buttonUp.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonUp.BackColor = SystemColors.Control; + buttonUp.BackgroundImage = Properties.Resources.Стрелка_вверх1; + buttonUp.BackgroundImageLayout = ImageLayout.Zoom; + buttonUp.ForeColor = SystemColors.ControlText; + buttonUp.Location = new Point(728, 380); + buttonUp.Name = "buttonUp"; + buttonUp.Size = new Size(30, 30); + buttonUp.TabIndex = 3; + buttonUp.UseVisualStyleBackColor = false; + buttonUp.Click += buttonMove_Click; + // + // buttonRight + // + buttonRight.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonRight.BackgroundImage = Properties.Resources.Стрелка_вправо1; + buttonRight.BackgroundImageLayout = ImageLayout.Zoom; + buttonRight.Location = new Point(764, 416); + buttonRight.Name = "buttonRight"; + buttonRight.Size = new Size(30, 30); + buttonRight.TabIndex = 4; + buttonRight.UseVisualStyleBackColor = true; + buttonRight.Click += buttonMove_Click; + // + // buttonLeft + // + buttonLeft.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonLeft.BackgroundImage = Properties.Resources.Стрелка_влево1; + buttonLeft.BackgroundImageLayout = ImageLayout.Zoom; + buttonLeft.Location = new Point(692, 416); + buttonLeft.Name = "buttonLeft"; + buttonLeft.Size = new Size(30, 30); + buttonLeft.TabIndex = 5; + buttonLeft.UseVisualStyleBackColor = true; + buttonLeft.Click += buttonMove_Click; + // + // FormCruiser + // + AutoScaleDimensions = new SizeF(10F, 25F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(800, 450); + Controls.Add(buttonLeft); + Controls.Add(buttonRight); + Controls.Add(buttonUp); + Controls.Add(buttonDown); + Controls.Add(buttonCreateCruiser); + Controls.Add(pictureBoxCruiser); + Name = "FormCruiser"; + StartPosition = FormStartPosition.CenterScreen; + Text = "Крейсер"; + Load += FormCruiser_Load; + ((System.ComponentModel.ISupportInitialize)pictureBoxCruiser).EndInit(); + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private PictureBox pictureBoxCruiser; + private Button buttonCreateCruiser; + private Button buttonDown; + private Button buttonUp; + private Button buttonRight; + private Button buttonLeft; + } +} \ No newline at end of file diff --git a/ProjectOOP/ProjectOOP/FormCruiser.cs b/ProjectOOP/ProjectOOP/FormCruiser.cs new file mode 100644 index 0000000..d7f4d53 --- /dev/null +++ b/ProjectOOP/ProjectOOP/FormCruiser.cs @@ -0,0 +1,87 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace ProjectOOP +{ + public partial class FormCruiser : Form + { + private DrawningCruiser? _drawningCruiser; + public FormCruiser() + { + InitializeComponent(); + } + + private void Draw() + { + if (_drawningCruiser == null) + { + return; + } + Bitmap bmp = new(pictureBoxCruiser.Width, pictureBoxCruiser.Height); + Graphics gr = Graphics.FromImage(bmp); + _drawningCruiser.DrawTransport(gr); + pictureBoxCruiser.Image = bmp; + } + private void FormCruiser_Load(object sender, EventArgs e) + { + + } + + private void pictureBox1_Click(object sender, EventArgs e) + { + + } + + private void buttonCreateCruiser_Click(object sender, EventArgs e) + { + Random random = new(); + _drawningCruiser = new DrawningCruiser(); + _drawningCruiser.Init(random.Next(100, 300), random.Next(1000,3000), + Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256)), + Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256)), + Convert.ToBoolean(random.Next(0,2)), Convert.ToBoolean(random.Next(0, 2)), Convert.ToBoolean(random.Next(0, 2))); + _drawningCruiser.SetPictureSize(pictureBoxCruiser.Width, pictureBoxCruiser.Height); + _drawningCruiser.SetPosition(random.Next(10,100), random.Next(10,100)); + Bitmap bmp = new(pictureBoxCruiser.Width,pictureBoxCruiser.Height); + Graphics gr = Graphics.FromImage(bmp); + _drawningCruiser.DrawTransport(gr); + pictureBoxCruiser.Image = bmp; + Draw(); + } + + private void buttonMove_Click(object sender, EventArgs e) + { + if (_drawningCruiser == null) + { + return; + } + string name =((Button)sender)?.Name ?? string.Empty; + bool result = false; + switch (name) + { + case "buttonUp": + result = _drawningCruiser.MoveTransport(DirectionType.Up); + break; + case "buttonDown": + result = _drawningCruiser.MoveTransport(DirectionType.Down); + break; + case "buttonLeft": + result = _drawningCruiser.MoveTransport(DirectionType.Left); + break; + case "buttonRight": + result = _drawningCruiser.MoveTransport(DirectionType.Right); + break; + } + if (result) { + Draw(); + } + } + } +} diff --git a/ProjectOOP/ProjectOOP/FormCruiser.resx b/ProjectOOP/ProjectOOP/FormCruiser.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/ProjectOOP/ProjectOOP/FormCruiser.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/ProjectOOP/ProjectOOP/Program.cs b/ProjectOOP/ProjectOOP/Program.cs new file mode 100644 index 0000000..4d849a1 --- /dev/null +++ b/ProjectOOP/ProjectOOP/Program.cs @@ -0,0 +1,18 @@ +namespace ProjectOOP +{ + internal static class Program + { + /// + /// The main entry point for the application. + /// + [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 FormCruiser()); + } + } +} \ No newline at end of file diff --git a/ProjectOOP/ProjectOOP/ProjectOOP.csproj b/ProjectOOP/ProjectOOP/ProjectOOP.csproj new file mode 100644 index 0000000..af03d74 --- /dev/null +++ b/ProjectOOP/ProjectOOP/ProjectOOP.csproj @@ -0,0 +1,26 @@ + + + + WinExe + net8.0-windows + enable + true + enable + + + + + True + True + Resources.resx + + + + + + ResXFileCodeGenerator + Resources.Designer.cs + + + + \ No newline at end of file diff --git a/ProjectOOP/ProjectOOP/Properties/Resources.Designer.cs b/ProjectOOP/ProjectOOP/Properties/Resources.Designer.cs new file mode 100644 index 0000000..95ec037 --- /dev/null +++ b/ProjectOOP/ProjectOOP/Properties/Resources.Designer.cs @@ -0,0 +1,103 @@ +//------------------------------------------------------------------------------ +// +// Этот код создан программой. +// Исполняемая версия:4.0.30319.42000 +// +// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае +// повторной генерации кода. +// +//------------------------------------------------------------------------------ + +namespace ProjectOOP.Properties { + using System; + + + /// + /// Класс ресурса со строгой типизацией для поиска локализованных строк и т.д. + /// + // Этот класс создан автоматически классом 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() { + } + + /// + /// Возвращает кэшированный экземпляр ResourceManager, использованный этим классом. + /// + [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("ProjectOOP.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Перезаписывает свойство CurrentUICulture текущего потока для всех + /// обращений к ресурсу с помощью этого класса ресурса со строгой типизацией. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Стрелка_вверх1 { + get { + object obj = ResourceManager.GetObject("Стрелка вверх1", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Стрелка_влево1 { + get { + object obj = ResourceManager.GetObject("Стрелка влево1", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Стрелка_вниз1 { + get { + object obj = ResourceManager.GetObject("Стрелка вниз1", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Стрелка_вправо1 { + get { + object obj = ResourceManager.GetObject("Стрелка вправо1", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} diff --git a/ProjectOOP/ProjectOOP/Properties/Resources.resx b/ProjectOOP/ProjectOOP/Properties/Resources.resx new file mode 100644 index 0000000..e179652 --- /dev/null +++ b/ProjectOOP/ProjectOOP/Properties/Resources.resx @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + ..\Resources\Стрелка вправо1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Стрелка вниз1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Стрелка влево1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Стрелка вверх1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + \ No newline at end of file diff --git a/ProjectOOP/ProjectOOP/Resources/Стрелка вверх1.png b/ProjectOOP/ProjectOOP/Resources/Стрелка вверх1.png new file mode 100644 index 0000000000000000000000000000000000000000..7a6609e30f554cad0c9df1f485a863ae46b9aa89 GIT binary patch literal 6683 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 literal 0 HcmV?d00001 diff --git a/ProjectOOP/ProjectOOP/Resources/Стрелка влево1.png b/ProjectOOP/ProjectOOP/Resources/Стрелка влево1.png new file mode 100644 index 0000000000000000000000000000000000000000..0a1d82c90b19c3f28ce9aced70c026d38f1520cb GIT binary patch literal 5878 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 A6aWAK literal 0 HcmV?d00001 diff --git a/ProjectOOP/ProjectOOP/Resources/Стрелка вниз1.png b/ProjectOOP/ProjectOOP/Resources/Стрелка вниз1.png new file mode 100644 index 0000000000000000000000000000000000000000..fec397238906a866961464f4b0936a9387b4f4ce GIT binary patch literal 6633 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 literal 0 HcmV?d00001 diff --git a/ProjectOOP/ProjectOOP/Resources/Стрелка вправо1.png b/ProjectOOP/ProjectOOP/Resources/Стрелка вправо1.png new file mode 100644 index 0000000000000000000000000000000000000000..eecf7b04f24e1c6ae9c2000b05bb6945407bcd10 GIT binary patch literal 5832 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 literal 0 HcmV?d00001