1 package balloonpeople; 2 3 import painter.SPainter; 4 import shapes.SCircle; 5 import java.awt.Color; 6 import java.util.Random; 7 //Good enough... 8 //,-, ugh 9 public class BalloonPerson { 10 private String name; 11 private int age; 12 private double height; 13 14 public BalloonPerson(String name, int age, double height) { 15 this.name = name; 16 this.age = age; 17 this.height = height; 18 } 19 public String toString() { 20 String life = "(Balloon Person Name: " +name+ " | Age In Years: " +age+ " | Height In Inches: " +height+ ")\n"; 21 return life; 22 } 23 public Color color() { 24 Random randomGenerator = new Random(); 25 int r = randomGenerator.nextInt(256); 26 int g = randomGenerator.nextInt(256); 27 int b = randomGenerator.nextInt(256); 28 Color color = new Color(r,b,g); 29 return color; 30 } 31 public SPainter paint(SPainter leo) { 32 SPainter human = leo; 33 SCircle circle = new SCircle(80); 34 Color usingThis = color(); 35 double hth = this.height; 36 double well = ((hth*70)-160-80-30)/2.0; 37 if (hth >= 4.0) { 38 head(usingThis,human,circle); 39 space1(well,human); 40 body(usingThis,human,circle); 41 space1(well,human); 42 feet(human,circle); 43 return human; 44 } else { 45 double use = 4.0-hth; 46 double shrinkFactor = use*10; 47 head1(usingThis,human,circle,shrinkFactor); 48 space2(well,human,shrinkFactor); 49 body1(usingThis,human,circle,shrinkFactor); 50 space2(well,human,shrinkFactor); 51 feet1(human,circle,shrinkFactor); 52 return human; 53 } 54 //rule 80/40 = height in inches 55 } 56 57 private void space2(double well, SPainter human, double shrinkFactor) { 58 if (shrinkFactor < 1.0) { 59 double help = shrinkFactor/2; 60 human.mbk(well/help); 61 } else if (shrinkFactor < 2.0) { 62 double hel = shrinkFactor; 63 human.mbk(well/hel); 64 } else 65 human.mbk(well+shrinkFactor*2); 66 } 67 68 private void feet1(SPainter human, SCircle circle,double shrinkFactor) { 69 circle.setRadius((int) (15-shrinkFactor)); 70 human.mlt(15-shrinkFactor/2); 71 human.paint(circle); 72 human.mrt(30-(shrinkFactor/2)*2); 73 human.paint(circle); 74 human.moveToCenter(); 75 } 76 77 private void body1(Color usingThis, SPainter human, SCircle circle,double shrinkFactor) { 78 circle.setRadius((int) (40-shrinkFactor)); 79 human.paint(circle); 80 circle.setRadius((int) (20-shrinkFactor)); 81 human.mlt(65-shrinkFactor/3); 82 human.mbk(15); 83 human.setColor(usingThis); 84 human.paint(circle); 85 human.mrt(130-(shrinkFactor/3)*2); 86 human.paint(circle); 87 //invariance 88 human.mlt(65-shrinkFactor/3); 89 human.mfd(15); 90 circle.setRadius((int) (40-shrinkFactor)); 91 human.mbk(circle.radius()+circle.radius()/2); 92 } 93 94 private void head1(Color usingThis, SPainter human, SCircle circle,double shrinkFactor) { 95 human.setColor(usingThis); 96 human.mfd(circle.diameter()); 97 circle.setRadius((int) (80-shrinkFactor)); 98 circle.shrink(shrinkFactor); 99 human.paint(circle); 100 human.setColor(Color.black); 101 circle.setRadius(14); 102 circle.shrink(shrinkFactor); 103 circle.expand(4); 104 human.mlt(40); 105 human.paint(circle); 106 human.mrt(80); 107 human.paint(circle); 108 human.mlt(40); 109 human.mbk(45); 110 circle.setRadius (5); 111 circle.shrink(shrinkFactor); 112 human.paint(circle); 113 //invariance 114 human.mfd(45); 115 circle.setRadius(80); 116 circle.shrink(shrinkFactor); 117 human.mbk(circle.radius()+circle.radius()/2); 118 } 119 120 private void space1(double well, SPainter human) { 121 human.mbk(well); 122 } 123 124 private void feet(SPainter human, SCircle circle) { 125 circle.setRadius(15); 126 human.mlt(15); 127 human.paint(circle); 128 human.mrt(30); 129 human.paint(circle); 130 human.moveToCenter(); 131 } 132 133 private void body(Color usingThis, SPainter human, SCircle circle) { 134 circle.setRadius(40); 135 human.paint(circle); 136 circle.setRadius(20); 137 human.mlt(65); 138 human.mbk(15); 139 human.setColor(usingThis); 140 human.paint(circle); 141 human.mrt(130); 142 human.paint(circle); 143 //invariance 144 human.mlt(65); 145 human.mfd(15); 146 circle.setRadius(40); 147 human.mbk(circle.radius()+20); 148 } 149 150 private void head(Color usingThis, SPainter human, SCircle circle) { 151 human.setColor(usingThis); 152 human.mfd(circle.diameter()); 153 human.paint(circle); 154 human.setColor(Color.black); 155 circle.setRadius(14); 156 human.mlt(40); 157 human.paint(circle); 158 human.mrt(80); 159 human.paint(circle); 160 human.mlt(40); 161 human.mbk(45); 162 circle.setRadius(5); 163 human.paint(circle); 164 //invariance 165 human.mfd(45); 166 circle.setRadius(80); 167 human.mbk(circle.radius()+40); 168 } 169 170 171 } 172 173