Report abuse Write a program that shows two cars drawn with wheels and a body. U
ID: 3547836 • Letter: R
Question
Report abuse Write a program that shows two cars drawn with wheels and a body. Use the Graphics class to draw these by hand, with arcs, circles, lines. You have considerable choice as to the look of your cars, but you must draw them by hand. At the bottom of your frame there should be the following gui's for each car: (one set of each for each car--the cars are independent) A gui that starts a car and begins it movement to the right. IF the car goes off the screen it should start over on the other side. A slider that changes the speed of the car. A gui that that reverses the movement of the car from left to right or vice versa. A gui that stops a car. A gui that honks the horn for a short period of time A gui that turns on and off the radio. A gui that colors the car at least two different colors.Explanation / Answer
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Line2D;
import java.awt.geom.Point2D;
import javax.swing.JComponent;
/**
A car shape that can be positioned anywhere on the screen.
*/
public class Car extends JComponent //extended so i can use Repaint
{
/**
Constructs a car with a given top left corner
@param x the x coordinate of the top left corner
@param y the y coordinate of the top left corner
*/
public Car(int x, int y)
{
xLeft = x;
yTop = y;
}
/**
Draws the car.
@param g2 the graphics context
*/
public void draw(Graphics2D g2)
{
Rectangle body
= new Rectangle(xLeft, yTop + 10, 60, 10);
Ellipse2D.Double frontTire
= new Ellipse2D.Double(xLeft + 10, yTop + 20, 10, 10);
Ellipse2D.Double rearTire
= new Ellipse2D.Double(xLeft + 40, yTop + 20, 10, 10);
// The bottom of the front windshield
Point2D.Double r1
= new Point2D.Double(xLeft + 10, yTop + 10);
// The front of the roof
Point2D.Double r2
= new Point2D.Double(xLeft + 20, yTop);
// The rear of the roof
Point2D.Double r3
= new Point2D.Double(xLeft + 40, yTop);
// The bottom of the rear windshield
Point2D.Double r4
= new Point2D.Double(xLeft + 50, yTop + 10);
Line2D.Double frontWindshield
= new Line2D.Double(r1, r2);
Line2D.Double roofTop
= new Line2D.Double(r2, r3);
Line2D.Double rearWindshield
= new Line2D.Double(r3, r4);
g2.draw(body);
g2.draw(frontTire);
g2.draw(rearTire);
g2.draw(frontWindshield);
g2.draw(roofTop);
g2.draw(rearWindshield);
}
public void translate(int dx, int dy)
{
xLeft += dx;
yTop += dy;
}
public void moveBy(Car car, int dx, int dy)
{
car.translate(dx, dy); // I can use car but them I have to declare it a constant.
repaint();
}
private int xLeft;
private int yTop;
}