This commit is contained in:
NikGapon 2022-11-24 02:08:47 +04:00
parent cc24f550e0
commit 43a98b80e3
9 changed files with 146 additions and 17 deletions

View File

@ -8,8 +8,8 @@ namespace Airbus
{ {
internal class DrawingAirbus : DrawningAirplane internal class DrawingAirbus : DrawningAirplane
{ {
public DrawingAirbus(int speed, float weight, Color bodyColor, Color dopColor, bool compartment, bool engine) : public DrawingAirbus(int speed, float weight, Color bodyColor, Color dopColor, bool compartment, bool engine, IPorthole formPorthole) :
base(speed, weight, bodyColor, 150, 30) base(speed, weight, bodyColor, 150, 30, formPorthole)
{ {
airplane = new EntityAirbus(speed, weight, bodyColor, dopColor, compartment, engine); airplane = new EntityAirbus(speed, weight, bodyColor, dopColor, compartment, engine);
} }

View File

@ -10,7 +10,7 @@ namespace Airbus
{ {
/// Класс-сущность /// Класс-сущность
public EntityAirplane airplane { protected set; get; } public EntityAirplane airplane { protected set; get; }
public DrawningPorthole porthole { private set; get; } public IPorthole porthole { private set; get; }
/// Левая координата отрисовки автомобиля /// Левая координата отрисовки автомобиля
protected float _startPosX; protected float _startPosX;
@ -23,10 +23,10 @@ namespace Airbus
/// Ширина отрисовки автомобиля /// Ширина отрисовки автомобиля
protected readonly int _airplaneWidth = 150; //Ширина отрисовки корабля protected readonly int _airplaneWidth = 150; //Ширина отрисовки корабля
protected readonly int _airplaneHeight = 30; //Высота отрисовки корабля protected readonly int _airplaneHeight = 30; //Высота отрисовки корабля
public DrawningAirplane(int speed, float weight, Color bodyColor) public DrawningAirplane(int speed, float weight, Color bodyColor, IPorthole formPorthole)
{ {
airplane = new EntityAirplane(speed, weight, bodyColor); airplane = new EntityAirplane(speed, weight, bodyColor);
porthole = new DrawningPorthole(); porthole = formPorthole;
} }
public void SetPosition(int x, int y, int width, int height) public void SetPosition(int x, int y, int width, int height)
@ -62,8 +62,8 @@ namespace Airbus
} }
} }
protected DrawningAirplane(int speed, float weight, Color bodyColor, int protected DrawningAirplane(int speed, float weight, Color bodyColor, int
carWidth, int carHeight) : carWidth, int carHeight, IPorthole formPorthole) :
this(speed, weight, bodyColor) this(speed, weight, bodyColor, formPorthole)
{ {
_airplaneWidth = carWidth; _airplaneWidth = carWidth;
_airplaneHeight = carHeight; _airplaneHeight = carHeight;
@ -97,6 +97,7 @@ namespace Airbus
g.DrawEllipse(new(Color.Black, 2), _startPosX + _airplaneWidth - 30, _startPosY + _airplaneHeight + 25, 4, 4); g.DrawEllipse(new(Color.Black, 2), _startPosX + _airplaneWidth - 30, _startPosY + _airplaneHeight + 25, 4, 4);
g.DrawEllipse(new(Color.Black, 2), _startPosX + _airplaneWidth - 35, _startPosY + _airplaneHeight + 25, 4, 4); g.DrawEllipse(new(Color.Black, 2), _startPosX + _airplaneWidth - 35, _startPosY + _airplaneHeight + 25, 4, 4);
g.DrawEllipse(new(Color.Black, 2), _startPosX , _startPosY + _airplaneHeight + 25, 4, 4); g.DrawEllipse(new(Color.Black, 2), _startPosX , _startPosY + _airplaneHeight + 25, 4, 4);
porthole.DrawPortholes(g, Color.Red, _startPosX, _startPosY); porthole.DrawPortholes(g, Color.Red, _startPosX, _startPosY);
} }
public void Upd_count_Porthole(CountPorthole count) public void Upd_count_Porthole(CountPorthole count)

View File

@ -0,0 +1,24 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Airbus
{
internal class DrawingRhombPorthole : DrawningPorthole
{
protected override void DrawPorthole(Graphics g, Color color, float posX, float posY)
{
Pen pen = new(color, 1);
PointF[] point = new PointF[4];
point[0] = new PointF(posX - 2, posY);
point[1] = new PointF(posX, posY - 2);
point[2] = new PointF(posX + 2, posY);
point[3] = new PointF(posX, posY + 2);
g.DrawPolygon(pen, point);
}
}
}

View File

@ -0,0 +1,16 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Airbus
{
internal class DrawingSquarePorthole : DrawningPorthole
{
protected override void DrawPorthole(Graphics g, Color color, float posX, float posY)
{
g.DrawRectangle(new(color, 1), posX, posY, 5, 5);
}
}
}

View File

@ -28,9 +28,9 @@ namespace Airbus
} }
} }
public virtual void DrawPorthole(Graphics g, Color color, float posX, float posY) protected virtual void DrawPorthole(Graphics g, Color color, float posX, float posY)
{ {
g.DrawEllipse(new(color, 2), posX, posY, 5, 5); g.DrawEllipse(new(color, 1), posX, posY, 5, 5);
} }
} }

