Java初学者:在递归中生成随机颜色

时间:2018-01-21 12:30:34

标签: java

您好,我刚开始参加Java课程,所以这可能是一个非常愚蠢的问题,但希望有人愿意提供帮助!我在理解如何在这个递归方块代码中实现随机颜色生成代码时遇到了问题。 (我们正在使用Princeton课程Std库)我一直在尝试添加某些内容,例如:

public Color randomColor()
{
  Random random=new Random(); 
  int red=random.nextInt(256);
  int green=random.nextInt(256);
  int blue=random.nextInt(256);
  return new Color(red, green, blue);
}

但我不知道如何在下面的代码中调用它来将其从Stdlib的浅灰色更改为随机颜色。

public class Exercise5 {


public static void drawSquare(double x, double y, double size) {
    StdDraw.setPenColor(StdDraw.LIGHT_GRAY);
    StdDraw.filledSquare(x, y, size/2);
    StdDraw.setPenColor(StdDraw.BLACK);
    StdDraw.square(x, y, size/2);
}


public static void draw(int n, double x, double y, double size) {
    if (n == 0) return;

    drawSquare(x, y, size);


    double ratio = 2.2;


    draw(n-1, x - size/2, y - size/2, size/ratio);    // lower left  
    draw(n-1, x - size/2, y + size/2, size/ratio);    // upper left  
    draw(n-1, x + size/2, y - size/2, size/ratio);    // lower right 
    draw(n-1, x + size/2, y + size/2, size/ratio);    // upper right
}



public static void main(String[] args) {
    //int n = Integer.parseInt(args[0]);
        int n = 6;
        double x = 0.5, y = 0.5;   // center of square
    double size = 0.5;         // side length of square
    draw(n, x, y, size);
}

}

如果有人能指出我正确的方向,我会非常感激!谢谢:))

1 个答案:

答案 0 :(得分:1)

由于您的其他方法为static,因此您还需要制作randomColor()方法static

然后您可以使用StdDraw.setPenColor(randomColor());设置随机笔颜色,或者如果您想要更明确:

Color rand = randomColor();
StdDraw.setPenColor(rand);