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