View File

@ -38,8 +38,9 @@ namespace Airbus
} }
private void buttonCreate_Click(object sender, EventArgs e) private void buttonCreate_Click(object sender, EventArgs e)
{ {
Random random = new Random(); Random random = new Random();
airplane = new DrawningAirplane(random.Next(100, 300), random.Next(1000, 3000), Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256))); airplane = new DrawningAirplane(random.Next(100, 300), random.Next(1000, 3000), Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256)), new DrawningPorthole());
SetData(); SetData();
Draw(); Draw();
@ -75,7 +76,6 @@ namespace Airbus
{ {
case "10": case "10":
count_porthole = CountPorthole.Ten; count_porthole = CountPorthole.Ten;
toolStripStatusLabelSpeed.Text = Convert.ToString((int)count_porthole);
break; break;
case "20": case "20":
count_porthole = CountPorthole.Twenty; count_porthole = CountPorthole.Twenty;
@ -102,7 +102,7 @@ namespace Airbus
airplane = new DrawingAirbus(random.Next(100, 300), random.Next(1000, 3000), airplane = new DrawingAirbus(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)),
true, true); true, true, new DrawningPorthole());
SetData(); SetData();
Draw(); Draw();
} }

View File

@ -38,6 +38,8 @@
this.buttonDown = new System.Windows.Forms.Button(); this.buttonDown = new System.Windows.Forms.Button();
this.buttonModCreate = new System.Windows.Forms.Button(); this.buttonModCreate = new System.Windows.Forms.Button();
this.comboBoxSelectorMap = new System.Windows.Forms.ComboBox(); this.comboBoxSelectorMap = new System.Windows.Forms.ComboBox();
this.comboBoxPortholeSer = new System.Windows.Forms.ComboBox();
this.comboBoxFormPorthole = new System.Windows.Forms.ComboBox();
this.statusStrip1.SuspendLayout(); this.statusStrip1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBox)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox)).BeginInit();
this.SuspendLayout(); this.SuspendLayout();
@ -165,11 +167,37 @@
this.comboBoxSelectorMap.TabIndex = 8; this.comboBoxSelectorMap.TabIndex = 8;
this.comboBoxSelectorMap.SelectedIndexChanged += new System.EventHandler(this.comboBoxSelectorMap_SelectedIndexChanged); this.comboBoxSelectorMap.SelectedIndexChanged += new System.EventHandler(this.comboBoxSelectorMap_SelectedIndexChanged);
// //
// comboBoxPortholeSer
//
this.comboBoxPortholeSer.FormattingEnabled = true;
this.comboBoxPortholeSer.Items.AddRange(new object[] {
"10",
"20",
"30"});
this.comboBoxPortholeSer.Location = new System.Drawing.Point(139, 12);
this.comboBoxPortholeSer.Name = "comboBoxPortholeSer";
this.comboBoxPortholeSer.Size = new System.Drawing.Size(121, 23);
this.comboBoxPortholeSer.TabIndex = 9;
//
// comboBoxFormPorthole
//
this.comboBoxFormPorthole.FormattingEnabled = true;
this.comboBoxFormPorthole.Items.AddRange(new object[] {
"Обычные",
"Крадратные",
"Ромбом"});
this.comboBoxFormPorthole.Location = new System.Drawing.Point(139, 41);
this.comboBoxFormPorthole.Name = "comboBoxFormPorthole";
this.comboBoxFormPorthole.Size = new System.Drawing.Size(121, 23);
this.comboBoxFormPorthole.TabIndex = 10;
//
// FormMap // FormMap
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450); this.ClientSize = new System.Drawing.Size(800, 450);
this.Controls.Add(this.comboBoxFormPorthole);
this.Controls.Add(this.comboBoxPortholeSer);
this.Controls.Add(this.comboBoxSelectorMap); this.Controls.Add(this.comboBoxSelectorMap);
this.Controls.Add(this.buttonModCreate); this.Controls.Add(this.buttonModCreate);
this.Controls.Add(this.buttonDown); this.Controls.Add(this.buttonDown);
@ -201,5 +229,7 @@
private Button buttonDown; private Button buttonDown;
private Button buttonModCreate; private Button buttonModCreate;
private ComboBox comboBoxSelectorMap; private ComboBox comboBoxSelectorMap;
private ComboBox comboBoxPortholeSer;
private ComboBox comboBoxFormPorthole;
} }
} }

