COMP 110 Spring 2011

Lab 7

25 points

Assigned: Friday, March 25
Due: Friday, April 1 by 1:00pm

Files

Lab7.java

FunPatternPanel.java

Description

You are given some artistic freedom in this lab. You will be creating a graphics applet to draw a picture that draws the same shapes multiple times. While completing this lab you should notice the top-down design of the problem. The big problem -- draw me a picture. You will need to break down the problem into subtasks (your methods) based on the guidelines I provide. You should think of each bullet as a method (or several methods).

  1. Choose shapes by looking at the Java Graphics class. There are several methods in the Graphics class. Some of them start with the word draw (these draw an outline of a shape), and others start with the word fill (these draw a filled version of a shape). You may choose between several options for shapes, including but not limited to: rectangles, ovals, lines, and polygons (note that polygons may require some knowledge of arrays, which we have not yet covered, but feel free to explore them if you'd like).

    Define your own static methods to draw your shapes. I have given you an example method in FunPatternPanel.java, called drawCircle. Follow that example when writing your own methods. Define one method for each different shape you will draw. You should choose at least one shape to draw in your program (in addition to the circle that I have already given you). You may also draw text in addition to your shapes.

  2. The first two arguments for most shape drawing methods in the Graphics class are the x and y location. Note that the origin (0, 0) of the drawing area is at the upper left corner. You need to change the location for each shape that is displayed. A good way to do this is to look at the Java Math class and design a mathematical function. Here is example code for how to have your shapes drawn in a circle with radius 20 around the point (0, 0):

     
        for (int i = 0; i < 360; i += 10)
        {
            int x = (int) (Math.sin(Math.toRadians(i)) * 20);
            int y = (int) (Math.cos(Math.toRadians(i)) * 20);
            drawCircle(g, x, y, 10);
        }
    

    Note that your shape is being drawn many times in this code. Your code that draws your shapes in a pattern (such as the example code above) should go inside of the method drawPattern in FunPatternPanel.java. Notice that the drawPattern method is being called from inside the paintComponent method. Try copying the example code into your drawPattern method to see what happens. Remember that you have to run the file Lab7.java, because that is the class that has a main method in it.

  3. Before you draw each shape, you should change your drawing color to a random color (select from at least 5 colors) -- think about switch statements. Go to the Java Color class to choose your colors. If you'd like, you can create custom colors by using the Color class' constructors.

    A random number generator is provided for you in the Java Math class. I have created a static method called setRandomColor for you, but it is incomplete. It calls the Math.random method to get a random double value >= 0.0 and < 1.0 and puts that value into the variable rnd. How can you get a random integer between 1 and 5 (or however many colors you choose) from the value in rnd?

    You must complete the setRandomColor method so that it sets a random color when it is called. You must also call the setRandomColor in your drawPattern method before you draw any shape.

More information

Grading

How to hand in the assignment