01 /*02 * File: Rainbow.java03 * ------------------04 * This program displays a rainbow by adding consecutively05 * smaller circles to the canvas using an array.06 */07 08 import java.awt.Color;09 10 import acm.graphics.GOval;11 import acm.graphics.GRect;12 import acm.program.*;13 14 public class Rainbow extends GraphicsProgram {15 16 public static final int SUN_RADIUS = 80;17 public static final int BAND_WIDTH = 20;18 public static final int RAINBOW_OVERHANG = 380;19 public static final int RAINBOW_OFFSET = 150;20 21 public void run() {22 23 // Creating a sky with a GRect method24 25 drawSky (Color.CYAN);26 27 // Creating a sky with a GOval method28 // drawCircle (220, 220, 510, Color.CYAN);29 30 Color[] colors = {Color.RED, Color.ORANGE, Color.YELLOW, Color.GREEN, Color.BLUE, Color.MAGENTA, Color.CYAN};31 32 for (int i=0; i<colors.length; i++){33 34 drawCircle (getWidth()/2, getHeight() + RAINBOW_OFFSET, ((getWidth()+RAINBOW_OVERHANG)/2)-(i*BAND_WIDTH), colors[i]);35 36 }37 38 // Creating a cute, little sun in the corner using the GOval method39 40 drawCircle (0, 0, SUN_RADIUS, Color.YELLOW);41 42 }43 44 private void drawCircle(int x, int y, int r, Color acolor) {45 46 GOval myCircle = new GOval(x-r, y-r, r*2, r*2);47 myCircle.setFilled(true);48 myCircle.setColor(acolor);49 add (myCircle);50 51 }52 53 private void drawSky(Color skycolor) {54 55 GRect mySky = new GRect(0, 0, getWidth(), getHeight());56 mySky.setFilled(true);57 mySky.setColor(skycolor);58 add (mySky);59 }60 61 }62
Assignment 2: Rainbow.java
Reply
