I have this program that needs to display multiple taxis. I have the code but there is an error. Could someone tell me where i am going wrong??
import java.awt.*;
import javax.swing.*;
public class TaxiCanvas extends JComponent
{
private Taxi[] taxis;
public TaxiCanvas(int numTaxis)
{
super();
makeTaxis(numTaxis);
}
private void makeTaxis(int numTaxis)
{
taxis = new Taxi[numTaxis];
for (int i=0; i<taxis.length; i++)
{
taxis[i] = new Taxi(i+1);
}
}
@Override
public void paint(Graphics g)
{
for (int i=0; i<taxis.length;i++)
{
int w = taxis[i].getBodyWidth();
int h = taxis[i].getBodyHeight();
int x = randomInt(w,getWidth() - w );
int y = randomInt(h, getHeight() - h);
taxis[i].display(g, x, y);
}
g.drawString(taxis.length + " taxis", getWidth()/2-30,20);
}
private int randomInt(int min, int max)
{
return (int)(Math.random()*(max - min +1)+min);
}
}
import java.awt.*;
import javax.swing.*;
public class TaxiFrame extends JFrame
{
public TaxiFrame()
{
super(" Taxi Project");
setSize(300,200);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocation(100,100);
getContentPane().setBackground(Color.CYAN);
getContentPane().add("Center", new TaxiCanvas(5));
setVisible(true);
}
public static void main(String[] args)
{
new TaxiFrame();
}
}
import java.awt.*;
public class Taxi
{
private TaxiCanvas canvas;
public int number;
private int BodyWidth;
private int BodyHeight;
public Taxi(TaxiCanvas canvas)
{
this.canvas = canvas;
}
public Taxi(int num)
{
number = num;
BodyWidth = 44;
BodyHeight = 20;
}
public int getBodyWidth()
{
return BodyWidth;
}
public int getBodyHeight()
{
return BodyHeight;
}
private int randomInt(int min, int max)
{
return (int)(Math.random()*(max - min +1)+min);
}
public void display(Graphics g , int x, int y)
{
int xSq = canvas.getWidth() / 120;
int ySq = canvas.getHeight() / 100;
// int xSq = 2;
// int ySq = 2;
// car body
g.setColor(Color.YELLOW);
int[] xbody ={x, x, x + (xSq*12),x +(xSq*18),x + (xSq*29),x +(xSq*37),x + (xSq*42),x + (xSq*44),x + (xSq*44)};
int[] ybody ={y-(ySq*6),y-(ySq*11),y-(ySq*14),y-(ySq*20),y-(ySq*20),y-(ySq*14),y-(ySq*14),y-(ySq*11),y-(ySq*6)};
g.fillPolygon(xbody, ybody, 9);
g.setColor(Color.BLACK);
g.drawLine(x,y-(ySq*6),x + (xSq*44),y-(ySq*6));
//left wheel
g.setColor(Color.BLACK);
g.fillOval(x +(xSq*3),y-(ySq*10),xSq*8,ySq*8);
//right wheel
g.setColor(Color.BLACK);
g.fillOval(x+(xSq*32), y-(ySq*10),xSq*8,ySq*8);
//left door
g.setColor(Color.LIGHT_GRAY);
g.drawRect(x+(xSq*13),y-(ySq*14),xSq*9,ySq*7);
g.setColor(Color.BLACK);
g.drawString(""+number,x+(xSq*16),y-(ySq*8));
g.setColor(Color.LIGHT_GRAY);
int[]xleftWin={x+(xSq*13),x+(xSq*18),x+(xSq*22),x+(xSq*22)};
int[]yleftWin={y-(ySq*14),y-(ySq*19),y-(ySq*19),y-(ySq*14)};
g.fillPolygon(xleftWin, yleftWin, 4);
//right door
int[]xleftDoor={x+(xSq*24),x+(xSq*24),x+(xSq*35),x+(xSq*35),x+(xSq*30)};
int[]yleftDoor={y-(ySq*7),y-(ySq*14),y-(ySq*14),y-(ySq*11),y-(ySq*7)};
g.drawPolygon(xleftDoor, yleftDoor, 5);
int[]xrightWin={x+(xSq*24),x+(xSq*24),x+(xSq*28),x+(xSq*35)};
int[]yrightWin={y-(ySq*14),y-(ySq*19),y-(ySq*19),y-(ySq*14)};
g.fillPolygon(xrightWin, yrightWin, 4);
}
}