簡體   English   中英

Java GUI 使用隨機數繪制樹

[英]Java GUI draw tree using random number

如何使用“隨機數”使這棵樹的角度和深度隨機?

在下面的代碼中使用了 JFrame。 問題背后的意圖是獲得隨機化角度和深度的想法,這是在paint方法中傳遞的。

public class DrawTreeFrame extends JFrame {
    
    public DrawTreeFrame() {
        setSize(800, 700);
        
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setVisible(true);
    }
    
    private void drawTree(Graphics g, int x1, int y1, double angle, int depth) {
        if(depth==0)
            return;
        int x2 = x1 + (int) (Math.cos(Math.toRadians(angle)) * depth * 10.0);
        int y2 = y1 + (int) (Math.sin(Math.toRadians(angle)) * depth * 10.0);
        g.drawLine(x1, y1, x2, y2);
        drawTree(g, x2, y2, angle-20, depth-1);
        drawTree(g, x2, y2, angle+20, depth-1);
    }
    
    @Override
    public void paint(Graphics g) {
        g.setColor(Color.BLACK);
        drawTree(g, 400, 600, -90, 10);
    }

    public static void main(String[] args) {
        new DrawTreeFrame();

    }

}

其實,我想做成這樣……你能幫幫我嗎?!

您可以使用Math.random() 以下代碼方法將為您提供范圍內的隨機數;

public int getRandomNumber(int min, int max) {
    return (int) ((Math.random() * (max - min)) + min);
}

最終你的代碼應該是這樣的:-

class DrawTreeFrame extends JFrame {
    
    public DrawTreeFrame() {
        setSize(800, 700);
        
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setVisible(true);
    }
    
    private void drawTree(Graphics g, int x1, int y1, double angle, int depth) {
        if(depth==0)
            return;
        int x2 = x1 + (int) (Math.cos(Math.toRadians(angle)) * depth * 10.0);
        int y2 = y1 + (int) (Math.sin(Math.toRadians(angle)) * depth * 10.0);
        g.drawLine(x1, y1, x2, y2);
        drawTree(g, x2, y2, angle-20, depth-1);
        drawTree(g, x2, y2, angle+20, depth-1);
    }
    
    @Override
    public void paint(Graphics g) {
        g.setColor(Color.BLACK);
        int x1 = getRandomNumber(100, 400);
        int y1 = getRandomNumber(400, 800);
        double angle = getRandomNumber(-10, -100);
        int depth = getRandomNumber(5, 20);
        drawTree(g, x1, y1, angle, depth);
    }

    public int getRandomNumber(int min, int max) {
        return (int) ((Math.random() * (max - min)) + min);
    }
    
    public static void main(String[] args) {
        new DrawTreeFrame();

    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM