Computer Science 202
Introduction to Programming

Fall 2013, The College of Saint Rose

RandomOvalsOnClick Demo

A working demo of RandomOvalsOnClick will appear below. Click inside the applet to interact with it.



RandomOvalsOnClick BlueJ Project

Click here to download a BlueJ project for RandomOvalsOnClick.


RandomOvalsOnClick Source Code

The Java source code for RandomOvalsOnClick is below. Click on a file name to download it.


RandomOvalsOnClick.java


/**
 * Use a loop to draw lots and lots of randomly colored and positioned circles.
 * 
 * @author Jim Teresco
 * 
 * Developed in class, The College of Saint Rose
 * CSC 252, Fall 2013
 * 
 * $Id: RandomOvalsOnClick.java 2223 2013-10-22 19:30:12Z terescoj $
 */

import objectdraw.*;
import java.awt.*;

public class RandomOvalsOnClick extends WindowController
{

    // how big? how many?
    private static final double OVAL_SIZE = 10;
    private static final int OVALS_PER_CLICK = 100;
    
    // random generation stuff
    private RandomDoubleGenerator xGen;
    private RandomDoubleGenerator yGen;
    private RandomIntGenerator colorGen = new RandomIntGenerator(0,255);
    
    public void begin() 
    {
        xGen = new RandomDoubleGenerator(0, canvas.getWidth() - OVAL_SIZE);
        yGen = new RandomDoubleGenerator(0, canvas.getHeight() - OVAL_SIZE);
    }
    
    public void onMouseClick(Location point) {
        
        // option 1: count up
        /*
        // count the number of ovals we've drawn so far
        int counter = 0;
        while (counter < OVALS_PER_CLICK) {
            // if there's another oval to draw, draw it
            new FilledOval(xGen.nextValue(), yGen.nextValue(), OVAL_SIZE, OVAL_SIZE, canvas)
                .setColor(new Color(colorGen.nextValue(), colorGen.nextValue(),colorGen.nextValue()));
            // remember that we've drawn another
            counter++;
        }
        */
       
       //   option 2: count down
       // count the number of ovals yet to draw
       int counter = OVALS_PER_CLICK;
       while (counter > 0) {
           new FilledOval(xGen.nextValue(), yGen.nextValue(), OVAL_SIZE, OVAL_SIZE, canvas)
               .setColor(new Color(colorGen.nextValue(), colorGen.nextValue(),colorGen.nextValue()));
           counter--;
       }
        
    }

}