1 package npw; 2 3 import painter.SPainter; 4 import shapes.SSquare; 5 6 import javax.swing.*; 7 import java.awt.*; 8 import java.util.Random; 9 import java.util.Scanner; 10 11 import static javax.swing.SwingUtilities.*; 12 13 public class Stella { 14 15 16 private Stella() { 17 paintCanvas(); 18 } 19 20 public static void main(String[] args) { 21 invokeLater( Stella::new ); 22 } 23 24 private void paintCanvas() { 25 int squareCount = getNumber( "How Many Squares to Draw" ); 26 int canvasSize = 800; 27 int squareSide = canvasSize - 100; // Square Size Constraint 28 int smallerFactor = squareSide / squareCount; 29 30 SPainter painter = new SPainter( "Stella", canvasSize, canvasSize ); 31 SSquare square = new SSquare( squareSide ); 32 33 drawSquare( painter, squareCount, smallerFactor, square ); 34 } 35 36 private void drawSquare(SPainter painter, int nrOfSquares, int shrinkFactor, SSquare square) { 37 boolean DifCol = true; 38 Color randomColor1 = randomColor(); 39 Color randomColor2 = randomColor(); 40 41 for (int i = 0; i < nrOfSquares; i++) { 42 if (DifCol == true) { 43 painter.setColor( randomColor1 ); 44 painter.paint( square ); 45 square.shrink( shrinkFactor ); 46 DifCol = false; 47 } else { 48 painter.setColor( randomColor2 ); 49 painter.paint( square ); 50 square.shrink( shrinkFactor ); 51 DifCol = true; 52 } 53 } 54 } 55 private Color randomColor() { 56 Random rgen = new Random(); 57 int r = rgen.nextInt( 255 ); 58 int g = rgen.nextInt( 255 ); 59 int b = rgen.nextInt( 255 ); 60 return new Color( r, g, b ); 61 } 62 private static int getNumber(String prompt) { 63 String nss = JOptionPane.showInputDialog( null, prompt + "?" ); 64 Scanner scanner = new Scanner( nss ); 65 return scanner.nextInt(); 66 } 67 }