/home/mbilodea/NetBeansProjects/CS1/src/npw/Number3.java |
1
2
3
4
5 package npw;
6
7 import java.awt.Color;
8 import java.util.Random;
9 import java.util.Scanner;
10 import javax.swing.JOptionPane;
11 import javax.swing.SwingUtilities;
12 import painter.SPainter;
13 import shapes.SCircle;
14
15
16
17 @author
18
19 public class Number3 {
20
21
22
23
24 @param args
25
26 public static void main(String[] args) {
27 SwingUtilities.invokeLater(new Runnable() {
28 public void run() {
29 new Number3();
30 }
31 });
32 }
33
34 public Number3() {
35 paintTheImage();
36 }
37
38
39
40 private void paintTheImage() {
41
42 int nrOfRows = getNumber("rows");
43 int nrOfColumns = getNumber("columns");
44 int sizeOfCircle = getNumber("cicrle radius");
45
46 int height = nrOfRows * sizeOfCircle;
47 int width = nrOfColumns * sizeOfCircle;
48 SPainter micro = new SPainter("Number 3", width+50,height+50);
49 micro.setBrushWidth(4);
50 SCircle circle = new SCircle(sizeOfCircle);
51
52 paintRectangle(micro,circle,nrOfRows,nrOfColumns);
53 }
54
55 private static int getNumber(String prompt) {
56 String nss = JOptionPane.showInputDialog(null,prompt+"?");
57 Scanner scanner = new Scanner(nss);
58 return scanner.nextInt();
59 }
60
61 private static void paintRectangle(SPainter micro, SCircle circle,
62 int nrOfRows, int nrOfColumns) {
63
64 micro.mlt(((nrOfColumns-1)/2.0) * circle.diameter());
65 micro.mbk(((nrOfRows-1)/2.0) * circle.diameter());
66
67 int i = 1;
68 while ( i <= nrOfRows) {
69 paintOneRow(micro,nrOfColumns,circle);
70 micro.mfd(circle.diameter());
71 i = i + 1;
72 }
73
74 micro.mrt(((nrOfColumns-1)/2.0) * circle.diameter());
75 micro.mfd(((nrOfRows-1)/2.0) * circle.diameter());
76 }
77
78 private static void paintOneRow(SPainter micro, int nrOfColumns, SCircle circle) {
79 int i = 1;
80 while ( i <= nrOfColumns ) {
81 paintOneCircle(micro,circle);
82 micro.mrt(circle.diameter());
83 i = i + 1;
84 }
85 micro.mlt(nrOfColumns*circle.diameter());
86 }
87
88 private static void paintOneCircle(SPainter micro, SCircle circle) {
89 circle.s2();
90 micro.setColor(randomColor());
91 micro.paint(circle);
92 circle.x2();
93 }
94
95 private static Color randomColor() {
96 Random rgen = new Random();
97 int r = rgen.nextInt(256);
98 int g = rgen.nextInt(256);
99 int b = rgen.nextInt(256);
100 return new Color(r,b,g);
101 }
102
103 }