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