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