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