Witam, dziś napotkał mnie problem z rysowaniem wielokąta.
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Random r = new Random();
for(int i=0; i<10; i++){
double a=r.nextInt(MAXIMIZED_HORIZ);
double b=r.nextInt(MAXIMIZED_VERT);
int[] x = new int[6];
int[] y = new int[6];
for(int j=0; j<6; j++){
x[i] = (int)(a + 50*Math.sin(j*2*Math.PI/6));
y[i] = (int)(b + 50*Math.cos(j*2*Math.PI/6));
}
g.setColor(new Color(r.nextInt(256), r.nextInt(256), r.nextInt(256)));
g.fillPolygon(x, y, 6);
}
}
W konsoli masa czerwonego, główny błąd (przez który się wszystko inne sypie) to:
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 6
at Zad2$MojPanel.paintComponent(Zad2.java:33)
wkazujący na linijkę x[i] = (int)(a + 50*Math.sin(j*2*Math.PI/6));
Znalazłem opis metody fillPolygon(int[], int[], int) i wygląda on tak:
fillPolygon(int[] xPoints, int[] yPoints, int nPoints) - rysuje łamaną linię o nPoints wierzchołkach, których współrzędne są dane w tablicach, łączy pierwszy punkt z ostatnim i wypełnia wnętrze.