Connected more shapes

This commit is contained in:
Lukasz Baldyga committed 2020-10-25 05:36:34 +00:00
1 parent 79127c80d7
commit a7b88bbe31
1 file changed
+75 -19
@@ -23,15 +23,10 @@ namespace Advanced_Software_Engineering {
case "moveto":
//Check parameters
if (parameters.Length == 2) {
try {
return new
MoveTo(drawer,
return new MoveTo(drawer,
SettingsAndHelperFunctions.ConvertToInt(parameters[0]),
SettingsAndHelperFunctions.ConvertToInt(parameters[1]));
} catch (Exception e) {
throw e;
}
} else throw new Exception("Command has an incorrect number of parameters");
case "drawto":
@@ -39,15 +34,10 @@ namespace Advanced_Software_Engineering {
case "lineto":
//Check parameters
if (parameters.Length == 2) {
try {
return new
DrawTo(drawer,
SettingsAndHelperFunctions.ConvertToInt(parameters[0]),
SettingsAndHelperFunctions.ConvertToInt(parameters[1]));
} catch (Exception e) {
throw e;
}
} else throw new Exception("Command has an incorrect number of parameters");
case "regularpolygon":
case "rp":
@@ -58,8 +48,7 @@ namespace Advanced_Software_Engineering {
SettingsAndHelperFunctions.ConvertToInt(parameters[0]),
SettingsAndHelperFunctions.ConvertToDouble(parameters[1])
);
}
else if (parameters.Length == 3) {
} else if (parameters.Length == 3) {
return new RegularPolygon(drawer,
SettingsAndHelperFunctions.ConvertToInt(parameters[0]),
SettingsAndHelperFunctions.ConvertToDouble(parameters[1]),
@@ -73,13 +62,22 @@ namespace Advanced_Software_Engineering {
Square(drawer,
SettingsAndHelperFunctions.ConvertToDouble(parameters[0])
);
}
else if(parameters.Length == 2) {
} else if (parameters.Length == 2) {
return new Square(drawer,
SettingsAndHelperFunctions.ConvertToDouble(parameters[0]),
SettingsAndHelperFunctions.ConvertToDouble(parameters[1])
);
} else throw new Exception("Command has an incorrect number of parameters");
case "quadrilateral":
//Check parameters
if (parameters.Length == 8) {
return new Quadrilateral(drawer,
SettingsAndHelperFunctions.ConvertToPoint(parameters[0], parameters[1]),
SettingsAndHelperFunctions.ConvertToPoint(parameters[2], parameters[3]),
SettingsAndHelperFunctions.ConvertToPoint(parameters[4], parameters[5]),
SettingsAndHelperFunctions.ConvertToPoint(parameters[6], parameters[7])
);
} else throw new Exception("Command has an incorrect number of parameters");
case "rectangle":
//Check parameters
if (parameters.Length == 2) {
@@ -87,8 +85,14 @@ namespace Advanced_Software_Engineering {
SettingsAndHelperFunctions.ConvertToDouble(parameters[0]),
SettingsAndHelperFunctions.ConvertToDouble(parameters[1])
);
}
else if(parameters.Length == 4) {
} else if (parameters.Length == 8) {
return new Quadrilateral(drawer,
SettingsAndHelperFunctions.ConvertToPoint(parameters[0], parameters[1]),
SettingsAndHelperFunctions.ConvertToPoint(parameters[2], parameters[3]),
SettingsAndHelperFunctions.ConvertToPoint(parameters[4], parameters[5]),
SettingsAndHelperFunctions.ConvertToPoint(parameters[6], parameters[7])
);
} else if (parameters.Length == 4) {
return new Rectangle(drawer,
SettingsAndHelperFunctions.ConvertToPoint(parameters[0], parameters[1]),
SettingsAndHelperFunctions.ConvertToPoint(parameters[2], parameters[3])
@@ -109,13 +113,18 @@ namespace Advanced_Software_Engineering {
Triangle(drawer,
SettingsAndHelperFunctions.ConvertToDouble(parameters[0])
);
}
else if(parameters.Length == 2) {
} else if (parameters.Length == 2) {
return new
Triangle(drawer,
SettingsAndHelperFunctions.ConvertToDouble(parameters[0]),
SettingsAndHelperFunctions.ConvertToDouble(parameters[1])
);
} else if (parameters.Length == 6) {
return new Triangle(drawer,
SettingsAndHelperFunctions.ConvertToPoint(parameters[0], parameters[1]),
SettingsAndHelperFunctions.ConvertToPoint(parameters[2], parameters[3]),
SettingsAndHelperFunctions.ConvertToPoint(parameters[4], parameters[5])
);
} else throw new Exception("Command has an incorrect number of parameters");
case "dot":
@@ -240,6 +249,21 @@ namespace Advanced_Software_Engineering {
public string GetDescription() => verb.GetDescription();
}
class Quadrilateral : Verb {
Verb verb;
bool descCreated = false;
string desc;
public Quadrilateral(Drawer drawer, Point point1, Point point2, Point point3, Point point4) {
verb = new DrawLines(drawer, new Point[] { point1, point2, point3, point4 });
}
public void ExecuteVerb() => verb.ExecuteVerb();
public string GetDescription() => verb.GetDescription();
}
class Triangle : Verb {
Verb verb;
@@ -251,6 +275,10 @@ namespace Advanced_Software_Engineering {
verb = new RegularPolygon(drawer, 3, scale, offset);
}
public Triangle(Drawer drawer, Point point1, Point point2, Point point3) {
verb = new DrawLines(drawer, new Point[] { point1, point2, point3 });
}
public void ExecuteVerb() => verb.ExecuteVerb();
public string GetDescription() => verb.GetDescription();
@@ -324,6 +352,34 @@ namespace Advanced_Software_Engineering {
}
}
class DrawLines : Verb {
Drawer drawer;
Point[] points;
bool descCreated = false;
string desc;
public DrawLines(Drawer drawer, Point[] points) {
this.drawer = drawer;
this.points = points;
}
public void ExecuteVerb() {
drawer.DrawLines(points);
}
public string GetDescription() {
if (!descCreated) {
desc = "Draws a shape at points: ";
foreach (Point point in points) {
desc += point.X + ", " + point.Y + "\n";
}
}
return desc;
}
}
abstract class Value {
}