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