/home/bmahaja2/NetBeansProjects/CS1/src/npw/Number2.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.SSquare;
14
15
16
17 @author
18
19 public class Number2 {
20
21
22
23 @param args
24
25 public static void main(String[] args) {
26 SwingUtilities.invokeLater(new Runnable() {
27 public void run() {
28 new Number2();
29 }
30 });
31 }
32
33 public Number2() {
34 paintTheImage();
35 }
36
37
38 private void paintTheImage() {
39
40 int nrOfRows = getNumber("rows");
41 int nrOfColumns = getNumber("columns");
42 int sizeOfSquare = getNumber("square side length");
43
44 int height = nrOfRows * sizeOfSquare;
45 int width = nrOfColumns * sizeOfSquare;
46 SPainter miro = new SPainter("Number 2", width + 50, height + 50);
47 miro.setBrushWidth(4);
48 SSquare square = new SSquare(sizeOfSquare);
49
50 paintRectangle(miro, square, nrOfRows, nrOfColumns);
51 }
52
53 private static int getNumber(String prompt) {
54 String nss = JOptionPane.showInputDialog(null, prompt + "?");
55 Scanner scanner = new Scanner(nss);
56 return scanner.nextInt();
57 }
58
59 private static void paintRectangle(SPainter miro, SSquare square,
60 int nrOfRows, int nrOfColumns) {
61
62 miro.mlt(((nrOfColumns - 1) / 2.0) * square.side());
63 miro.mbk(((nrOfRows - 1) / 2.0) * square.side());
64
65 int i = 1;
66 while (i <= nrOfRows) {
67 paintOneRow(miro, nrOfColumns, square);
68 miro.mfd(square.side());
69 i = i + 1;
70 }
71
72
73 miro.mrt(((nrOfColumns - 1) / 2.0) * square.side());
74 miro.mfd(((nrOfRows - 1) / 2.0) * square.side());
75 }
76
77 private static void paintOneRow(SPainter miro, int nrOfColumns, SSquare square) {
78 int i = 1;
79 while (i <= nrOfColumns) {
80 paintOneSquare(miro, square);
81 miro.mrt(square.side());
82 i = i + 1;
83 }
84 miro.mlt(nrOfColumns * square.side());
85 }
86
87 private static void paintOneSquare(SPainter miro, SSquare square) {
88 miro.setColor(randomColor());
89 square.shrink(20);
90 miro.paint(square);
91 miro.setColor(Color.BLACK);
92 miro.draw(square);
93 square.expand(20);
94 }
95
96 private static Color randomColor() {
97 Random rgen = new Random();
98 int r = rgen.nextInt(256);
99 int g = rgen.nextInt(256);
100 int b = rgen.nextInt(256);
101 return new Color(r, b, g);
102 }
103
104 }
105
106
107
108