Question: I need help on part of my programming assignment. What I need to do is: In the load method for the DrawProgram class add a
I need help on part of my programming assignment.
What I need to do is:
In the load method for the DrawProgram class add a case for Polygons
the format is for a polygon is: "POLYGON,color,filled,numberPoints,x0,y0,x1,y1,x2,y2,"
Here is my polyogn class
public void polygon(int []x, int[]y){ this.xPoints=x; this.yPoints=y; }
Here is the load method. I have all the cases except the case POLYGON. Help with completing this would be nice. I know there needs to be some kind of while loop to determine the fields. Here is the Polygon.txt file
# polygons.txt
POLYGON,3FF098,filled,6,50,80,70,20,20,60,80,60,30,20,50,80 POLYGON,CF1294,filled,5,50,350,120,300,90,330,150,360,50,350
*Need help just on the polyogon at the bottom
public static ArrayList load(String filename) {
ArrayList primitives = new ArrayList<>(); try { Scanner scan = new Scanner(new File(filename)); while (scan.hasNextLine()) {
int x0,y0,x1,y1,x2,y2,width,height,radius;
// Read and parse line String line = scan.nextLine(); String[] fields = line.split(","); if (fields.length == 0) continue; // discard empty
// Interpret primitives switch (fields[0]) { case "TEXT": x0 = Integer.parseInt(fields[3]); y0 = Integer.parseInt(fields[4]); Text text = new Text(x0, y0 , fields[2]); text.setColor(Integer.parseInt(fields[1], 16)); text.setFont(fields[5], Integer.parseInt(fields[6])); primitives.add(text); break;
case "SQUARE": x0 = Integer.parseInt(fields[2]); y0 = Integer.parseInt(fields[3]); Square square = new Square(x0, y0, Integer.parseInt(fields[4])); square.setColor(Integer.parseInt(fields[1], 16)); square.setFilled(fields[5].equals("filled")); primitives.add(square); break;
case "RECTANGLE": x0 = Integer.parseInt(fields[2]); y0 = Integer.parseInt(fields[3]); width = Integer.parseInt(fields[4]); height = Integer.parseInt(fields[5]); Rectangle rect = new Rectangle(x0, y0, width, height); rect.setColor(Integer.parseInt(fields[1], 16)); rect.setFilled(fields[6].equals("filled")); primitives.add(rect); break;
case "TRIANGLE" : x0 = Integer.parseInt(fields[2]); y0 = Integer.parseInt(fields[3]); x1 = Integer.parseInt(fields[4]); y1 = Integer.parseInt(fields[5]); x2 = Integer.parseInt(fields[6]); y2 = Integer.parseInt(fields[7]); Triangle triangle = new Triangle(x0,y0,x1,y1,x2,y2); triangle.setColor(Integer.parseInt(fields[1],16)); triangle.setFilled(fields[8].equals("filled")); primitives.add(triangle); break; case "CIRCLE" : x0 = Integer.parseInt(fields[2]); y0 = Integer.parseInt(fields[3]); Circle circle = new Circle(x0,y0,Integer.parseInt(fields[4])); circle.setColor(Integer.parseInt(fields[1],16)); circle.setFilled(fields[5].equals("filled")); primitives.add(circle); break; case "OVAL" : x0 = Integer.parseInt(fields[2]); y0 = Integer.parseInt(fields[3]); width = Integer.parseInt(fields[4]); height = Integer.parseInt(fields[5]); Oval oval = new Oval(x0,y0,width,height); oval.setColor(Integer.parseInt(fields[1],16)); oval.setFilled(fields[6].equals("filled")); primitives.add(oval); break; //case "POLYGON": ??? // x =Integer.parseInt(fields[]); // y =Integer.parseInt(fields[]); *It must be Polygon polygon = new Polygon(x,y); *Cant be anythng like Polygon(x,y,z) //while // break; } }
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
