Week 4 Assignment (Lego Mania) General Rules for Homework Assignments • You are strongly encouraged to add comments throughout the program. Doing so will help your facilitator to understand your programming logic and grade you more accurately. • You must work on your assignments individually. You are not allowed to copy the answers from the others. However, you are encouraged to discuss approaches to the homework assignment with your section mates and the facilitator in your section via the discussion board. • Each assignment has a strict deadline. However, you are still allowed to submit your assignment within 2 days after the deadline with a penalty. 15% of the credit will be deducted unless you made previous arrangements with your facilitator and professor. Assignments submitted 2 days after the deadline will not be graded. • When the term lastName is referenced in an assignment, please replace it with your last name. You are strongly encouraged to add comments into your program! Create a new Java Project in Eclipse named HW4_lastName. Create a package named cs520.hw4 and complete the following by writing the appropriate classes under this package. Part 1 (50 points) Create a Swing GUI application that displays the following graphics of red and blue lego blocks. The tower is always built from bottom row to top row, left to right in each row. Write a class named Legos1 extending the JFrame class with the following specifications. a. Declare the integer type instance variables startX, startY, legoWidth, and legoHeight. The first two values represent the top-left coordinates of the first red block in the bottom row. The next two values are the width and height of each block. b. Declate another integer instance variable, baseLength. This represents the number of blocks in the bottom row. c. In the constructor, specify the appropriate window title using your lastName and assign the above instance variables with the values 20, 300, 50, 20, and 10, respectively. d. In the paint method, using nested loops, fill the pattern from the bottom row all the way to the top. Notice, that the number of blocks decreases by one for each row. Use the baseLength variable to control the loops. e. In the main method, create the application object, set its size to 550 by 325 and its visibility to true to test the above graphics. Note: For each block, use the fillRoundRect method of the Graphics object. Use a value of 2 for arcWidth and arcHeight. http://docs.oracle.com/javase/6/docs/api/java/awt/Graphics.html Part 2 (50 points) Modify part1 assuming that now you have a bucket of lego blocks with various colors. Write a newclass Legos2 in the same package for this part. Use an array of Color objects and initialize the array with the colors: Color.red, Color.blue, Color.yellow, Color.green, Color.pink,Color.black, Color.magenta, Color.orange, and Color.cyan. For picking the next color for the block, use a java.util.Random object and generate a random integer using the nextInt method. Use the length of the colors array as an argument (do not hard code the array length). http://docs.oracle.com/javase/6/docs/api/java/util/Random.html#nextInt(int) Since the colors are picked at random, the output varies for each invocation. A sample output is shown below. BONUS (10 points) Modify part2 and write the Legos3 version so that the same color is not picked consecutively. A sample output is shown below. Submission Create an archive of your Eclipse project using the following steps. Select the HW4_lastName project in the Eclipse IDE’s Package Explorer or the Navigator window. Click File-Export. Select the General-Archive File option. Click Next. Specify the “To archive file:” entry as say, C:\Temp\HW4_lastName.zip. The zip file will be created and stored in the C:\Temp folder. Submit this zip file as an attachment in the Assignment Section.