Week 4 Assignment (Lego Mania) Solution

Week 4 Assignment (Lego Mania) Solution

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.
Powered by