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
HbngEE33<_)
literal 0
HcmV?d00001
diff --git a/source/img/arrow_left.png b/source/img/arrow_left.png
new file mode 100644
index 0000000000000000000000000000000000000000..17501558deed4870bdf2bd349184da7ee3274b67
GIT binary patch
literal 8709
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
T_HFoIH-OF04qNj!Got?od(u;w
literal 0
HcmV?d00001
diff --git a/source/img/arrow_right.png b/source/img/arrow_right.png
new file mode 100644
index 0000000000000000000000000000000000000000..ca3d16e3a00b47bf081d14d0cc04c2d255d14d50
GIT binary patch
literal 6397
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
a${99GUsu?7H
Date: Fri, 16 Feb 2024 11:38:12 +0400
Subject: [PATCH 2/3] First lab brench
---
LocomativeProject/LocomativeProject/DrawningLocomotive.cs | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/LocomativeProject/LocomativeProject/DrawningLocomotive.cs b/LocomativeProject/LocomativeProject/DrawningLocomotive.cs
index 506995a..c4be050 100644
--- a/LocomativeProject/LocomativeProject/DrawningLocomotive.cs
+++ b/LocomativeProject/LocomativeProject/DrawningLocomotive.cs
@@ -179,7 +179,6 @@
Brush bodyBrush = new SolidBrush(EntityLocomotive.BodyColor);
Brush blackBrush = new SolidBrush(Color.Black);
Brush whiteBrush = new SolidBrush(Color.White);
-
//границы тепловоза
DrawPolygon(g, pen, bodyBrush,
_startPosX.Value, _startPosY.Value,
@@ -190,7 +189,6 @@
g.FillRectangle(additionalBrush, _startPosX.Value, _startPosY.Value + 20, 110, 20);
g.DrawRectangle(pen, _startPosX.Value, _startPosY.Value + 20, 110, 20);
g.FillRectangle(blackBrush, _startPosX.Value - 5, _startPosY.Value + 5, 5, 30);
-
//шасси
DrawPolygon(g, pen, blackBrush,
_startPosX.Value - 5, _startPosY.Value + 45,
@@ -221,7 +219,6 @@
g.DrawRectangle(pen, _startPosX.Value + 85, _startPosY.Value + 5, 10, 10);
g.DrawRectangle(pen, _startPosX.Value + 70, _startPosY.Value + 5, 10, 10);
g.DrawRectangle(pen, _startPosX.Value + 5, _startPosY.Value + 5, 10, 10);
-
//труба
if (EntityLocomotive.ExehaustPipe)
{
@@ -229,7 +226,7 @@
g.FillRectangle(greyBrush, _startPosX.Value + 80, _startPosY.Value - 10, 5, 10);
g.DrawRectangle(pen, _startPosX.Value + 80, _startPosY.Value - 10, 5, 10);
}
-
+ // отсек для топлива
if (EntityLocomotive.FuelCompartment)
{
g.FillRectangle(bodyBrush, _startPosX.Value + 20, _startPosY.Value + 10, 10, 20);
--
2.25.1
From ff7a87438e3994194089c7d49750cd3de82ea01f Mon Sep 17 00:00:00 2001
From: devil_1nc
Date: Mon, 26 Feb 2024 15:53:41 +0400
Subject: [PATCH 3/3] commit 2
---
.../LocomativeProject/DrawningLocomotive.cs | 109 +++++++-----
.../LocomotiveProject.Designer.cs | 156 +++++++++---------
.../LocomativeProject/LocomotiveProject.cs | 12 +-
.../LocomativeProject/LocomotiveProject.resx | 68 +++++++-
4 files changed, 215 insertions(+), 130 deletions(-)
diff --git a/LocomativeProject/LocomativeProject/DrawningLocomotive.cs b/LocomativeProject/LocomativeProject/DrawningLocomotive.cs
index c4be050..4ed712e 100644
--- a/LocomativeProject/LocomativeProject/DrawningLocomotive.cs
+++ b/LocomativeProject/LocomativeProject/DrawningLocomotive.cs
@@ -30,7 +30,7 @@
///
/// Ширина прорисовки тепловоза
///
- private readonly int _drawningLocomotiveWidth = 110;
+ private readonly int _drawningLocomotiveWidth = 120;
///
/// Высота прорисовки тепловоза
@@ -67,9 +67,21 @@
///разместить объект в этих размерах
public bool SetPictureSize(int width, int height)
{
- _pictureWidth = width;
- _pictureHeight = height;
- return true;
+ if (width > _drawningLocomotiveWidth || height > _drawningLocomotiveHeight) // если ширина и высота окна больше чем объект
+ {
+ _pictureWidth = width;
+ _pictureHeight = height;
+ if (_startPosX + _drawningLocomotiveWidth > width || _startPosX < 0) // если координаты выходят за пределы, корректируем
+ {
+ _startPosX = 0;
+ }
+ if (_startPosY + _drawningLocomotiveHeight > height || _startPosY < 0)
+ {
+ _startPosY = 0;
+ }
+ return true;
+ }
+ return false;
}
///
/// Установка позиции
@@ -82,18 +94,27 @@
{
return;
}
- if (x < 0 || x + _drawningLocomotiveWidth > _pictureWidth || y < 0 || y + _drawningLocomotiveHeight > _pictureHeight)
- {
- _startPosX = 20;
- _startPosY = 20;
- }
- else
+
+ // если все нормально
+ if (x > 0 || x + _drawningLocomotiveWidth < _pictureWidth)
{
_startPosX = x;
+ }
+ if (y > 0 || y + _drawningLocomotiveHeight < _pictureHeight)
+ {
_startPosY = y;
}
+ // если не лезет, но мог бы влезть
+ if (x < 0 || x + _drawningLocomotiveWidth > _pictureWidth)
+ {
+ _startPosX = 0;
+ }
+ if (y < 0 || y + _drawningLocomotiveHeight > _pictureHeight)
+ {
+ _startPosY = 0;
+ }
}
-
+
///
/// Изменение направления перемещения
///
@@ -118,7 +139,7 @@
return true;
//вверх
case DirectionType.Up:
- if (_startPosY.Value - EntityLocomotive.Step > 0)
+ if (_startPosY.Value - EntityLocomotive.Step > 0) // 10 – высота трубы
{
_startPosY -= (int)EntityLocomotive.Step;
}
@@ -181,56 +202,56 @@
Brush whiteBrush = new SolidBrush(Color.White);
//границы тепловоза
DrawPolygon(g, pen, bodyBrush,
- _startPosX.Value, _startPosY.Value,
- _startPosX.Value + 100, _startPosY.Value,
- _startPosX.Value + 110, _startPosY.Value + 20,
- _startPosX.Value, _startPosY.Value + 20
+ _startPosX.Value + 5, _startPosY.Value + 10,
+ _startPosX.Value + 105, _startPosY.Value + 10,
+ _startPosX.Value + 115, _startPosY.Value + 20 + 10,
+ _startPosX.Value + 5, _startPosY.Value + 20 + 10
);
- g.FillRectangle(additionalBrush, _startPosX.Value, _startPosY.Value + 20, 110, 20);
- g.DrawRectangle(pen, _startPosX.Value, _startPosY.Value + 20, 110, 20);
- g.FillRectangle(blackBrush, _startPosX.Value - 5, _startPosY.Value + 5, 5, 30);
+ g.FillRectangle(additionalBrush, _startPosX.Value + 5, _startPosY.Value + +10 + 20, 110, 20);
+ g.DrawRectangle(pen, _startPosX.Value + 5, _startPosY.Value + 20 + 10, 110, 20);
+ g.FillRectangle(blackBrush, _startPosX.Value, _startPosY.Value + 5 + 10, 5, 30);
//шасси
DrawPolygon(g, pen, blackBrush,
- _startPosX.Value - 5, _startPosY.Value + 45,
- _startPosX.Value + 5, _startPosY.Value + 40,
- _startPosX.Value + 45, _startPosY.Value + 40,
- _startPosX.Value + 45, _startPosY.Value + 45
+ _startPosX.Value, _startPosY.Value + 45 + 10,
+ _startPosX.Value + 10, _startPosY.Value + 40 + 10,
+ _startPosX.Value + 50, _startPosY.Value + 40 + 10,
+ _startPosX.Value + 50, _startPosY.Value + 45 + 10
);
DrawPolygon(g, pen, blackBrush,
- _startPosX.Value + 65, _startPosY.Value + 40,
- _startPosX.Value + 105, _startPosY.Value + 40,
- _startPosX.Value + 115, _startPosY.Value + 45,
- _startPosX.Value + 65, _startPosY.Value + 45
+ _startPosX.Value + 70, _startPosY.Value + 40 + 10,
+ _startPosX.Value + 110, _startPosY.Value + 40 + 10,
+ _startPosX.Value + 120, _startPosY.Value + 45 + 10,
+ _startPosX.Value + 70, _startPosY.Value + 45 + 10
);
//колеса
- g.DrawEllipse(pen, _startPosX.Value + 10, _startPosY.Value + 40, 10, 10);
- g.FillEllipse(whiteBrush, _startPosX.Value + 10, _startPosY.Value + 40, 10, 10);
- g.DrawEllipse(pen, _startPosX.Value + 25, _startPosY.Value + 40, 10, 10);
- g.FillEllipse(whiteBrush, _startPosX.Value + 25, _startPosY.Value + 40, 10, 10);
- g.DrawEllipse(pen, _startPosX.Value + 75, _startPosY.Value + 40, 10, 10);
- g.FillEllipse(whiteBrush, _startPosX.Value + 75, _startPosY.Value + 40, 10, 10);
- g.DrawEllipse(pen, _startPosX.Value + 90, _startPosY.Value + 40, 10, 10);
- g.FillEllipse(whiteBrush, _startPosX.Value + 90, _startPosY.Value + 40, 10, 10);
+ g.DrawEllipse(pen, _startPosX.Value + 15, _startPosY.Value + 40 + 10, 10, 10);
+ g.FillEllipse(whiteBrush, _startPosX.Value + 15, _startPosY.Value + 40 + 10, 10, 10);
+ g.DrawEllipse(pen, _startPosX.Value + 30, _startPosY.Value + 40 + 10, 10, 10);
+ g.FillEllipse(whiteBrush, _startPosX.Value + 30, _startPosY.Value + 40 + 10, 10, 10);
+ g.DrawEllipse(pen, _startPosX.Value + 80, _startPosY.Value + 40 + 10, 10, 10);
+ g.FillEllipse(whiteBrush, _startPosX.Value + 80, _startPosY.Value + 40 + 10, 10, 10);
+ g.DrawEllipse(pen, _startPosX.Value + 95, _startPosY.Value + 40 + 10, 10, 10);
+ g.FillEllipse(whiteBrush, _startPosX.Value + 95, _startPosY.Value + 40 + 10, 10, 10);
//дверь
- g.FillRectangle(bodyBrush, _startPosX.Value + 50, _startPosY.Value + 10, 10, 20);
- g.DrawRectangle(pen, _startPosX.Value + 50, _startPosY.Value + 10, 10, 20);
+ g.FillRectangle(bodyBrush, _startPosX.Value + 50, _startPosY.Value + 10 + 10, 10, 20);
+ g.DrawRectangle(pen, _startPosX.Value + 50, _startPosY.Value + 10 + 10, 10, 20);
//окна
pen = new(Color.Blue);
- g.DrawRectangle(pen, _startPosX.Value + 85, _startPosY.Value + 5, 10, 10);
- g.DrawRectangle(pen, _startPosX.Value + 70, _startPosY.Value + 5, 10, 10);
- g.DrawRectangle(pen, _startPosX.Value + 5, _startPosY.Value + 5, 10, 10);
+ g.DrawRectangle(pen, _startPosX.Value + 85, _startPosY.Value + 5 + 10, 10, 10);
+ g.DrawRectangle(pen, _startPosX.Value + 70, _startPosY.Value + 5 + 10, 10, 10);
+ g.DrawRectangle(pen, _startPosX.Value + 10, _startPosY.Value + 5 + 10, 10, 10);
//труба
if (EntityLocomotive.ExehaustPipe)
{
Brush greyBrush = new SolidBrush(Color.Gray);
- g.FillRectangle(greyBrush, _startPosX.Value + 80, _startPosY.Value - 10, 5, 10);
- g.DrawRectangle(pen, _startPosX.Value + 80, _startPosY.Value - 10, 5, 10);
+ g.FillRectangle(greyBrush, _startPosX.Value + 80, _startPosY.Value, 5, 10);
+ g.DrawRectangle(pen, _startPosX.Value + 80, _startPosY.Value, 5, 10);
}
// отсек для топлива
if (EntityLocomotive.FuelCompartment)
{
- g.FillRectangle(bodyBrush, _startPosX.Value + 20, _startPosY.Value + 10, 10, 20);
- g.DrawRectangle(pen, _startPosX.Value + 20, _startPosY.Value + 10, 10, 20);
+ g.FillRectangle(bodyBrush, _startPosX.Value + 25, _startPosY.Value + 10 + 10, 10, 20);
+ g.DrawRectangle(pen, _startPosX.Value + 25, _startPosY.Value + 10 + 10, 10, 20);
}
}
diff --git a/LocomativeProject/LocomativeProject/LocomotiveProject.Designer.cs b/LocomativeProject/LocomativeProject/LocomotiveProject.Designer.cs
index 73b18b9..3898d85 100644
--- a/LocomativeProject/LocomativeProject/LocomotiveProject.Designer.cs
+++ b/LocomativeProject/LocomativeProject/LocomotiveProject.Designer.cs
@@ -29,106 +29,110 @@
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(LocomotiveProject));
- this.pictureBox1 = new System.Windows.Forms.PictureBox();
- this.pictureBoxLocomotive = new System.Windows.Forms.PictureBox();
- this.create = new System.Windows.Forms.Button();
- this.buttonUp = new System.Windows.Forms.Button();
- this.buttonDown = new System.Windows.Forms.Button();
- this.buttonLeft = new System.Windows.Forms.Button();
- this.buttonRight = new System.Windows.Forms.Button();
- ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
- ((System.ComponentModel.ISupportInitialize)(this.pictureBoxLocomotive)).BeginInit();
- this.SuspendLayout();
+ pictureBox1 = new PictureBox();
+ pictureBoxLocomotive = new PictureBox();
+ create = new Button();
+ buttonUp = new Button();
+ buttonDown = new Button();
+ buttonLeft = new Button();
+ buttonRight = new Button();
+ ((System.ComponentModel.ISupportInitialize)pictureBox1).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)pictureBoxLocomotive).BeginInit();
+ SuspendLayout();
//
// pictureBox1
//
- this.pictureBox1.Location = new System.Drawing.Point(0, 0);
- this.pictureBox1.Name = "pictureBox1";
- this.pictureBox1.Size = new System.Drawing.Size(100, 50);
- this.pictureBox1.TabIndex = 0;
- this.pictureBox1.TabStop = false;
+ pictureBox1.Location = new Point(0, 0);
+ pictureBox1.Name = "pictureBox1";
+ pictureBox1.Size = new Size(100, 50);
+ pictureBox1.TabIndex = 0;
+ pictureBox1.TabStop = false;
//
// pictureBoxLocomotive
//
- this.pictureBoxLocomotive.Dock = System.Windows.Forms.DockStyle.Fill;
- this.pictureBoxLocomotive.Location = new System.Drawing.Point(0, 0);
- this.pictureBoxLocomotive.Name = "pictureBoxLocomotive";
- this.pictureBoxLocomotive.Size = new System.Drawing.Size(800, 450);
- this.pictureBoxLocomotive.TabIndex = 1;
- this.pictureBoxLocomotive.TabStop = false;
+ pictureBoxLocomotive.Dock = DockStyle.Fill;
+ pictureBoxLocomotive.Location = new Point(0, 0);
+ pictureBoxLocomotive.Name = "pictureBoxLocomotive";
+ pictureBoxLocomotive.Size = new Size(800, 450);
+ pictureBoxLocomotive.TabIndex = 1;
+ pictureBoxLocomotive.TabStop = false;
//
// create
//
- this.create.Location = new System.Drawing.Point(12, 415);
- this.create.Name = "create";
- this.create.Size = new System.Drawing.Size(75, 23);
- this.create.TabIndex = 2;
- this.create.Text = "создать";
- this.create.UseVisualStyleBackColor = true;
- this.create.Click += new System.EventHandler(this.create_Click);
+ create.Anchor = AnchorStyles.Bottom | AnchorStyles.Left;
+ create.Location = new Point(12, 415);
+ create.Name = "create";
+ create.Size = new Size(75, 23);
+ create.TabIndex = 2;
+ create.Text = "создать";
+ create.UseVisualStyleBackColor = true;
+ create.Click += create_Click;
//
// buttonUp
//
- this.buttonUp.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("buttonUp.BackgroundImage")));
- this.buttonUp.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
- this.buttonUp.Location = new System.Drawing.Point(691, 362);
- this.buttonUp.Name = "buttonUp";
- this.buttonUp.Size = new System.Drawing.Size(35, 35);
- this.buttonUp.TabIndex = 3;
- this.buttonUp.UseVisualStyleBackColor = true;
- this.buttonUp.Click += new System.EventHandler(this.ButtonMove_Click);
+ buttonUp.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
+ buttonUp.BackgroundImage = (Image)resources.GetObject("buttonUp.BackgroundImage");
+ buttonUp.BackgroundImageLayout = ImageLayout.Stretch;
+ buttonUp.Location = new Point(691, 362);
+ buttonUp.Name = "buttonUp";
+ buttonUp.Size = new Size(35, 35);
+ buttonUp.TabIndex = 3;
+ buttonUp.UseVisualStyleBackColor = true;
+ buttonUp.Click += ButtonMove_Click;
//
// buttonDown
//
- this.buttonDown.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("buttonDown.BackgroundImage")));
- this.buttonDown.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
- this.buttonDown.Location = new System.Drawing.Point(691, 403);
- this.buttonDown.Name = "buttonDown";
- this.buttonDown.Size = new System.Drawing.Size(35, 35);
- this.buttonDown.TabIndex = 4;
- this.buttonDown.UseVisualStyleBackColor = true;
- this.buttonDown.Click += new System.EventHandler(this.ButtonMove_Click);
+ buttonDown.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
+ buttonDown.BackgroundImage = (Image)resources.GetObject("buttonDown.BackgroundImage");
+ buttonDown.BackgroundImageLayout = ImageLayout.Stretch;
+ buttonDown.Location = new Point(691, 403);
+ buttonDown.Name = "buttonDown";
+ buttonDown.Size = new Size(35, 35);
+ buttonDown.TabIndex = 4;
+ buttonDown.UseVisualStyleBackColor = true;
+ buttonDown.Click += ButtonMove_Click;
//
// buttonLeft
//
- this.buttonLeft.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("buttonLeft.BackgroundImage")));
- this.buttonLeft.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
- this.buttonLeft.Location = new System.Drawing.Point(650, 403);
- this.buttonLeft.Name = "buttonLeft";
- this.buttonLeft.Size = new System.Drawing.Size(35, 35);
- this.buttonLeft.TabIndex = 5;
- this.buttonLeft.UseVisualStyleBackColor = true;
- this.buttonLeft.Click += new System.EventHandler(this.ButtonMove_Click);
+ buttonLeft.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
+ buttonLeft.BackgroundImage = (Image)resources.GetObject("buttonLeft.BackgroundImage");
+ buttonLeft.BackgroundImageLayout = ImageLayout.Stretch;
+ buttonLeft.Location = new Point(650, 403);
+ buttonLeft.Name = "buttonLeft";
+ buttonLeft.Size = new Size(35, 35);
+ buttonLeft.TabIndex = 5;
+ buttonLeft.UseVisualStyleBackColor = true;
+ buttonLeft.Click += ButtonMove_Click;
//
// buttonRight
//
- this.buttonRight.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("buttonRight.BackgroundImage")));
- this.buttonRight.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
- this.buttonRight.Location = new System.Drawing.Point(732, 403);
- this.buttonRight.Name = "buttonRight";
- this.buttonRight.Size = new System.Drawing.Size(35, 35);
- this.buttonRight.TabIndex = 6;
- this.buttonRight.UseVisualStyleBackColor = true;
- this.buttonRight.Click += new System.EventHandler(this.ButtonMove_Click);
+ buttonRight.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
+ buttonRight.BackgroundImage = (Image)resources.GetObject("buttonRight.BackgroundImage");
+ buttonRight.BackgroundImageLayout = ImageLayout.Stretch;
+ buttonRight.Location = new Point(732, 403);
+ buttonRight.Name = "buttonRight";
+ buttonRight.Size = new Size(35, 35);
+ buttonRight.TabIndex = 6;
+ buttonRight.UseVisualStyleBackColor = true;
+ buttonRight.Click += ButtonMove_Click;
//
// LocomotiveProject
//
- this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(800, 450);
- this.Controls.Add(this.buttonRight);
- this.Controls.Add(this.buttonLeft);
- this.Controls.Add(this.buttonDown);
- this.Controls.Add(this.buttonUp);
- this.Controls.Add(this.create);
- this.Controls.Add(this.pictureBoxLocomotive);
- this.Controls.Add(this.pictureBox1);
- this.Name = "LocomotiveProject";
- this.Text = "Тепловоз";
- ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
- ((System.ComponentModel.ISupportInitialize)(this.pictureBoxLocomotive)).EndInit();
- this.ResumeLayout(false);
-
+ AutoScaleDimensions = new SizeF(7F, 15F);
+ AutoScaleMode = AutoScaleMode.Font;
+ ClientSize = new Size(800, 450);
+ Controls.Add(buttonRight);
+ Controls.Add(buttonLeft);
+ Controls.Add(buttonDown);
+ Controls.Add(buttonUp);
+ Controls.Add(create);
+ Controls.Add(pictureBoxLocomotive);
+ Controls.Add(pictureBox1);
+ Name = "LocomotiveProject";
+ Text = "Тепловоз";
+ ((System.ComponentModel.ISupportInitialize)pictureBox1).EndInit();
+ ((System.ComponentModel.ISupportInitialize)pictureBoxLocomotive).EndInit();
+ ResumeLayout(false);
}
#endregion
diff --git a/LocomativeProject/LocomativeProject/LocomotiveProject.cs b/LocomativeProject/LocomativeProject/LocomotiveProject.cs
index a17fea0..12b9e36 100644
--- a/LocomativeProject/LocomativeProject/LocomotiveProject.cs
+++ b/LocomativeProject/LocomativeProject/LocomotiveProject.cs
@@ -39,20 +39,20 @@ namespace LocomativeProject
///
private void create_Click(object sender, EventArgs e)
{
- Random random = new ();
+ Random random = new();
_drawningLocomotive = new DrawningLocomotive();
_drawningLocomotive.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) ),
+ 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) ),
random.Next(2, 6)
);
- _drawningLocomotive.SetPictureSize( pictureBoxLocomotive.Width, pictureBoxLocomotive.Height );
- _drawningLocomotive.SetPosition( random.Next(10, 100), random.Next(10, 100) );
+ _drawningLocomotive.SetPictureSize(pictureBoxLocomotive.Width, pictureBoxLocomotive.Height);
+ _drawningLocomotive.SetPosition(random.Next(10, 100), random.Next(10, 100));
Draw();
}
diff --git a/LocomativeProject/LocomativeProject/LocomotiveProject.resx b/LocomativeProject/LocomativeProject/LocomotiveProject.resx
index e45e5ca..e4ae198 100644
--- a/LocomativeProject/LocomativeProject/LocomotiveProject.resx
+++ b/LocomativeProject/LocomativeProject/LocomotiveProject.resx
@@ -1,4 +1,64 @@
-
+
+
+
@@ -177,7 +237,7 @@
iVBORw0KGgoAAAANSUhEUgAAAf0AAAIBCAYAAABDdGZ3AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
- vQAADr0BR/uQrQAAIv9JREFUeF7t3YuS29axheH4KjmpvP97plyS7zrp2V4+bYQaSjNigyC+v+ovguRE
+ vAAADrwBlbxySQAAIv9JREFUeF7t3YuS29axheH4KjmpvP97plyS7zrp2V4+bYQaSjNigyC+v+ovguRE
sTnNvXYDaPkfH4Cdef/+/Z9HHz788ssvT4/ffPPNh3/84x/kof3qq6+eHn///fenuk59F3kNmEToY1d+
+umnP4/Wgvjtt9/+tWAKfj6Cb968eQr/8PPPP3/4448/hD52Qehjdyr4f/vtt6eFsYK+Bz95ZL///vun
x3T8PfyBPRD62JV0O2/fvv3bYvndd9/97Tl5VH/44Yenx17TRT/VD0wh9LEr1eF//fXXTwthdUE5rlOi
@@ -332,7 +392,7 @@
iVBORw0KGgoAAAANSUhEUgAAAgEAAAIHCAYAAAAGv498AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
- vQAADr0BR/uQrQAAHmBJREFUeF7t3YuyG0XWrVH65gsd/f7vSRDGBgPNSpibtLy9JVtLUlXlGBGfJMzt
+ vAAADrwBlbxySQAAHmBJREFUeF7t3YuyG0XWrVH65gsd/f7vSRDGBgPNSpibtLy9JVtLUlXlGBGfJMzt
Pw3HNaWSk+9+BwCWZAQAwKKMAABYlBEAAIsyAgBgUUYAACzKCACARRkBALAoIwAAFmUEAMCijAAAWJQR
AACLMgIAYFFGAAAsyggAgEUZAQCwKCMAABZlBADAoowAAFiUEQAAizICAGBRRgAALMoIAIBFGQEAsCgj
AAAWZQQAwKKMAABYlBEAAIsyAgBgUUYAACzKCACARRkBALAoIwCu9PHjx79e/f77r7/++vtvv/322XN8
@@ -468,7 +528,7 @@
iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
- vgAADr4B6kKxwAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAABq4SURBVHhe7d1X
+ vQAADr0BR/uQrQAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAABq4SURBVHhe7d1X
0F1lvcfxAOMMioCAQbBhL9jBgqKCXcCC0WgsGFSMElIgBEgU4+g4OuOV114w44W3inKBBSxYsEdFRQWj
YAkaFYMFQcjyeZKlIcmTt+z3v/deaz2fz8z3cI5Jdlkvx/9vHI9nUQMAVMcAAIAKGQAAUCEDAAAqZAAA
QIUMAACokAEAABUyAACgQgYAAFTIAACAChkAAFAhAwAAKmQAAECFDAAAqJABAAAVMgAAoEIGAABUyAAA
--
2.25.1