/home/evankemp/NetBeansProjects/CS1/src/npw/Number2.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.SSquare;
15
16
17
18 @author
19
20 public class Number2 {
21
22
23
24 @param args
25
26 public static void main(String[] args) {
27 SwingUtilities.invokeLater(new Runnable() {
28 public void run() {
29 new Number2();
30 }
31 });
32 }
33
34 public Number2() {
35 paintTheImage();
36 }
37
38
39 private void paintTheImage() {
40
41 int nrOfRows = getNumber("rows");
42 int nrOfColumns = getNumber("columns");
43 int sizeOfSquare = getNumber("square side length");
44
45 int height = nrOfRows * sizeOfSquare;
46 int width = nrOfColumns * sizeOfSquare;
47 SPainter miro = new SPainter("Number 2", width + 50, height + 50);
48 miro.setBrushWidth(4);
49 SSquare square = new SSquare(sizeOfSquare);
50
51 paintRectangle(miro, square, nrOfRows, nrOfColumns);
52 }
53
54 private static int getNumber(String prompt) {
55 String nss = JOptionPane.showInputDialog(null, prompt + "?");
56 Scanner scanner = new Scanner(nss);
57 return scanner.nextInt();
58 }
59
60 private static void paintRectangle(SPainter miro, SSquare square, 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 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 square.s2();
88 miro.setColor(randomColor());
89 miro.paint(square);
90 miro.setColor(Color.BLACK);
91 miro.draw(square);
92 square.x2();
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 }
104