View File

@ -28,9 +28,37 @@ namespace Airbus
} }
private void buttonCreate_Click(object sender, EventArgs e) private void buttonCreate_Click(object sender, EventArgs e)
{ {
Random random = new Random(); IPorthole formPorthole = new DrawningPorthole();
var airbus = new DrawningAirplane(random.Next(100, 300), random.Next(1000, 3000), Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256))); switch (comboBoxFormPorthole.Text)
{
case "Обычные":
formPorthole = new DrawningPorthole();
break;
case "Крадратные":
formPorthole = new DrawingSquarePorthole();
break;
case "Ромбом":
formPorthole = new DrawingRhombPorthole();
break;
}
Random random = new Random();
var airbus = new DrawningAirplane(random.Next(100, 300), random.Next(1000, 3000), Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256)), formPorthole);
CountPorthole count_porthole = CountPorthole.Ten;
switch (comboBoxPortholeSer.Text)
{
case "10":
count_porthole = CountPorthole.Ten;
break;
case "20":
count_porthole = CountPorthole.Twenty;
break;
case "30":
count_porthole = CountPorthole.Thirty;
break;
}
airbus.Upd_count_Porthole(count_porthole);
SetData(airbus); SetData(airbus);
} }
@ -58,11 +86,41 @@ namespace Airbus
private void buttonModCreate_Click(object sender, EventArgs e) private void buttonModCreate_Click(object sender, EventArgs e)
{ {
IPorthole formPorthole = new DrawningPorthole();
switch (comboBoxFormPorthole.Text)
{
case "Обычные":
formPorthole = new DrawningPorthole();
break;
case "Крадратные":
formPorthole = new DrawingSquarePorthole();
break;
case "Ромбом":
formPorthole = new DrawingRhombPorthole();
break;
}
Random random = new Random(); Random random = new Random();
var airbus = new DrawingAirbus(random.Next(100, 300), random.Next(1000, 3000), var airbus = new DrawingAirbus(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)),
true, true); true, true, formPorthole);
CountPorthole count_porthole = CountPorthole.Ten;
switch (comboBoxPortholeSer.Text)
{
case "10":
count_porthole = CountPorthole.Ten;
toolStripStatusLabelSpeed.Text = Convert.ToString((int)count_porthole);
break;
case "20":
count_porthole = CountPorthole.Twenty;
break;
case "30":
count_porthole = CountPorthole.Thirty;
break;
}
airbus.Upd_count_Porthole(count_porthole);
SetData(airbus); SetData(airbus);
} }

View File

@ -10,6 +10,6 @@ namespace Airbus
{ {
int CountPorthole { get; set; } int CountPorthole { get; set; }
public void DrawPorthole(Graphics g, Color color, float posX, float posY); public void DrawPortholes(Graphics g, Color color, float posX, float posY);
} }
} }