# How do you draw a random irregular polygon in java? (Asteroids)

I am coding an Asteroids game in Java. In the real arcade game, asteroids are made of irregular shapes like this:

When I code, I can only set asteroids to 1 or another specific shape, like this:

I want to make all of the asteroids in my game of totally randomly generated shapes, and I am already tired of designing specific shapes of my own. Here is a snippet of my code that generates the asteroid's shape. P.S: The image does not show it, but I am using the Polygon class and constructor which only enables me to input 2 int[]s and a number of sides.

   public void makeShape() {
int x = (int) this.x;
int y = (int) this.y;
this.shape = new Polygon(new int[]{x - 15, x - 30, x - 10, x - 13, x,x + 10, x + 10}, new int[]{y - 30, y - 15, y + 5, y + 30, y + 35, y + 30, y}, 7);
}


I have tried putting all of the variables on Math.random(), but it outputs nothing but a scribble, even if I were using the Polygon class.

You could let a point travel on a circle in discreet steps and adjust the radius for each step, that would make it look jagged and irregular.

Something like this might work for you:

/**
*
* @param px The center X of the shape
* @param py The center Y of the shape
* @param numberOfNodes How many dents the shape can have.
* @return Some shape
*/
private Polygon makeShape(int px, int py, int numberOfNodes, double minRadius, double maxRadius) {
// Split a full circle into numberOfNodes step, this is how much to advance each part
double angleStep = Math.PI * 2 / numberOfNodes;
Polygon shape = new Polygon();
for(int i = 0; i < numberOfNodes; ++i) {
double targetAngle = angleStep * i; // This is the angle we want if all parts are equally spaced
double angle = targetAngle + (rnd.nextDouble() - 0.5) * angleStep * 0.25; // add a random factor to the angle, which is +- 25% of the angle step

px and py correspond to your this.x and this.y