BalloonPerson.java
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