/home/kchan2/NetBeansProjects/CS1/src/npw/Number1.java |
1
2
3
4
5
6 package npw;
7
8 import java.awt.Color;
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 Number1 {
21
22
23
24
25 @param args
26
27 public static void main(String[] args) {
28 SwingUtilities.invokeLater(new Runnable() {
29 public void run() {
30 new Number1();
31 }
32 });
33 }
34
35 public Number1() {
36 paintTheImage();
37 }
38
39
40
41 private void paintTheImage() {
42
43 int nrOfRows = getNumber("rows");
44 int nrOfColumns = getNumber("columns");
45 int sizeOfSquare = getNumber("square side length");
46
47 int height = nrOfRows * sizeOfSquare;
48 int width = nrOfColumns * sizeOfSquare;
49 SPainter miro = new SPainter("Number 1",width+50,height+50);
50 miro.setBrushWidth(4);
51 SSquare square = new SSquare(sizeOfSquare);
52
53 paintRectangle(miro,square,nrOfRows,nrOfColumns);
54 }
55
56 private int getNumber(String prompt) {
57 String nss = JOptionPane.showInputDialog(null,prompt+"?");
58 Scanner scanner = new Scanner(nss);
59 return scanner.nextInt();
60 }
61
62 private void paintRectangle(SPainter miro, SSquare square, 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 miro.mrt(((nrOfColumns-1)/2.0) * square.side());
74 miro.mfd(((nrOfRows-1)/2.0) * square.side());
75 }
76
77 private 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 void paintOneSquare(SPainter miro, SSquare square) {
88 miro.setColor(randomColor());
89 miro.paint(square);
90 miro.setColor(Color.BLACK);
91 miro.draw(square);
92 }
93
94 private Color randomColor() {
95 Random rgen = new Random();
96 int r = rgen.nextInt(256);
97 int g = rgen.nextInt(256);
98 int b = rgen.nextInt(256);
99 return new Color(r,b,g);
100 }
101
102 }
103