public class MultipleFaces extends JApplet
1: //MultipleFaces.java
3: import javax.swing.JApplet;
4: import java.awt.Graphics;
5: import java.awt.Color;
7: public class MultipleFaces extends JApplet
8: {
9: public static final int FACE_DIAMETER = 50;
10: public static final int X_FACE0 = 10;
11: public static final int Y_FACE0 = 5;
13: public static final int EYE_WIDTH = 5;
14: public static final int EYE_HEIGHT = 10;
15: public static final int X_RIGHT_EYE0 = 20;
16: public static final int Y_RIGHT_EYE0 = 15;
17: public static final int X_LEFT_EYE0 = 45;
18: public static final int Y_LEFT_EYE0 = Y_RIGHT_EYE0;
20: public static final int NOSE_DIAMETER = 5;
21: public static final int X_NOSE0 = 32;
22: public static final int Y_NOSE0 = 25;
24: public static final int MOUTH_WIDTH = 30;
25: public static final int MOUTH_HEIGHT0 = 0;
26: public static final int X_MOUTH0 = 20;
27: public static final int Y_MOUTH0 = 35;
28: public static final int MOUTH_START_ANGLE = 180;
29: public static final int MOUTH_EXTENT_ANGLE = 180;
31: /**
32: * g is the drawing area. pos is a parameter for the position of the face.
33: * As pos increases, the face is drawn lower and further to the right.
34: */
35: private void drawFaceSansMouth
36: (
37: Graphics g,
38: int pos
39: )
40: {
41: g.setColor(Color.BLACK);
42: g.drawOval(X_FACE0 + 50 * pos, Y_FACE0 + 30 * pos,
43: FACE_DIAMETER, FACE_DIAMETER);
44: //Draw eyes:
45: g.setColor(Color.BLUE);
46: g.fillOval(X_RIGHT_EYE0 + 50 * pos, Y_RIGHT_EYE0 + 30 * pos,
47: EYE_WIDTH, EYE_HEIGHT);
48: g.fillOval(X_LEFT_EYE0 + 50 * pos, Y_LEFT_EYE0 + 30 * pos,
49: EYE_WIDTH, EYE_HEIGHT);
50: //Draw nose:
51: g.setColor(Color.BLACK);
52: g.fillOval(X_NOSE0 + 50 * pos, Y_NOSE0 + 30 * pos,
53: NOSE_DIAMETER, NOSE_DIAMETER);
54: }
56: public void paint
57: (
58: Graphics canvas
59: )
60: {
61: int i;
62: for (i = 0; i < 5; i++)
63: {//Draw one face:
64: if (i % 2 == 0)//If i is even,
65: { //make face yellow
66: canvas.setColor(Color.YELLOW);
67: canvas.fillOval(X_FACE0 + 50 * i, Y_FACE0 + 30 * i,
68: FACE_DIAMETER, FACE_DIAMETER);
69: }
70: drawFaceSansMouth(canvas, i);
71: //Draw mouth:
72: canvas.setColor(Color.RED);
73: canvas.drawArc(X_MOUTH0 + 50 * i, Y_MOUTH0 + 30 * i,
74: MOUTH_WIDTH, MOUTH_HEIGHT0 + 3 * i,
75: MOUTH_START_ANGLE, MOUTH_EXTENT_ANGLE);
76: }
77: //i == 5
79: //Draw kissing face:
80: drawFaceSansMouth(canvas, i);
81: //Draw mouth in shape of a kiss:
82: canvas.setColor(Color.RED);
83: canvas.fillOval(X_MOUTH0 + 50 * i + 10, Y_MOUTH0 + 30 * i,
84: MOUTH_WIDTH - 20, MOUTH_WIDTH - 20);
85: //Add text:
86: canvas.setColor(Color.BLACK);
87: canvas.drawString("Kiss, Kiss.",
88: X_FACE0 + 50 * i + FACE_DIAMETER, Y_FACE0 + 30 * i);
90: //Draw blushing face:
91: i++;
92: //Draw face circle:
93: canvas.setColor(Color.PINK);
94: canvas.fillOval(X_FACE0 + 50 * i, Y_FACE0 + 30 * i,
95: FACE_DIAMETER, FACE_DIAMETER);
96: drawFaceSansMouth(canvas, i);
97: //Draw mouth:
98: canvas.setColor(Color.RED);
99: canvas.drawArc(X_MOUTH0 + 50 * i, Y_MOUTH0 + 30 * i, MOUTH_WIDTH,
100: MOUTH_HEIGHT0 + 3 * (i - 2),
101: MOUTH_START_ANGLE, MOUTH_EXTENT_ANGLE);
102: //Add text:
103: canvas.setColor(Color.BLACK);
104: canvas.drawString("Tee Hee.",
105: X_FACE0 + 50 * i + FACE_DIAMETER, Y_FACE0 + 30 * i);
106: }
107: }