SimpleDots.java
1    package npw;
2    
3    import painter.SPainter;
4    import shapes.SCircle;
5    
6    import javax.swing.*;
7    import java.awt.*;
8    import java.util.Scanner;
9    
10   public class SimpleDots {
11       public static void main(String[] args) {
12           SwingUtilities.invokeLater(SimpleDots::new);
13       }
14   
15       public SimpleDots() {
16           paintTheImage();
17       }
18   
19       private void paintTheImage(){
20           int width = getNumber("width");
21           int height = getNumber("height");
22           int dotSpace = getNumber("horizontal space between dots");
23           int dotSpace2 = getNumber("vertical space between dots");
24           String coloring = getColor("Select Color");
25           SPainter painter = new SPainter("Simple Dot", width, height);
26           SCircle dot = new SCircle(5);
27           painter.mfd(height/2.0);
28           painter.tl();
29           painter.mfd(width/2.0);
30           painter.tl();
31           paintGradient(painter, dot, height, width, dotSpace, dotSpace2, coloring);
32       }
33   
34       private static int getNumber(String prompt) {
35           String nss = JOptionPane.showInputDialog(null,prompt+"?");
36           Scanner scanner = new Scanner(nss);
37           return scanner.nextInt();
38       }
39   
40       private static String getColor(String prompt) {
41           String nss = JOptionPane.showInputDialog(null,prompt+"?");
42           Scanner scanner = new Scanner(nss);
43           return scanner.next();
44       }
45   
46       private void paintGradient(SPainter painter, SCircle dot, int height, int width, int dotSpace, int vertical, String coloring){
47           double colWidth = dot.diameter() + dotSpace;
48           int nrOfCols = (int) Math.floor(( width / colWidth )) - 1;
49           int cols = 0;
50           while (cols < nrOfCols){
51               nextCol(painter, dot, dotSpace);
52               paintColumn(painter, dot, height, vertical, coloring);
53               cols = cols + 1;
54           }
55       }
56   
57       private void paintOneDot(SPainter painter, SCircle dot, String coloring){
58           painter.setColor(selectColor(coloring));
59           painter.paint(dot);
60       }
61   
62       private static Color selectColor(String command){
63           if (command.equalsIgnoreCase("blue")) {
64               int r = 0;
65               int g = 0;
66               int b = 255;
67               return new Color(r,g,b);
68           } else if (command.equalsIgnoreCase("red")) {
69               int r = 255;
70               int g = 0;
71               int b = 0;
72               return new Color(r,g,b);
73           } else if (command.equalsIgnoreCase("green")) {
74               int r = 0;
75               int g = 255;
76               int b = 0;
77               return new Color(r,g,b);
78           } else {
79               return Color.BLACK;
80           }
81   
82       }
83   
84       private void paintColumn(SPainter painter, SCircle dot, int height, int vertical, String coloring) {
85           int totalDistanceTraveled = 0;
86           while(totalDistanceTraveled < height - (dot.radius() * 3)) {
87               int travel = vertical;
88               totalDistanceTraveled = totalDistanceTraveled + travel;
89               painter.mfd(travel);
90               paintOneDot(painter, dot, coloring);
91           }
92           painter.mbk(totalDistanceTraveled);
93       }
94   
95       private void nextCol(SPainter painter, SCircle dot, int dotSpace){
96           painter.tl();
97           painter.mfd(dot.diameter() + dotSpace);
98           painter.tr();
99       }
100  
101  }