1 /* 2 * Program to paint an image subject to the following constraints: 3 * 1. It uses at least 1 while statement in a non-trivial way 4 * 2. It uses at least 1 if statement in a non-trivial way 5 * 3. It features both circles and squares, all created from just 1 circle and 1 square - no rectangles 6 * 4. It creates the exact same image every time it is run 7 * 5. It is kinda interesting to look at 8 */ 9 10 package npw; 11 12 import painter.SPainter; 13 import shapes.SCircle; 14 import shapes.SSquare; 15 import javax.swing.*; 16 import java.awt.*; 17 18 public class Invention1 { 19 20 private void paintTheImage() { 21 SPainter painter = new SPainter("Deterministic Invention Stars", 600, 600); 22 int nrOfStars = 10; //paint 10 stars 23 //make square star object 24 int starSideLength = 10; 25 SSquare squareStar = new SSquare(starSideLength); 26 paintSky(painter, squareStar); //paint black sky 27 //make circle star object 28 int starRadius = 100; 29 SCircle circleSun = new SCircle(starRadius); 30 //paint the sun 31 paintSun(painter, circleSun); 32 paintStars(painter, nrOfStars, squareStar); 33 } 34 35 private void paintSky(SPainter painter, SSquare squareStar) { 36 squareStar.expand(790); 37 painter.setColor(Color.BLACK); 38 painter.paint(squareStar); 39 squareStar.shrink(790); //make invariant 40 } 41 42 private void paintSun(SPainter painter, SCircle circleSun) { 43 painter.setColor(Color.ORANGE); 44 painter.paint(circleSun); 45 } 46 47 private void paintStars(SPainter painter, int nrOfStars, SSquare squareStar) { 48 painter.setColor(Color.WHITE); 49 int i = 1; 50 while ( i <= nrOfStars ) { //counter 51 if (i == 1) { 52 paintFirstStar(painter, squareStar); 53 } else if (i == 2) { 54 paintSecondStar(painter, squareStar); 55 } else if (i == 3) { 56 paintThirdStar(painter, squareStar); 57 } else if (i == 4) { 58 paintFourthStar(painter, squareStar); 59 } else if (i == 5) { 60 paintFifthStar(painter, squareStar); 61 } else if (i == 6) { 62 paintSixthStar(painter, squareStar); 63 } else if (i == 7) { 64 paintSeventhStar(painter, squareStar); 65 } else if (i == 8) { 66 paintEighthStar(painter, squareStar); 67 } else if (i == 9) { 68 paintNinthStar(painter, squareStar); 69 } else { 70 paintTenthStar(painter, squareStar); 71 } 72 i++; 73 } 74 } 75 76 private void paintFirstStar(SPainter painter, SSquare squareStar) { 77 painter.mlt(270); 78 painter.mfd(270); 79 painter.paint(squareStar); 80 painter.tl(45); 81 painter.paint(squareStar); 82 painter.tr(45); 83 painter.mrt(270); 84 painter.mbk(270); 85 } 86 87 private void paintSecondStar(SPainter painter, SSquare squareStar) { 88 painter.mlt(240); 89 painter.mfd(240); 90 painter.paint(squareStar); 91 painter.tl(45); 92 painter.paint(squareStar); 93 painter.tr(45); 94 painter.mrt(240); 95 painter.mbk(240); 96 } 97 98 private void paintThirdStar(SPainter painter, SSquare squareStar) { 99 painter.mlt(200); 100 painter.mfd(200); 101 painter.paint(squareStar); 102 painter.tl(45); 103 painter.paint(squareStar); 104 painter.tr(45); 105 painter.mrt(200); 106 painter.mbk(200); 107 } 108 109 private void paintFourthStar(SPainter painter, SSquare squareStar) { 110 painter.mlt(160); 111 painter.mfd(160); 112 painter.paint(squareStar); 113 painter.tl(45); 114 painter.paint(squareStar); 115 painter.tr(45); 116 painter.mrt(160); 117 painter.mbk(160); 118 } 119 120 private void paintFifthStar(SPainter painter, SSquare squareStar) { 121 painter.mlt(120); 122 painter.mfd(120); 123 painter.paint(squareStar); 124 painter.tl(45); 125 painter.paint(squareStar); 126 painter.tr(45); 127 painter.mrt(120); 128 painter.mbk(120); 129 } 130 131 private void paintSixthStar(SPainter painter, SSquare squareStar) { 132 painter.mrt(270); 133 painter.mfd(270); 134 painter.paint(squareStar); 135 painter.tl(45); 136 painter.paint(squareStar); 137 painter.tr(45); 138 painter.mlt(270); 139 painter.mbk(270); 140 } 141 142 private void paintSeventhStar(SPainter painter, SSquare squareStar) { 143 painter.mrt(240); 144 painter.mfd(240); 145 painter.paint(squareStar); 146 painter.tl(45); 147 painter.paint(squareStar); 148 painter.tr(45); 149 painter.mlt(240); 150 painter.mbk(240); 151 } 152 153 private void paintEighthStar(SPainter painter, SSquare squareStar) { 154 painter.mrt(200); 155 painter.mfd(200); 156 painter.paint(squareStar); 157 painter.tl(45); 158 painter.paint(squareStar); 159 painter.tr(45); 160 painter.mlt(200); 161 painter.mbk(200); 162 } 163 164 private void paintNinthStar(SPainter painter, SSquare squareStar) { 165 painter.mrt(160); 166 painter.mfd(160); 167 painter.paint(squareStar); 168 painter.tl(45); 169 painter.paint(squareStar); 170 painter.tr(45); 171 painter.mlt(160); 172 painter.mbk(160); 173 } 174 175 private void paintTenthStar(SPainter painter, SSquare squareStar) { 176 painter.mrt(120); 177 painter.mfd(120); 178 painter.paint(squareStar); 179 painter.tl(45); 180 painter.paint(squareStar); 181 painter.tr(45); 182 painter.mlt(120); 183 painter.mbk(120); 184 } 185 186 // REQUIRED INFRASTRUCTURE 187 public Invention1() { 188 paintTheImage(); 189 } 190 191 public static void main(String[] args) { 192 SwingUtilities.invokeLater(new Runnable() { 193 public void run() { 194 new npw.Invention1(); 195 } 196 }); 197 } 198 }