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