AlternateBalloons.java
/* 
 * Program that paints 300 random balloons in a blue sky. 
 * It will feature commands. 
 */

package npw;

import java.awt.Color;
import java.util.Random;
import javax.swing.SwingUtilities;
import painter.SPainter;
import shapes.SCircle;
import shapes.SSquare;

public class AlternateBalloons {

    // Required Infrastructure

    public AlternateBalloons(){
        paintTheImage();
    }

    public static void main(String[] args){
        SwingUtilities.invokeLater(new Runnable(){
            public void run() {
                new AlternateBalloons();
            }
        });
    }

    // THE PAINTER DOING ITS THING

    private void paintTheImage(){
        SPainter painter = new SPainter("AlternateBalloons", 600, 600);
        paintSky(painter); // ask IntelliJ to generate the stub;
        int nrOfBalloons = 300;
        paintBalloons(painter, nrOfBalloons); // ask IntelliJ to generate the stub
    }

    private void paintSky(SPainter painter){
        painter.setColor(Color.BLUE);
        SSquare sky = new SSquare(2000);
        painter.paint(sky);
    }

    private void paintBalloons(SPainter painter, int nrOfBalloons){
        int rv1 = (int)(Math.random() * 256);
        int gv1 = (int)(Math.random() * 256);
        int bv1 = (int)(Math.random() * 256);
        int i = 1;
        while (i <= nrOfBalloons){
            paintOneBalloon(painter); // ask IntelliJ to generate the stub
            i = i + 1;
        }
    }

    private void paintOneBalloon(SPainter painter){
        Random rgen = new Random();
        int rn = rgen.nextInt(5);
        if (rn == 0) {
            painter.setColor(Color1());
        } else if (rn == 1) {
            painter.setColor(Color2());
        } else if (rn == 2) {
            painter.setColor(Color3());
        } else if (rn == 3) {
            painter.setColor(Color4());
        } else if (rn == 4) {
            painter.setColor(Color5());
        }
        painter.move();
        int balloonRadius = 30;
        SCircle balloon = new SCircle(balloonRadius);
        painter.paint(balloon);
        painter.setColor(Color.BLACK);
        painter.draw(balloon);
    }

    private static Color Color1() {
        int rv = 220; int gv = 235; int bv = 89;
        return new Color(rv,gv,bv);
    }
    private static Color Color2() {
        int rv = 161; int gv = 230; int bv = 175;
        return new Color(rv,gv,bv);
    }
    private static Color Color3() {
        int rv = 197; int gv = 205; int bv = 198;
        return new Color(rv,gv,bv);
    }
    private static Color Color4() {
        int rv = 250; int gv = 162; int bv = 33;
        return new Color(rv,gv,bv);
    }
    private static Color Color5() {
        int rv = 185; int gv = 242; int bv = 250;
        return new Color(rv,gv,bv);
    }
}