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 }