Computer Science 252
Problem Solving with Java

Fall 2015, The College of Saint Rose

ColorfulSpiralLines Demo

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

ColorfulSpiralLines BlueJ Project

Click here to download a BlueJ project for ColorfulSpiralLines.

ColorfulSpiralLines Source Code

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

import objectdraw.*;
import java.awt.*;
import java.util.Random;

 * Example ColorfulSpiralLines: adding some randomly chosen
 * colors to our Spiral line drawings.
 * Jim Teresco, Siena College, CSIS 120, Spring 2011
 * Modified for CSC 252, The College of Saint Rose, Fall 2013, Spring 2014, Spring 2015
 * Based on example from Williams College, CSCI 134
 * $Id: 2528 2015-01-22 03:05:27Z terescoj $

public class ColorfulSpiralLines extends WindowController {

    // first coordinate of a line segment
    private Location linesStart;

    // color of next sprial
    private Color currentColor;

    // random number generator -- created here since there is no
    // need to construct one each time the onMousePress method
    // is called
    private Random pickAColor = new Random();

     * Save the first coordinate of the line, and pick
     * a new random color.
    public void onMousePress(Location point) {
        linesStart = point;

        // since we only need colorNumber within this method, it
        // is declared as a local variable.
        // once we use it here to choose currentColor, we no
        // longer need to remember its value
        int colorNumber = pickAColor.nextInt(4);

        switch (colorNumber) {
            case 0:
            currentColor =;
            case 1:
            currentColor =;
            case 2:
            currentColor = Color.magenta;
            currentColor =;

     * As the user is dragging draw a line from
     * initial point where mouse pressed to current point.
    public void onMouseDrag(Location point) {
        new Line(linesStart, point, canvas).setColor(currentColor);