Stella.java
1    package npw;
2    
3    import painter.SPainter;
4    import shapes.SSquare;
5    import javax.swing.*;
6    import java.awt.*;
7    import java.util.Random;
8    import java.util.Scanner;
9    
10   public class Stella {
11   
12   
13   
14       private void paintTheImage(){
15           //establish the painter and objects
16           int numberOfSquares = getNumber("How Many Squares?");
17           int painterSize = 800;
18           int squareSize = painterSize - 100;
19           int shrink = squareSize/numberOfSquares;
20           SSquare square = new SSquare (squareSize);
21           SPainter painter = new SPainter ("Stella", painterSize, painterSize);
22   
23           paintSquares(painter, square, numberOfSquares, shrink);
24       }
25   
26       private void paintSquares(SPainter painter, SSquare square, int numberOfSquares, int shrink) {
27           Color firstColor = randomColor();
28           Color secondColor = randomColor();
29   
30           for(int i = 0; i<numberOfSquares; i++) {
31               if (i % 2 == 0) {
32                   painter.setColor(firstColor);
33                   painter.paint(square);
34                   square.shrink(shrink);
35               }
36               else {
37                   painter.setColor(secondColor);
38                   painter.paint(square);
39                   square.shrink(shrink);
40               }
41           }
42       }
43   
44       private static Color randomColor() {
45           Random rgen = new Random();
46           int r = rgen.nextInt(256);
47           int g = rgen.nextInt(256);
48           int b = rgen.nextInt(256);
49           return new Color(r,g,b);
50       }
51   
52       private static int getNumber(String prompt) {
53           String nss = JOptionPane.showInputDialog(null,prompt+"?");
54           Scanner scanner = new Scanner(nss);
55           return scanner.nextInt();
56       }
57   
58       public Stella() {
59           paintTheImage();
60       }
61       public static void main (String[]args) {
62           SwingUtilities.invokeLater(new Runnable() {
63               public void run() {
64                   new Stella();
65               }
66           });
67       }
68   }