1 import java.awt.*;
2 import java.awt.geom.*;
3
4 /**
5
6 */
7 public class CarShape
8 {
9 /**
10
11 @param x
12 @param y
13 @param width
14 */
15 public CarShape(int x, int y, int width)
16 {
17 this.x = x;
18 this.y = y;
19 this.width = width;
20 }
21
22 public void draw(Graphics2D g2)
23 {
24 Rectangle2D.Double body
25 = new Rectangle2D.Double(x, y + width / 6,
26 width - 1, width / 6);
27 Ellipse2D.Double frontTire
28 = new Ellipse2D.Double(x + width / 6, y + width / 3,
29 width / 6, width / 6);
30 Ellipse2D.Double rearTire
31 = new Ellipse2D.Double(x + width * 2 / 3,
32 y + width / 3,
33 width / 6, width / 6);
34
35 //
36 Point2D.Double r1
37 = new Point2D.Double(x + width / 6, y + width / 6);
38 //
39 Point2D.Double r2
40 = new Point2D.Double(x + width / 3, y);
41 //
42 Point2D.Double r3
43 = new Point2D.Double(x + width * 2 / 3, y);
44 //
45 Point2D.Double r4
46 = new Point2D.Double(x + width * 5 / 6, y + width / 6);
47 Line2D.Double frontWindshield
48 = new Line2D.Double(r1, r2);
49 Line2D.Double roofTop
50 = new Line2D.Double(r2, r3);
51 Line2D.Double rearWindshield
52 = new Line2D.Double(r3, r4);
53
54 g2.draw(body);
55 g2.draw(frontTire);
56 g2.draw(rearTire);
57 g2.draw(frontWindshield);
58 g2.draw(roofTop);
59 g2.draw(rearWindshield);
60 }
61
62 public boolean contains(Point2D p)
63 {
64 return x <= p.getX() && p.getX() <= x + width
65 && y <= p.getY() && p.getY() <= y + width / 2;
66 }
67
68 public void translate(int dx, int dy)
69 {
70 x += dx;
71 y += dy;
72 }
73
74 private int x;
75 private int y;
76 private int width;
77 }