我如何使用数组制作随机圆圈

用户名

我一直在做学校作业,老师希望我们在JPanel上显示7个圆圈并向下移动。圆到达底部后,应重新制作一个圆,以替换到达JPanel底部的圆。我决定使用数组继续制作随机圆,但是我无法使其正常工作。我使用了for循环,使用半径和颜色随机的圆填充数组。代码可以编译,但是当我运行它时,会出现异常。我很难使阵列正常工作。我不确定的另一件事是如何绘制圆,以使它们在JPanel上间隔开。

代码

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.util.Random;

public class keyExample extends JPanel implements ActionListener, KeyListener {

    private Circle[] circles = new Circle[7];

    Timer t = new Timer(5, this);
//current x and y
    double x = 150, y = 200;
    double changeX = 0, changeY = 0;
    private Circle;
    private int circlex = 0, circley = 0; // makes initial starting point of circles 0
    private javax.swing.Timer timer2;

    public keyExample() {

        t.start();
        addKeyListener(this);
        setFocusable(true);
        setFocusTraversalKeysEnabled(false);


        }

        timer2 = new javax.swing.Timer(33, new MoveListener());
        timer2.start();

    }

    public void NewCircle() {
        Random colors = new Random();
        Color color = new Color(colors.nextInt(256), colors.nextInt(256), colors.nextInt(256));

        Random num = new Random();
        int radius = num.nextInt(45);

        for (int i = 0; i < circles.length; i++) {
            circles[i] = new Circle(circlex, circley, radius, color);
    }

    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2 = (Graphics2D) g;
        g2.setColor(Color.BLUE);
        g2.fill(new Rectangle2D.Double(x, y, 40, 40));
        NewCircle();
        for (int i = 0; i < circles.length; i++)
        circles[i].fill(g);

    }

    public void actionPerformed(ActionEvent e) {
        repaint();
        x += changeX;
        y += changeY;
        changeX = 0;
        changeY = 0;

    }

    public void up() {
        if (y != 0) {
            changeY = -3.5;
            changeX = 0;
        }
    }

    public void down() {
        if (y <= 350) {
            changeY = 3.5;
            changeX = 0;

        }
    }

    public void left() {
        if (x >= 0) {
            changeX = -3.5;
            changeY = 0;
        }
    }

    public void right() {
        if (x <= 550) {
            changeX = 3.5;
            changeY = 0;
        }
    }

    private class MoveListener implements ActionListener {

        public void actionPerformed(ActionEvent e) {

            repaint();
            Random speed = new Random();
            int s = speed.nextInt(8);
            circle.move(0, s);
        }
    }

    public void keyPressed(KeyEvent e) {
        int code = e.getKeyCode();
        if (code == KeyEvent.VK_UP) {
            up();
        }
        if (code == KeyEvent.VK_DOWN) {
            down();
        }
        if (code == KeyEvent.VK_RIGHT) {
            right();
        }
        if (code == KeyEvent.VK_LEFT) {
            left();
        }
    }

    public void keyTyped(KeyEvent e) {
    }

    public void keyReleased(KeyEvent e) {
    }
}
充满鳗鱼的气垫船

您的问题是您尝试使用circle变量绘画,该变量从未分配有效参考。

一种解决方案是通过为其提供有效的引用circle = new Circle(...),但话虽如此,我会告诉您忽略它,因为您甚至不应该使用可变圆。摆脱它。您要做的就是使用circles数组-这就是您应该在paintComponent方法中绘制的内容。在paintComponent的内部使用for循环,并遍历整个数组,以绘制该数组包含的每个圆形项。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我如何使用数组制作随机圆圈

来自分类Dev

如何制作QLabel圆圈?

来自分类Dev

我如何制作随机坐标数?

来自分类Dev

如何使用CSS在另一个圆圈内制作一个圆圈

来自分类Dev

如何随机更改圆圈的颜色?

来自分类Dev

如何使用随机数和一些条件制作数组?

来自分类Dev

如何制作没有重复的随机数组?

来自分类Dev

如何在python数组中制作连续随机NaN

来自分类Dev

如何随机整理二维数组制作的甲板

来自分类Dev

如何在 Python 中创建一个随机的圆圈数组,而不重叠?

来自分类Dev

如何制作一个闪烁的圆圈?

来自分类Dev

如何制作嵌套比例面积图(圆圈)?

来自分类Dev

如何使用ggplot2 coord_polar()制作带圆圈的气泡图?

来自分类Dev

如何使用C制作随机字符串?

来自分类Dev

如何使用jQuery制作选项数组?

来自分类Dev

如何使用javascript制作图像数组

来自分类Dev

如何使用jQuery制作选项数组?

来自分类Dev

如何使用PHP制作正确的数组格式

来自分类Dev

每次如何使用相同的随机数组?

来自分类Dev

我如何使用步长值制作UISlider

来自分类Dev

我如何使用viewPager制作片段

来自分类Dev

我想在turtle python中使用数组填充不同颜色的圆圈

来自分类Dev

如何制作随机文本python

来自分类Dev

如何制作随机文本python

来自分类Dev

使用jfugue,我该如何生成随机琴弦(使用player.play)从一个数组?

来自分类Dev

我如何用随机值填充二维数组

来自分类Dev

我如何用数字1随机填充半个数组

来自分类Dev

我们如何选择数组中的随机元素?

来自分类Dev

我将如何打印随机数组元素?