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