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