Invention2.java
1    package npw;
2    
3    import painter.SPainter;
4    import shapes.SCircle;
5    import shapes.SSquare;
6    
7    import javax.swing.*;
8    import java.awt.*;
9    import java.util.Random;
10   
11   public class Invention2 {
12   
13       private void paintTheImage(){
14           int canvasDim = 800;
15           double radius = 30;
16           double minSide = 20;
17           double maxSide = 200;
18           int nrOfObjects = 100;
19           SPainter painter = new SPainter("Nondeterministic Invention", canvasDim,canvasDim);
20           int i = 0;
21           while (i < nrOfObjects) {
22               painter.move();
23               painter.setColor(randomColor());
24               if (i % 2 == 0) {
25                   double diffRad = randomSquareSideLength(minSide, maxSide);
26                   SCircle circle = new SCircle(radius+diffRad);
27                   painter.paint(circle);
28               } else {
29                   double side = randomSquareSideLength(minSide, maxSide);
30                   SSquare square = new SSquare(side);
31                   painter.paint(square);
32               }
33               i = i + 1;
34           }
35       }
36   
37       private static Color randomColor() {
38           Random rgen = new Random();
39           int r = rgen.nextInt(256);
40           int g = rgen.nextInt(256);
41           int b = rgen.nextInt(256);
42           return new Color(r, g, b);
43       }
44   
45       private static double randomSquareSideLength(double minSideLength, double maxSideLength) {
46           Random random = new Random();
47           return minSideLength + ((maxSideLength - minSideLength) * random.nextDouble());
48       }
49   
50       public Invention2(){
51           paintTheImage();
52       }
53   
54       public static void main(String[] args) {
55           SwingUtilities.invokeLater(new Runnable() {
56               public void run() {
57                   new Invention2();
58               }
59           });
60       }
61   }
62